mpiexec использует неправильное количество процессоров

Я пытаюсь настроить кластер MPI. Но у меня проблема в том, что количество процессоров, добавленных в файл mpd.conf, используется неправильно. У меня есть три сервера Ubuntu. opteron с 48 ядрами calc1 с 8 ядрами calc2 с 8 ядрами.

Мой mpd.hosts выглядит так:
opteron:46
calc1:6
calc2:6

После загрузки (mpdboot -n 3 -f mpd.hosts) система работает. mpdtrace -> перечислены все три из них.

Но выполнение такой программы, как "mpiexec -n 58 raxmlHPC-MPI...", приводит к тому, что calc1 и calc2 получают много заданий, а opteron - несколько одновременно. Что я делаю неправильно?

С уважением

Бьорн


person Bjoern    schedule 01.11.2010    source источник
comment
После запуска mpiexec opteron получает 20, calc1 19 и calc2 19 процессов. Получается 58, число, которое я сказал mpiexec.   -  person Bjoern    schedule 01.11.2010


Ответы (2)


Я нашел обходной путь. Я использовал дополнительный параметр «-machinefile /path/to/mpd.hosts» для команды mpiexec. И теперь все узлы работают правильно. Одна проблема, с которой я столкнулся, заключалась в том, что я получил следующее сообщение об ошибке:

... MPIU_SHMW_Seg_create_attach_templ (671): открыть не удалось - Нет такого файла или каталога ...

Чтобы исправить это, мне пришлось установить переменную среды MPICH_NO_LOCAL=1

person Bjoern    schedule 01.11.2010

Как вы поняли, вы должны передать машинный файл как mpdboot, так и mpiexec, чтобы использовать количество процессов для каждого хоста. Проблема «сбой при открытии» — это известная ошибка в MPD, используемом вами диспетчере процессов. Обратите внимание, что обходной путь MPICH_NO_LOCAL=1 будет работать, но, вероятно, приведет к значительному снижению производительности для внутриузловой связи.

Вы явно используете MPICH2 (или производную от MPICH2), но неясно, какую версию вы используете. Если вы можете, я настоятельно рекомендую обновиться до MPICH2 1.2.1p1 или (еще лучше) 1.3.1. Обе эти версии включают более новый диспетчер процессов под названием hydra, который работает намного быстрее. и более крепкий. В версии 1.3.1 Hydra является менеджером процессов по умолчанию. Он не требует фазы mpdboot и поддерживает переменную среды $HYDRA_HOST_FILE, так что вам не нужно указывать машинный файл на каждом этапе mpiexec.

person Dave Goodell    schedule 18.11.2010