MPI中列组和进程之间的区别是什么?

MPI中列组和进程之间的区别是什么?,mpi,Mpi,MPI中列组和进程之间的区别是什么?列组是进程编号的逻辑方式。例如,您可能有16个并行进程在运行;如果您通过MPI\u Comm\u rank查询当前进程的排名,您将得到0-15 秩用于区分进程之间的差异。在基本应用程序中,秩=0上可能有一个“主”进程,它向秩1-15上的“辅助”进程发送消息。对于更高级的应用程序,您可以使用秩进一步划分工作负载(即0秩主进程,1-7执行功能A,8-15执行功能B)。是我学习所有MPI的资源,您可能会发现它很有用 关于您的问题:进程是正在运行的程序的实际实例。MP

MPI中列组和进程之间的区别是什么?

列组是进程编号的逻辑方式。例如,您可能有16个并行进程在运行;如果您通过
MPI\u Comm\u rank
查询当前进程的排名,您将得到0-15

秩用于区分进程之间的差异。在基本应用程序中,秩=0上可能有一个“主”进程,它向秩1-15上的“辅助”进程发送消息。对于更高级的应用程序,您可以使用秩进一步划分工作负载(即0秩主进程,1-7执行功能A,8-15执行功能B)。

是我学习所有MPI的资源,您可能会发现它很有用

关于您的问题:进程是正在运行的程序的实际实例。MPI允许您创建进程的逻辑,在每个组中,一个进程由其等级标识。这是[0,N-1]范围内的整数,其中N是组的大小通讯器是处理进程间通信的对象。内部通信器处理单个组内的进程,而内部通信器处理两个不同组之间的通信


默认情况下,您有一个包含所有进程的组,以及处理它们之间通信的内部通信器
MPI\u COMM\u WORLD
。这对于大多数应用程序来说已经足够了,并且在一定程度上模糊了进程和秩之间的区别。要记住的主要一点是,一个过程的等级总是相对于一个组的。如果将流程分为两组(例如,一组读取输入,另一组处理数据),则每个流程现在将有两个等级:它最初在MPI_COMM_WORLD中的等级和它的新组中的等级。

属于通信器的每个流程都由其等级唯一标识。进程的秩是一个整数,范围从零到通信器的大小减一。进程可以通过使用带有两个参数的
MPI\u Comm\u rank
函数来确定其在通信器中的秩:通信器和整数变量秩:

int MPI_Comm_rank(MPI_Comm comm, int *rank) 
参数
rank
将存储进程的等级


请注意,调用这些函数之一的每个进程必须属于提供的通信器中,否则将发生错误。

请参阅《编写消息传递并行程序与MPI》一书。因此,秩是组内每个进程的唯一标识符,但不一定是组间的唯一标识符。但是,当MPI_COMM_WORLD用作组时,排名始终是唯一的?或者你是说别的什么?