我正在尝试在EPOS操作系统中实现MPI协议(protocol)。好吧,事实上我不明白如何实现MPI_Comm。它被定义为“MPI 用于确定哪些进程参与通信的基本对象”。在一些实现中 我在互联网上发现它是作为 typedef int MPI_Comm 实现的,但我怎么知道 使用 int MPI_Comm 进行通信涉及哪些进程?任何想法?
谢谢。
最佳答案
似乎有两种方法,几乎相同。
第一个是
typedef int MPI_Comm
,并使用该值作为维护实际信息的某些内部数据结构的索引。第二个是
typedef struct comm_info* MPI_Comm
,其中通信器(或任何其他 MPI 类型)是指向内部结构的直接指针。 OpenMPI 采用这种方法。
使用 int 的优点是,只要内部数据结构同步,在所有处理器上使用相同的索引可能会更容易。
但是,当 OpenMPI 和 MPICH 已经做了这么多并且开源时,为什么还要重新发明轮子呢? MPICH 许可证尤其非常宽松。以至于相当多的供应商都以此为基础建立了自己的商业 MPI 库。查看their license .
关于c - MPI协议(protocol)中的MPI_Comm如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17456525/