我写了一些MPI代码,可以在大型集群上完美运行。集群中的每个节点都具有相同的cpu体系结构,并且可以访问联网(即“公共”)文件系统(这样每个节点都可以超越实际的二进制文件)。但请考虑这种情况:
两台机器都运行linux,两台机器都可以在本地成功编译和运行MPI代码(即使用2个内核)。
现在,是否可以通过MPI将两台机器连接在一起,以便我可以利用所有4个内核,同时考虑到不同的架构,并牢记没有共享(联网)文件系统的事实? / p>
若然,怎么样?
谢谢, 本。
答案 0 :(得分:5)
有可能做到这一点。大多数MPI实现允许您指定要在不同计算机上运行的二进制文件的位置。或者,确保它位于两台计算机上的路径中。由于两台机器具有相同的字节顺序,因此不应该成为问题。您必须确保各个进程读取的任何输入数据在两个位置都可用。
这样做有很多并发症。您需要确保系统之间的防火墙允许进程启动和通信。机器之间的通信速度会慢得多,因此如果您的代码是通信繁重或延迟不容忍,那么它可能会非常慢。很可能在所有4个内核上运行的执行时间比在单个机器上运行2更长。
答案 1 :(得分:0)
流程所在的位置没有地域限制。正如KeithB所说,两台机器上都没有共同的路径甚至是相同的二进制路径。根据您使用的MPI实现,您甚至不需要相同的字节序。
您可以在每台计算机上准确指定二进制文件的路径,并且还有两个独立的二进制文件。但是,您应该注意,如果两个节点之间的通信基础设施不够快,程序将运行缓慢。