编译并运行 OpenMPI 程序
Posted
技术标签:
【中文标题】编译并运行 OpenMPI 程序【英文标题】:Compile and run OpenMPI program 【发布时间】:2011-10-31 15:28:14 【问题描述】:我使用的集群有几种主机类型——不同的 Linux 发行版/版本,一些 32 位,一些 64 位,不同版本的 GCC。我知道我应该使用 GCC 的平台特定 MPI 包装器来编译我的程序。这一步对我来说或多或少是清楚的。
我的程序使用固定数量的主机,每个主机正好运行 1 个进程。共享内存线程由 TBB 处理,所以基本上我只需要 MPI 用于主机之间的工作分配。
最后一步是在所有主机上运行程序。事实证明,这是我不知道该怎么做的部分,我的 IT 人员帮不了我。
我拥有的是每个主机的主机 IP 地址列表(准确地说是本地地址,例如 192.168.1.xxx)以及用户名和密码。如果它是带有平台特定编译器的编译器并复制到每个主机中,那么在所有主机上运行我的程序的步骤是什么?任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:您需要对所有机器、主机文件、所有机器上的可执行文件进行无密码 SSH 访问。 确保可执行文件在所有机器上具有相同的(相对)路径。
主机文件(在主机上):
# my_hostfile
192.168.0.205
192.168.0.208
打开 MPI 的命令:
mpirun --hostfile my_hostfile programname
对于无密码 SSH 访问,在 ~/.ssh
下创建一个主密钥
ssh-keygen -t rsa
将主计算机中~/.ssh/rsa.pub
的(一行)内容添加到目标计算机上~/.ssh/authorized_keys2
中的新行。 (您可以使用其他 SSH 密码系统来代替 RSA。)
【讨论】:
我没用过 mpi 但你不需要在主机上启动一些东西吗? 我明天早上将在本地集群上尝试一下。 ;-)以上是关于编译并运行 OpenMPI 程序的主要内容,如果未能解决你的问题,请参考以下文章
使用 MPI 并在 Linux 中使用 OpenMPI 的代码不能在使用 MSMPI 的 Windows 中编译