编译并运行 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 中编译

OpenMPI:包 mpi 不存在

我是用 OpenMPI 还是 MPICH 编译的?

如何使用 OpenMPI 编程运行 SocWatch?

如何强制 OpenMPI 使用 GCC 而不是 ICC?是不是需要重新编译 OpenMPI?

OpenMPI:所有节点都作为节点 0 运行