1

我在不同的顺序运行,尤其是并行代码之间有太多的区别。例如,顺序版本需要 418 秒。并行版本采用:

2 个线程 - 250.630453;339.735046;256.153005;256.153005;311.177856

4 个线程 - 119.442949;116.032005;165.095566;149.539717;180.880198

8 个线程 - 73.856070;68.082326;76.318023;68.922623;55.321316

16 个线程 - 56.687378;45.672769;48.757555;42.978104;36.978891

32 个线程 - 24.421824;21.459057;23.815743;24.936219;24.581316

64 个线程 - 14.789693;15.312125;16.770807;13.371806;14.282328

该机器有 2 个插槽、32 个物理内核(Intel Xeon E5-2698v3)和超线程。机器上没有运行其他用户进程。

这有多正常?一些运行的变化超过 55%。并行代码确实会干扰算法的收敛速度(它是迭代的),但不会影响到这个程度。特别是,我在另一台计算机上运行了同样的代码,它更加稳定。我还没有尝试运行其他并行代码来查看它们的稳定性。

编辑:忘了说(1)顺序版本本身有很多变化(至少20%)和(2)我尝试了所有亲和力的组合,但稳定性和性能都没有始终如一地呈现更好。

4

0 回答 0