Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parallel processing 并行代码测量的变化_Parallel Processing_Openmp_Intel_Stability - Fatal编程技术网

Parallel processing 并行代码测量的变化

Parallel processing 并行代码测量的变化,parallel-processing,openmp,intel,stability,Parallel Processing,Openmp,Intel,Stability,我在顺序代码和并行代码的不同运行之间有太多的差异。例如,顺序版本需要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.6

我在顺序代码和并行代码的不同运行之间有太多的差异。例如,顺序版本需要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)我尝试了所有亲和力的组合,稳定性和性能都没有得到持续改善

CPU之间的线程迁移会影响性能。此外,双插座系统是NUMA。使用
KMP\u AFFINITY
GOMP\u CPU\u AFFINITY
绑定线程,执行时间将更加一致。如果您的编译器理解OpenMP 4.0,则相应地设置
OMP_位置
。请参阅编辑。要获得更高的执行时间,使用更少的线程(2),情况会变得更糟!1056.12,然后是703.04。您是否尝试过使用“英特尔VTune”或类似工具分析代码?这是一种随机算法吗?蒙特卡洛?如果顺序版本的执行时间不同,并且如果这是算法的固有属性,那么并行版本的执行时间预期会有更高的差异。CPU之间的线程迁移会影响性能。此外,双插座系统是NUMA。使用
KMP\u AFFINITY
GOMP\u CPU\u AFFINITY
绑定线程,执行时间将更加一致。如果您的编译器理解OpenMP 4.0,则相应地设置
OMP_位置
。请参阅编辑。要获得更高的执行时间,使用更少的线程(2),情况会变得更糟!1056.12,然后是703.04。您是否尝试过使用“英特尔VTune”或类似工具分析代码?这是一种随机算法吗?蒙特卡洛?如果顺序版本的执行时间不同,并且如果这是算法的固有特性,那么并行版本的执行时间预期会有更高的差异。