Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssh 配置MPI主机文件以使用多个用户标识_Ssh_Mpi_Openmpi - Fatal编程技术网

Ssh 配置MPI主机文件以使用多个用户标识

Ssh 配置MPI主机文件以使用多个用户标识,ssh,mpi,openmpi,Ssh,Mpi,Openmpi,我想在不同的机器上运行一个带有Mpi的程序(所有带有OpenMPI 1.5的linux机器) 现在,我有可以使用用户名A登录的机器,还有一组可以使用用户名B登录的机器。所有机器都可以通过ssh访问,但我不知道如何实现这一点 我的主机文件如下所示: localhost #username local machine_set_A_1 #username A machine_set_A_2 #username A ... machine_set_B_1 #use

我想在不同的机器上运行一个带有Mpi的程序(所有带有OpenMPI 1.5的linux机器)

现在,我有可以使用
用户名A
登录的机器,还有一组可以使用
用户名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
...

是否有可能做到这一点。谢谢。

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

例如:

 mpiexec -f machinefile -n 32 a.out
计算机文件看起来像:

 host1.some.place:16
 host2.some.place:16
这意味着两台主机各有16个核心

参考:


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

mpirun -mca orte_rsh_agent "/path/to/mysshwrapper" -machinefile machines.txt -np 4 ./subarray
然后,您必须将适当的用户名参数从包装器注入到对ssh的调用中


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

为了解决我自己的问题,我刚刚在上找到了类似的解决方案。这可能会对您有所帮助,但这是为MPICH准备的

在具有不同用户名的计算机上使用Hydra

Hydra仅支持在某些启动器(如ssh和rsh)上使用不同的用户名。为此,主机文件应包含一个“user=”条目

一个例子

shell$ cat hosts

       donner  user=foo
       foo     user=bar
       shakey  user=bar
编辑


有关OpenMPI,请参阅:

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\u config
(系统范围配置)和
~/.SSH/config
(用户特定配置;其中的指令覆盖系统配置中的指令)


ssh\u config(5)
的手册页提供了关于可用关键字的更多信息,以及关于支持哪些模式的更多信息(使用类似于
Host*.groupA.uni.edu的内容,如果适用的话,可以节省一些输入)。

所有打开Mpi 1.5的linux机器,问题已更新,它将如何知道使用哪个用户在机器上执行命令?我的问题是我有不同的用户!可以创建一个SSH客户端配置文件,并使用
host
关键字指定不同的主机配置。对于每个主机,可以使用
User
关键字指定登录用户名。应该比创建包装器脚本要简单一些。@HristoIliev是的,从简单性和实用性两方面来说,这都是一个更好的答案(即使在mpirun之外,它也可能有用)。你应该把它作为一个正确的答案,而不是对这个问题的评论,这样它才能获得应有的可见性。@JonathanDursi,你的答案适用于更一般的情况,因为包装器还可以做其他不同的事情,而不仅仅是指定正确的用户名(例如,提供与SGE之类的东西的集成)。您不应该将其删除。回想起来,它似乎是黑客行为,但如果您认为它在其他情况下可能有用,我将取消删除。