4

我想在不同的机器集(所有具有 Open Mpi 1.5 的 linux 机器)上运行带有 mpirun 的程序。

现在我有可以登录username A的机器,还有另一组使用username B. 所有机器都可以通过 ssh 访问,但我不知道如何实现这一点。

我的主机文件将是这样的:

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

4 回答 4

4

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(用户特定的配置;那里的指令覆盖系统配置中的指令)中找到。

的手册页ssh_config(5)包含有关可用关键字的更多信息以及有关支持哪些模式的更多信息(使用类似Host *.groupA.uni.edu,如果适用,可以节省一些输入)。

于 2012-11-16T14:21:23.753 回答
2

我能想到的唯一方法是为您的进程启动器创建一个包装器,为某些人执行 ssh user1@hostname,为其他人执行 user2@hostname。您可以通过设置进程启动器 ssh 代理

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

然后您必须将适当的用户名参数注入到您的包装器对 ssh 的调用中。

当然,您还必须设置 ssh 密钥,以便您登录到其他用户名帐户时无需密码。

于 2011-06-30T14:42:13.230 回答
2

试图为我自己的问题找到解决方案我刚刚找到了类似的东西(在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-file

于 2012-11-16T13:46:39.477 回答
-2

通常,您只需在要运行 mpi 作业的每台机器上安装 mpi。然后在您的 mipexec 调用中,您将指定用于标识具有 mpi 的主机/机器的机器文件。mpi smpd/daemon 将为您在每台主机上启动作业。

例子:

 mpiexec -f machinefile -n 32 a.out

机器文件如下所示:

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

这意味着两台主机各有 16 个核心。

参考:

mpich2 文档

于 2011-06-29T11:19:40.417 回答