c++ - 可以在 Internet 上而不是在 LAN 集群内分发 MPI (C++) 程序吗?

标签 c++ mpi openmpi mpich mpic++

我编写了一些 MPI 代码,可以在大型集群上完美运行。集群中的每个节点都具有相同的 cpu 架构,并且可以访问网络(即“公共(public)”)文件系统(以便每个节点都可以执行实际的二进制文件)。但请考虑这种情况:

  • 我办公室里有一台配备双核处理器 (intel) 的机器。
  • 我家里有一台配备双核处理器 (amd) 的机器。

两台机器都运行linux,两台机器都可以在本地成功编译和运行MPI代码(即使用2核)。

现在,是否可以通过 MPI 将两台机器链接在一起,以便我可以利用所有 4 个内核,同时考虑不同的体系结构,并考虑没有共享(网络)文件系统的事实?

如果是,怎么做到的?

谢谢, 本。

最佳答案

这是可以做到的。大多数 MPI 实现允许您指定要在不同机器上运行的二进制文件的位置。或者,确保它在两台机器上都在您的路径中。由于两台机器的字节顺序相同,所以这应该不是问题。您必须确保各个进程读取的任何输入数据在两个位置都可用。

这样做有很多并发症。您需要确保系统之间的防火墙将允许进程启动和通信。机器之间的通信会慢很多,所以如果你的代码通信量大或延迟不容忍,它可能会很慢。您在所有 4 个内核上运行的执行时间很可能比仅在一台机器上运行 2 个内核要长。

关于c++ - 可以在 Internet 上而不是在 LAN 集群内分发 MPI (C++) 程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3062734/

相关文章:

c++ - 为什么不能从主函数返回更大的值?

c++ - 用于可变参数模板实例化的 boost::hana 元组解包

c++ - MPI_Irecv : Aborting Job 中的 fatal error

MPI 程序的调试和测试

c - 如何将 -libm 传递给 MPICC? libimf.so : warning: feupdateenv is not implemented and will always fail

openmpi 2.1.2错误: UCX ERROR UCP version is incompatible

android - NDK 应用程序 onDestroy 清理 - 如何分离当前线程

c - MPI 调试 段错误

python - srun(或mpirun)如何同步不同集群节点上的执行环境?

c++ - 是否可以触发由 1 发送触发的 2 接收回调?