Сконфигурируйте MPI hostsfile для использования нескольких пользовательских идентификаторов - PullRequest
3 голосов
/ 29 июня 2011

Я хочу запустить программу с mpirun на разных наборах машин (все машины linux с Open Mpi 1.5).

Сейчас у меня есть машины, на которых я могу войти в систему с username A, и другой набор машин, где я использую username B.Все машины доступны через ssh, но я не могу понять, как этого добиться.

Мой файл hosts будет выглядеть так:

localhost          #username local

machine_set_A_1    #username A
machine_set_A_2    #username A
...

machine_set_B_1    #username B
machine_set_B_2    #username B
...

Возможно ли этого добиться?Спасибо.

Ответы [ 4 ]

3 голосов
/ 16 ноября 2012

Клиент OpenSSH поддерживает конфигурации для каждого хоста, что-то похожее на это:

Host machine_set_A_1 machine_set_A_2 ...
User username_A

Host machine_set_B_1 machine_set_B_2 ...
User username_B

Директива Host ограничивает все следующие объявления (вплоть до следующей директивы Host) только для соединений с именами хостов, которые соответствуют любому шаблону, указанному после директивы.

Файл конфигурации клиента SSH обычно находится в /etc/ssh/ssh_config (общесистемная конфигурация) и в ~/.ssh/config (конфигурация для конкретного пользователя; директивы там переопределяют те из конфигурации системы).

Страница man для ssh_config(5) содержит больше информации о доступных ключевых словах и больше информации о том, какие шаблоны поддерживаются (использование чего-то вроде Host *.groupA.uni.edu, если применимо, может сэкономить некоторую печать).

2 голосов
/ 30 июня 2011

Единственный способ, которым я могу придумать, - это создать обертку для вашей панели запуска процессов, для которой ssh ​​user1 @ hostname для одних, и user2 @ hostname для других.Вы можете установить ssh agent для запуска процесса через

mpirun -mca orte_rsh_agent "/path/to/mysshwrapper" -machinefile machines.txt -np 4 ./subarray

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

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

2 голосов
/ 16 ноября 2012

Пытаясь найти решение для своей проблемы, я только что нашел что-то подобное (на http://wiki.mpich.org/mpich/index.php/Using_the_Hydra_Process_Manager). Это может быть полезно для вас, но это для MPICH.

Использование Hydraна машинах с разными именами пользователей

Hydra поддерживает использование разных имен пользователей только на некоторых средствах запуска (например, ssh и rsh). Для этого файл хоста должен содержать запись "user =".

Пример

shell$ cat hosts

       donner  user=foo
       foo     user=bar
       shakey  user=bar

РЕДАКТИРОВАТЬ

Для OpenMPI, пожалуйста, обратитесь к: http://www.open -mpi.org / faq /? Category = rsh# Rhosts-файл

0 голосов
/ 29 июня 2011

Обычно вы просто устанавливаете mpi на каждую машину, на которой хотите запускать задания mpi. Затем в вашем вызове mipexec вы должны указать машинный файл, который идентифицирует хосты / машины с mpi. Mpi smpd / daemon запустит задания для вас на каждом хосте.

Пример:

 mpiexec -f machinefile -n 32 a.out

Машинный файл выглядит так:

 host1.some.place:16
 host2.some.place:16

Что означает два хоста с 16 ядрами в каждом.

см .:

mpich2 документация

...