2011-06-29 273 views
1

我想在不同的机器集(具有Open Mpi 1.5的所有Linux机器)上运行带有mpirun的程序。配置MPI hosts文件以使用多个用户标识

现在我有机器在那里我可以登录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 
... 

它是实现这一目标成为可能。谢谢。

+0

linux,unix或Windows? – Martlark

+0

什么版本的mpi? – Martlark

+0

所有具有Open Mpi 1.5的Linux机器,问题更新 – 0xFF

回答

-1

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

实施例:

mpiexec -f machinefile -n 32 a.out 

机文件看起来像:

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

这意味着两个主机与每个16个核。

参考:

mpich2 documentation

+1

以及它如何知道要在机器上执行命令时使用哪个用户?我的问题是我有不同的用户! – 0xFF

+0

我不知道unix。抱歉。 – Martlark

2

我能想到的要做到这一点的唯一方法是创建您的进程启动做SSH USER1 @主机对一些包装,而对于其他用户2 @主机名。您可以通过

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

设置进程启动SSH代理,然后你必须适当的用户名参数注入呼叫从自己包装为SSH。

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

+1

可以创建一个SSH客户端配置文件,并用'Host'关键字指定不同的主机配置。对于每个主机,可以用'User'关键字指定登录用户名。应该比创建包装脚本更简单。 –

+0

@HristoIliev是的,这在简单性和实用性方面都是一个更好的答案(即使在mpirun之外,这也是有用的)。你应该把它作为一个正确的答案,而不是对这个问题发表评论,这样才能获得应有的知名度。 –

2

试图找到我自己的问题的解决方案我刚刚找到类似的东西(在http://wiki.mpich.org/mpich/index.php/Using_the_Hydra_Process_Manager)。这可能对您有所帮助,但这是针对MPICH的。

使用水润上机与不同的用户名

水润只支持一些发射器(如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

2

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(如果适用)可以节省某些键入的内容)。

+0

+1;我认为这显然是做到这一点的方法。 –

+0

@JonathanDursi,你的回答适用于更一般的情况,因为包装器也可以做其他不同的事情,而不是简单地指定正确的用户名(例如提供与SGE之类的集成)。你不应该删除它。 –

+0

回想起来,它似乎是黑客,但如果你认为它可能在其他一些情况下有用,我会取消删除。 –