Slurm集群中ARMADILLO程序随机触发Bus Error问题求助
关于HPC集群中ARMADILLO程序Bus Error的问题
问题背景
- 在HPC集群上运行基于ARMADILLO C++开发的可执行文件,通过任务数组或Bash循环一次性提交数百个仅输入参数不同的任务
- 部分任务突然崩溃,抛出Bus Error(核心已转储),报错信息如下:
/var/spool/slurmd/job58791836/slurm_script: line 193: 3086318 Bus error
(core dumped) ./${exec_name}.o
"${@:14}" -L $L -J $J -J0 $J0 -g $g -g0 $g0 -h $h -w $wx -th $thread_num
-m 1 -r $r -k $k_sym -p $p_sym -x $x_sym
-op $operator -fun $fun -s $site -b 0 -ch $ch -seed $seed -jobid $jobid -q_ipr 2.0 1>&${filename}.log
- 任务最大内存需求约4GB,但已分配至少12GB,仍出现报错
- 编译命令:
icpx main.cpp XYZ_UI.cpp XYZ_sym.cpp XYZ.cpp -o ${exec_name}.o\ -pthread -lhdf5 -Wall -Wformat=0 -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core\ -liomp5 -lpthread -lm -ldl -lmkl_sequential -lstdc++fs -fopenmp -std=c++2a -O3 ${compile_suffix} "${@:1}"
- 集群多数节点为AMD架构,怀疑Intel编译器使用了仅适配Intel CPU的优化指令
- 用valgrind检测内存泄漏,仅发现
still reachable类型,该情况不会影响程序运行 - 程序触发SIGBUS后立即崩溃,无任何代码输出(原本设计会打印输入参数)
疑问
- 用Intel编译器为AMD CPU编译C++代码是否存在问题?
- 除CPU不匹配或内存分配问题外,Bus Error还有哪些触发可能?
- 使用同一可执行文件访问编译后的共享库会导致Bus Error吗?
内容的提问来源于stack exchange,提问作者Qant123
相关产品推荐
相关产品推荐

