使用 mpirun 的多主机密码问题

使用 mpirun 的多主机密码问题

因此,我通过将作业从 Ubuntu 机器发送到远程主机(也是 Ubuntu)来运行并行 c++ 程序,我在终端上使用的命令行如下:

mpirun -np 4 --host host1,host2 program.exe

然后终端上的下一行同时请求两个主机的密码:

noob@host1's password: noob@host2's password:

这给我带来了一些问题。有没有办法强制终端逐个请求我的密码?

答案1

我不知道是否有办法强制终端按顺序询问,但无论如何,假设您通过连接ssh,更好的解决方案是设置无密码访问。

  1. 在你的机器上创建一个公共 ssh 密钥:

    ssh-keygen -t rsa
    

    系统将要求您输入密码,然后第一的每次登录后运行任何 ssh 命令的时间。这意味着对于多个sshscp命令,您只需输入一次(不是每个主机一次,而是每个登录会话一次)。不过,您可以将其留空以实现完全无密码访问。

  2. 生成公钥后,将其复制到远程计算机:

    ssh-copy-id -i ~/.ssh/id_rsa.pub noob@host1
    ssh-copy-id -i ~/.ssh/id_rsa.pub noob@host2
    

    如果需要对许多主机执行此操作,请创建一个主机名或 IP 文件(每行一个),然后使用 shell 循环运行复制它们:

    while read ip; do 
         ssh-copy-id -i ~/.ssh/id_rsa.pub noob@$ip 
    done < IPlistfile.txt
    

在此步骤中,您必须手动输入每个 IP 的密码,但完成此操作后,您应该能够在无需密码的情况下启动您的作业。

如果这不起作用,我们将需要更多有关该程序如何连接到远程主机的详细信息。

答案2

如果您正在使用 MPICH1,您可以通过此方法获得帮助。

而不是写作主机1,主机2在 -np 4 之后,您可以将主机添加到“机器.linux“此目标中的文件:

home/user/mpich1/share

*如果你没有在主目录中安装 mpich,请参考你安装 mpich 的位置

并打开“机器.linux“文件。清除文件内容和所需核心数的主机类型信息:

host1:4  
host2:2
host3:2

现在您只需使用 mpirun 即可:

mpirun -np 4 program.exe

相关内容