我有以下代码
import multiprocessing as mp
import os
def funct(name):
if nameisvalid:
do_some_stuff_and_save_a_file
return 1
else:
return 0
num_proc = 20 #or a call to slurm/mp for number of processors
pool = mp.Pool(processes=num_proc)
results = pool.map_async(makeminofname, [n for n in nameindex])
pool.close()
pool.join()
我已经在带有 6 核处理器的桌面上运行了num_proc=mp.cpu_count()
它,它运行良好且快速,但是当我尝试在我们的处理集群上的 sbatch 脚本中运行这个脚本时,使用-N 1 -n 20(我们的节点每个都有24 个处理器)或任意数量的处理器,它运行速度非常慢,而且似乎只使用 10-15 个处理器。有什么方法可以优化多处理以使用 slurm?