我们得到了一个12核MacPro来做一些蒙特卡洛计算。其英特尔至强处理器启用了超线程(HT),所以实际上应该有24个进程并行运行,以使其充分利用。但是,我们的calc在12x100%上运行效率高于24x50%,因此我们试图通过系统偏好设置中的Processor
窗格关闭超线程,以获得更高的性能。你也可以把HT关闭的关闭6核Intel Xeon中的超线程
hwprefs -v cpu_ht=false
然后我们进行了一些测试,这里就是我们的了:
- 12并行任务运行的同时瓦特/或W/O HT我们失望。
- 24个并行任务松散20%,如果HT关闭(不-50%,因为我们认为)
- 当HT是,从24到12的任务切换由20%(也令人惊讶)降低效率
- 当HT已关闭,从24切换到12不会改变任何内容。
看来超线程只会降低我们的计算性能,并且无法避免它。我们用于计算的程序是用Fortran编写的,并编译为gfortran
。有没有办法让这个硬件更高效?
更新:我们的蒙特卡罗计算(MCC)通常步骤以避免数据丢失以及因其他原因(它并不总是能够避免步)来完成。在我们的例子中,每个步骤都包含许多可变持续时间的模拟。由于每个步骤都在多个并行任务之间进行分离,因此它们的持续时间也不相同。从本质上讲,所有更快的任务必须等到最慢完成。这个事实迫使我们做出更大的步骤,由于平均,时间偏差较小,所以处理器不会浪费时间等待。这是我们使用12 * 2.66 GHz而不是24 * 1.33 GHz的动机。如果可以关闭HT,那么通过从24个任务(HT)切换到12个任务(不包括HT),我们将获得大约+ 10%的性能。但是,测试表明我们放松了20%。所以我的结论是计算效率低30%。
对于测试我使用了相当大的步骤,但通常步骤较短,所以效率会变得更高。
还有一个原因 - 我们的一些计算需要3-5 GB的内存,所以您可能会看到我们有12个快速任务的经济性。我们正在努力实现共享内存,但这将是一个长期项目。因此,我们需要了解如何尽可能快地制作现有的硬件/软件。
http://forums.macrumors.com/archive/index.php/t-733238.html – rwong 2010-10-04 11:53:45
通常这可以在BIOS设置中关闭,但我不熟悉Mac,因此可能不适用。 – 2010-10-04 11:54:12
在你的问题中有一些奇怪的东西......你似乎从HyperThreading获得*,但你会禁用它?你说你的计算效率比12/24更高,但是你的测试似乎不这么说。那么,为什么你想禁用HT? – jv42 2010-10-04 12:01:29