我编写了一些 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/