PBS调度器运行Python脚本ncpus超限问题排查与解决
PBS调度器下Python脚本超CPU限制问题解决
问题场景
在PBS调度器上运行基于Miniconda的Python脚本时,任务被强制终止并返回以下错误:
PBS: job killed: ncpus 37.94 exceeded limit 36 (sum)
推测问题根源是numpy的多线程/多进程机制超出了PBS分配的CPU核数限制。
尝试过的无效解决方案
先后尝试以下方法均未解决问题:
- 在PBS脚本中设置
MKL_NUM_THREADS等线程控制环境变量 - 在
main.py代码中显式配置线程数 - 使用
threadpoolctl上下文管理器限制线程数量
最终有效解决方案
将代码中的multiprocessing.Pool替换为joblib.Parallel,成功解决CPU核数超限问题。
内容的提问来源于stack exchange,提问作者Yair Daon
相关产品推荐
相关产品推荐

