我正在尝试在EPOS操作系统中实现MPI协议。好吧,实际上我不明白如何实现MPI_Comm。它被定义为“MPI用来确定哪些进程涉及通信的基本对象”。在某些实现中 我在互联网上发现它实现为 typedef int MPI_Comm ,但我怎么知道 使用 int MPI_Comm 进行通信时涉及哪个流程?任何的想法?
感谢。
答案 0 :(得分:1)
似乎有两种方法几乎相同。
第一个是typedef int MPI_Comm
,并使用该值作为维护实际信息的内部数据结构的索引。
第二个是typedef struct comm_info* MPI_Comm
,其中通信器(或任何其他MPI类型)是指向内部结构的直接指针。 OpenMPI采用这种方法。
使用int的优点是,只要内部数据结构同步,就可以更容易在所有处理器上使用相同的索引。
但是,当OpenMPI和MPICH已经做了很多并且是开源时,为什么重新发明轮子?特别是MPICH许可证非常宽松。因此,相当多的供应商都在其上建立了自己的商业MPI库。查看their license。
答案 1 :(得分:0)
当实现对MPI_Comm使用int时,它实际上将它用作对内部数组的引用,它在内部跟踪通信器的所有必要信息。