MPI中的排名和流程有什么区别?
答案 0 :(得分:3)
Here是我从中学到的所有MPI的资源,您可能会发现它很有用。
关于您的问题:进程是正在运行的程序的实际实例。 MPI允许您创建流程的逻辑组,并且在每个组中,流程由其排名标识。这是[0,N-1]范围内的整数,其中N是组的大小。 Communicators 是处理进程间通信的对象。 intra-communicator 处理单个组内的进程,而 inter-communicator 处理两个不同组之间的通信。
默认情况下,您有一个包含所有进程的组,以及处理它们之间通信的内部通信器MPI_COMM_WORLD
。这对于大多数应用程序来说已经足够了,并且确实模糊了进程和排名之间的区别。要记住的主要事情是进程的排名始终相对于组。如果你要将你的流程分成两组(例如一组读取输入而另一组读取数据),那么每个流程现在都有两个等级:最初在MPI_COMM_WORLD
中有一个,一个在其中新组。
答案 1 :(得分:0)
Rank是编号进程的合理方式。例如,您可能有16个并行进程在运行;如果您通过MPI_Comm_rank
查询当前流程的排名,则会获得0-15。
Rank用于区分进程。在基本应用程序中,你可能在rank = 0上有一个“master”进程,它将消息发送到1-15级的“slave”应用程序。对于更高级的应用程序,您可以使用排名进一步划分工作负载(即0级主进程,1-7执行功能A,8-15执行功能B)。
答案 2 :(得分:0)
属于通信器的每个进程都由其等级唯一标识。进程的等级是一个整数,范围从零到通信器的大小减去一。进程可以通过使用带有两个参数的MPI_Comm_rank
函数来确定其在通信器中的排名:通信器和整数变量等级:
int MPI_Comm_rank(MPI_Comm comm, int *rank)
参数rank
将存储流程的等级。
请注意,调用其中一个函数的每个进程都必须属于提供的通信器,否则将发生错误。