Как вы выяснили, вы должны передать машинный файл как 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
.