我将世界排名分配给不同的通讯器
MPI_Comm_split(world_comm, color_, key_worker,
&color_comm_worker);
MPI_Comm_split(world_comm, color_master, key_master, &color_comm_master);
int color_worker_size, color_master_size;
MPI_Comm_size(color_comm_worker, &color_worker_size);
MPI_Comm_size(color_comm_master, &color_master_size);
int color_worker_rank, color_master_rank;
MPI_Comm_rank(color_comm_worker, &color_worker_rank);
MPI_Comm_rank(color_comm_master, &color_master_rank);
例如,对于 5 个等级,我将拥有:
world_rank : 1 color_worker : 1 color_master: 0 key_master: 1
world_rank : 2 color_worker : 1 color_master: 1 key_master: 1
world_rank : 3 color_worker : 1 color_master: 2 key_master: 1
world_rank : 4 color_worker : 2 color_master: 0 key_master: 2
world_rank : 0 color_worker : 0 color_master: 0 key_master: 0
如您所见,color_comm_master 有自己的排名编号,从 0 开始。此通信器中的排名 1 是世界通信器中的排名 2。如何通过知道拆分通信器的 id 来确定世界通信器中拆分排名的排名 id?