Я пытаюсь запустить несколько процессов диспетчера MPI, по одному на узел, а затем каждый из этих диспетчеров порождает (через MPI_Comm_Spawn) на своем же узле несколько рабочих. Для этого примера у меня есть 2 менеджера и 2 рабочих на менеджера. Я следую приведенным здесь инструкциям
Управление отображением узлов MPI_COMM_SPAWN
для принудительного запуска одного процесса менеджера на узел.
Для одного из менеджеров,OpenMPI сообщает, что нет выделенных ресурсов для рабочего, который будет порожден. Я немного подозрительно, потому что в баннере, напечатанном MPI, говорится, что максимальное количество слотов для узла равно нулю. (Для другого менеджера порождение работника прошло успешно). Я предполагаю, что моя команда Torque qsub или мой файл хоста содержат ошибку.
Я пытался скомпилировать OpenMPI как с поддержкой Torque, так и без нее. Я сделал последнее, чтобы mpiexec не игнорировал указанный мной файл хоста. Ни одна попытка не исправила ошибку. В дальнейшем я использую версию OpenMPI без поддержки Torque, скомпилированной в.
Моя сокращенная команда qsub выглядит следующим образом, запрашивая 2 узла с одним менеджером и двумя работниками на каждом:
qsub -V -f -X -N MyJobName -l nodes=2:ppn=3 MyJob.bash
Мой экспериментальный файл хоста MyHostFile:
n002.cluster.com slots=3 max_slots=3
n001.cluster.com slots=3 max_slots=3
и моя команда mpiexec с аргументом "--map-by ppr: 1: node":
mpiexec --enable-recovery --display-map --display-allocation --mca mpi_param_check 1 --v --x DISPLAY --wdir ${work_dir} --hostfile MyHostFile --np 2 --map-by ppr:1:node MyManager.exe
Вот баннер и ошибкасообщение печатается при вызове MPI_Comm_spawn. Обратите внимание на поля max_slots.
====================== ALLOCATED NODES ======================
n002: flags=0x11 slots=3 max_slots=0 slots_inuse=3 state=UP
n001: flags=0x13 slots=3 max_slots=0 slots_inuse=1 state=UP
=================================================================
--------------------------------------------------------------------------
There are no allocated resources for the application:
MyWorker.exe
that match the requested mapping:
-host: n001.cluster.com
Verify that you have mapped the allocated resources properly for the
indicated specification.
Есть идеи, почему возникает эта ошибка? Мой способ указания max_slots неверен?
Я использую OpenMPI 4.0.2, компилятор Portland Group C ++ 19.5-0, PBS 5.1.1 и CentOS 3.10.0.