Доставка mpiexec/mpirun вместе со статическим двоичным файлом

У меня есть параллельный код, использующий MPI. Правильный способ использования этого кода — скомпилировать из исходного кода на ПК/кластере, а затем запустить как:

mpiexec -n X ./application -options

К сожалению, некоторые люди, использующие этот код, испытывают проблемы с *nix и находят сборку из исходного кода немного сложной (не спрашивайте, почему). Эти пользователи используют код только на своих настольных/ноутбуках.

Для таких пользователей я просто компилирую статический двоичный файл (на достаточно старой ОС с достаточно старой glibc, чтобы она работала на большинстве ПК под управлением Linux). Затем пользователь может запустить код следующим образом:

./application -options

Итак, теперь мой вопрос заключается в том, как я могу отправить mpiexec/mpirun вместе со своим статическим двоичным файлом, чтобы пользователь мог сделать что-то вроде:

./mpiexec -n 2 ./application -options

Таким образом, они также могут использовать преимущества нескольких ядер на своих настольных компьютерах. До сих пор я говорил им, чтобы они поступали правильно, т. е. устанавливали MPI и компилировали мой код из исходников.

Проведя некоторое тестирование, я обнаружил, что если я скомпилирую Hydra и отправлю mpiexec.hydra вместе с hydra_pmi_proxy, то смогу запустить код следующим образом:

./mpiexec.hydra -n 2 ./application -options

Но я не уверен, что это правильный подход? Это вызовет какие-либо проблемы? Я думаю сделать то же самое для двоичного файла Windoze (работающего в Cygwin).

Другой вариант — это образ VBox со всем предварительно созданным, но тогда загрузка большого файла становится проблемой.


person stali    schedule 29.09.2013    source источник


Ответы (1)


Поскольку вы используете Hydra, я предполагаю, что вы используете MPICH или что-то на его основе.

Проблема с поставкой только небольшой части полной установки заключается в том, что функциональность, скорее всего, будет отсутствовать. Вы можете предположить, что пользователи, которые не хотят устанавливать MPI самостоятельно, будут использовать только определенные функции, и если им нужно больше, просто скажите им, чтобы они установили их правильно.

Однако есть еще более тревожная ситуация, которую следует учитывать. Если у них уже установлен MPI, и это не тот, который вы отправляете, вам нужно убедиться, что ваш найден первым. В Windows просто поместите свои двоичные файлы и библиотеки в одну папку, и Windows найдет их первой. Linux немного сложнее, но вы можете манипулировать PATH и LD_LIBRARY_PATH, чтобы получить свою первую. Другой вариант — обернуть вызов mpirun в сценарий. Это упрощает настройку путей так, как вы хотите, и более продвинутые пользователи могут просто игнорировать это.

person JamesTullos    schedule 17.04.2014