Я пытаюсь запустить некоторый код на нескольких процессорах, используя MPI.
Я запускаю, используя:
$ mpirun -np 24 python mycode.py
Я работаю в кластере с 8 узлами, каждый из которых имеет 12 процессоров. Мои 24 процесса разбросаны по всем узлам.
Давайте назовем узлы node1, node2, ..., node8 и предположим, что главный процесс находится на узле1, а моя работа — единственная работающая. Таким образом, node1 имеет главный процесс и несколько подчиненных процессов, остальные узлы имеют только подчиненные процессы.
Используется только узел с главным процессом (т.е. node1). Я могу это сказать, потому что у узлов 2-8 нагрузка ~ 0, а у узла 1 нагрузка ~ 24 (тогда как я ожидаю, что нагрузка на каждый узел будет примерно равна количеству процессоров, выделенных для моей работы с этого узла). Кроме того, каждый раз, когда функция оценивается, я заставляю ее распечатывать имя хоста, на котором она работает, и каждый раз выводит «node1». Я не знаю, является ли главный процесс единственным, кто что-то делает, или используются подчиненные процессы на том же узле, что и главный.
Кластер, на котором я работаю, был недавно обновлен. До обновления я использовал тот же код, и он вел себя полностью так, как ожидалось (например, когда я запросил 24 процессора, он дал мне 24 процессора, а затем использовал все 24 процессора). Эта проблема возникла только после обновления, поэтому я предполагаю, что настройка где-то была изменена или сброшена. Кто-нибудь видел эту проблему раньше и знает, как я могу ее исправить?
Изменить: это отправляется планировщику как задание с использованием:
#!/bin/bash
#
#$ -cwd
#$ -pe * 24
#$ -o $JOB_ID.out
#$ -e $JOB_ID.err
#$ -r no
#$ -m n
#$ -l h_rt=24:00:00
echo job_id $JOB_ID
echo hostname $HOSTNAME
mpirun -np $NSLOTS python mycode.py
В кластере работает SGE, и я отправляю это задание, используя:
qsub myjob
mpirun
, где найти списки хостов для запуска; в зависимости от конфигурации вашей системы должно работать что-то вродеmpirun -machinefile $PE_HOSTFILE -np $NSLOTS python mycode.py
. Но это все, что ваши системные администраторы должны настроить/задокументировать для вас. Вы должны иметь возможность запустить mpirunhostname
(как иpython mycode.py
) в качестве быстрой проверки того, что вы получаете ожидаемые хосты. - person Jonathan Dursi   schedule 11.07.2013