次のコードがあります
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()
ところ、問題なく高速に動作しましたが、処理クラスタのスバッチ スクリプトでこのスクリプトを実行しようとすると、-N 1 -n 20 (ノードごとに24 個のプロセッサ)、または任意の数のプロセッサを使用すると、実行速度が非常に遅くなり、10 ~ 15 個のプロセッサしか使用していないように見えます。slurm を操作するためにマルチプロセッシングを最適化する方法はありますか?