我在顺序和特别是并行代码的不同运行之间有太多的区别。例如,顺序版本需要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)我尝试了所有亲和力的组合,既没有稳定性也没有表现得更好。