Я запускаю скрипт Python в кластере HPC. Функция в сценарии использует starmap
из пакета multiprocessing
, чтобы распараллелить определенный процесс с интенсивным вычислением.Использование многопроцессорности Python в кластере HPC
Когда я запускаю сценарий на одной некластерной машине, я получаю ожидаемое повышение скорости. Когда я вхожу в узел и запускаю сценарий локально, я получаю ожидаемое повышение скорости. Однако, когда диспетчер заданий запускает скрипт, ускорение скорости от multiprocessing
либо полностью смягчается, либо, иногда, даже вдвое медленнее. Мы заметили, что подкачка памяти возникает, когда вызывается функция starmap
. Мы считаем, что это имеет какое-то отношение к природе Python's multiprocessing
, то есть к тому факту, что отдельный интерпретатор Python запускается для каждого ядра.
Поскольку мы успешно работали с консоли с одного узла, мы попытались запустить сценарий с HPC_CREATECONSOLE=True
, но безрезультатно.
Есть ли какие-то настройки в менеджере заданий, которые мы должны использовать при запуске сценариев Python, которые используют multiprocessing
? multiprocessing
просто не подходит для кластера HPC?