我是MPI编程领域的新手,我想知道MPI流程之间是否存在一些共享变量,并且可以从任何流程访问而无需发送/接收它们?
由于
答案 0 :(得分:2)
没有。没有“用户空间”变量或缓冲区在MPI作业的排名之间自动共享。
有一些常见的变量(例如总排名数)由MPI环境设置,并保证在所有排名中“相同” - 但不是“共享”(例如,有一个本地读取 - 只有所有等级的值的副本)。在许多情况下,通过MPI_ *调用访问这些值,并且还可以通过其他方式获取这些值,具体取决于实现的细节。
答案 1 :(得分:2)
不。很多时候,您的MPI代码将同时在许多计算机上运行,因此除了通过网络传输消息之外,他们无法共享数据。
对于多核计算机,大多数MPI实现会检测进程是否在同一芯片上运行,并使用优化的消息传递算法来避免网络上的任何通信,并且在某些情况下重用缓冲区以避免中间内存副本。