在MPI中,如何知道作为通信器一部分的处理器的所有列组?
是否有任何方法可以让我知道作为communicator一部分的所有流程? 假设总共有16个MPI进程,MPI_Comm Comm有4个进程作为一个组。只要有通信器comm,我们就可以知道作为通信器一部分的所有进程的级别吗在MPI中,如何知道作为通信器一部分的处理器的所有列组?,mpi,Mpi,是否有任何方法可以让我知道作为communicator一部分的所有流程? 假设总共有16个MPI进程,MPI_Comm Comm有4个进程作为一个组。只要有通信器comm,我们就可以知道作为通信器一部分的所有进程的级别吗 谢谢每个通信器都有一个关联的进程组,可以通过在C绑定中调用MPI_COMM_group MPI_COMM_group来获得。一旦获得comm的进程组,就可以使用MPI_group_TRANSLATE_RANKS将comm组中的列组列表转换为MPI_comm_WORLD组中的相应
谢谢每个通信器都有一个关联的进程组,可以通过在C绑定中调用MPI_COMM_group MPI_COMM_group来获得。一旦获得comm的进程组,就可以使用MPI_group_TRANSLATE_RANKS将comm组中的列组列表转换为MPI_comm_WORLD组中的相应列组。必须经历翻译过程,因为在comm组中,参与过程的级别从0到MPI_comm_SIZEcomm-1不等 下面是一个示例实现: 无效打印通讯通讯通讯 { MPI集团集团、世界集团; MPI_Comm_Group MPI_Comm_WORLD和WORLD_grp; MPI_Comm_groupcomm和grp; 内部grp_尺寸; MPI_组尺寸、玻璃钢尺寸和玻璃钢尺寸; int*ranks=mallocgrp_size*sizeofint; int*world\u ranks=mallocgrp\u size*sizeofint; 对于int i=0;i
请注意,您只能枚举当前进程知道的通信器的内容,因为通信器由其句柄引用,这些句柄是每个进程的本地值。每个通信器都有一个关联的进程组,可以通过在C绑定中调用MPI\U COMM\U group MPI\U COMM\U group获得。一旦获得comm的进程组,就可以使用MPI_group_TRANSLATE_RANKS将comm组中的列组列表转换为MPI_comm_WORLD组中的相应列组。必须经历翻译过程,因为在comm组中,参与过程的级别从0到MPI_comm_SIZEcomm-1不等 下面是一个示例实现: 无效打印通讯通讯通讯 { MPI集团集团、世界集团; MPI_Comm_Group MPI_Comm_WORLD和WORLD_grp; MPI_Comm_groupcomm和grp; 内部grp_尺寸; MPI_组尺寸、玻璃钢尺寸和玻璃钢尺寸; int*ranks=mallocgrp_size*sizeofint; int*world\u ranks=mallocgrp\u size*sizeofint; 对于int i=0;i
请注意,您只能枚举当前进程知道的通信器的内容,因为通讯器由其句柄引用,这些句柄是每个进程的本地值。如果您想知道通讯器中的进程在默认通讯器mpi_comm_世界中的排名,那么您的问题的答案是这取决于您如何创建通讯器。因此,您是如何创建comm的?假设通信器是使用MPI_comm_create创建的。我们如何找到答案?如果您想知道comm中的进程在默认通信器mpi_comm_world中的排名,那么您的问题的答案取决于您是如何创建comm的。那么,您是如何创建comm的?假设通信器是使用mpi_comm_创建的。我们怎么知道?