【发布时间】:2015-01-31 16:32:52
【问题描述】:
原始程序有大约 100 个“公司”对象,它们在将自己的属性与相邻公司的属性进行比较后计算一个整数“价格”。
公司之间的关系可以是“循环的”。在某些时候,公司[99] 将需要来自公司[98] 和公司[0] 的信息来产生价格。公司[0] 将在查看公司[99] 和公司[1] 后自行更新。
该程序目前大约需要一分半钟才能完成。我们正在尝试使该程序与超级计算机一起工作,以便它可以在类似的时间内处理数百万家公司。因此我们需要并行化这个程序以在多个处理器上工作。
问题:
当每个公司需要等待前一个公司计算信息才能计算自己的信息时,是否真的可以并行化这个程序?
我的直觉和经验表明这是不可能的,但多线程编程对我来说是一个新领域,我以前对巧妙的设计感到惊讶。
【问题讨论】:
-
我们需要查看算法才能评论它是否可以并行化。
-
price是否依赖于相邻公司(和实际公司)的price? -
在计算公司价值时,是否有计算机密集型部分可以独立于其他公司来实现?
-
你的意思是
firm[99]在时间t的值取决于firm[98]在时间t-1的值还是取决于firm[98]在时间@的值987654328@ ?这是一个基本问题,你没有提到它令人担忧。你知道区别吗?
标签: c++ multithreading mpi