MPI中的等级和流程有什么区别?

Har*_*ala 6 mpi

MPI中的等级和流程有什么区别?

sus*_*att 14

是我从中学到的所有 MPI 的资源,您可能会发现它很有用。

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

默认情况下,您有一个包含所有进程的组,以及MPI_COMM_WORLD处理它们之间通信的内部通信器。这对于大多数应用程序来说已经足够了,并且确实有点模糊了进程和等级之间的区别。要记住的主要事情是进程的等级始终与组相关。如果您要将进程分成两组(例如,一组用于读取输入,另一组用于处理数据),那么每个进程现在将有两个等级:它原来在 中的一个MPI_COMM_WORLD,一个在新组中。


小智 5

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

int MPI_Comm_rank(MPI_Comm comm, int *rank) 
Run Code Online (Sandbox Code Playgroud)

该参数rank将存储进程的等级。

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


小智 2

排名是对进程进行编号的逻辑方式。例如,您可能有 16 个并行进程在运行;如果您通过以下方式查询当前进程的排名,MPI_Comm_rank您将得到 0-15。

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