我用的是LSF(Load Sharing Facility)调度软件,我所在的集群限制cpu的使用。
当我以如下方式提交我的作业
BSUB -J orthofinder
BSUB -n 15
BSUB -R span[hosts=1]
BSUB -o %J.out
BSUB -e %J.err
BSUB -q smp
orthofinder -f /public/home/mryuan/O_sinensis/pepseq -t $LSB_DJOB_NUMPROC
LSF kills the job:
OpenBLAS Warining : The number of CPU/Cores(192) is beyond the limit(64). Terminated.
解决方法
将export OPENBLAS_NUM_THREADS=1写在环境变量。
或者在运行的应用程序中加入openblas_set_num_threads(1)
会这么报错的原因
大概与OpenBLAS有关,查看了OpenBLAS的使用说明,在“How can I use OpenBLAS in multi-threaded applications?”赫然发现,如果应用程序已经是多线程的,它将与OpenBLAS多线程冲突,必须将OpenBLAS设置为使用单线程。
注:PBS中同样的报错可以用相同的办法解决
参考:
OpenBLAS usage:https://fossies.org/linux/OpenBLAS/USAGE.md
https://github.com/davidemms/OrthoFinder/issues/323
https://github.com/davidemms/OrthoFinder/issues/356
网友评论