Я использую следующий код (пример) для параллельной обработки в кластере.
Он отлично работает в кластере, используя все доступные ядра в узле, просто набрав:
python test.py
from multiprocessing import Pool
import glob
from astropy.io import fits
def read(files):
data=fits.open(files)
if __name__ == '__main__':
files= glob.glob("*.fits*")
nfiles = len(files)
pool = Pool()
pool.map(read, files)
Однако, когда я отправляю пакетное задание, используя
srun -N 1 python test.py
Кажется, используется только 1 ядро, а не все доступные ядра в этом узле.
Что я должен изменить, чтобы распределить nfiles в узле по всем ядрам, чтобы каждое ядро получало nfiles / ncores.