OpenMP英特尔MPI混合分段故障

时间:2018-06-18 17:07:04

标签: openmp hpc

我目前正在测试HPC Challenge基准测试,并修改了其中几项以接受用户输入(即带矩阵大小的DGEMM)。我的代码使用以下命令运行

OMP_NUM_THREADS=1 mpirun -np 1 ./hpcc
OMP_NUM_THREADS=4 mpirun -np 1 ./hpcc

我为这两个设置获得了不错的输出。

我正在尝试提取3个不同级别的并行化(串行,完全并行和令人尴尬的并行),并且只剩下配置Embarrassingly Parallel,它应该使用此命令运行:

OMP_NUM_THREADS=1 mpirun -np 4 ./hpcc 

但是当我运行这个时,我收到此错误消息(seg fault):

  BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
   PID 30297 RUNNING AT ********
   EXIT CODE: 139
  CLEANING UP REMAINING PROCESSES
   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES

我知道我的程序中可能存在竞争条件,我可以使用valgrind进行检查,但是在尝试运行令人尴尬的并行设置时,为什么我会遇到段错误还有其他可能性吗?或者它完全基于内存泄漏和竞争条件?

编辑1: 插入Valgrind并获得此结果:

==1196== Process terminating with default action of signal 6 (SIGABRT)
==1196==    at 0x5E8D428: raise (raise.c:54)
==1196==    by 0x5E8F029: abort (abort.c:89)
==1196==    by 0x622513A: ??? (in /usr/lib/libcr.so.0.5.5)
==1196==    by 0x44796B9: call_init.part.0 (dl-init.c:72)
==1196==    by 0x44797CA: call_init (dl-init.c:30)
==1196==    by 0x44797CA: _dl_init (dl-init.c:120)
==1196==    by 0x4469C69: ??? (in /lib/x86_64-linux-gnu/ld-2.23.so)

不确定这些是否有用,但我跑了:

mpirun -np 4 valgrind ./hpcc

0 个答案:

没有答案