Openmpi 使用COMM_WORLD或COMM_SELF实例化TS、DMDA、Vec等的意义是什么

Openmpi 使用COMM_WORLD或COMM_SELF实例化TS、DMDA、Vec等的意义是什么,openmpi,petsc,Openmpi,Petsc,我正在查看来自PETSc和petsc4py的几个示例,并查看PETSc的PDF用户手册。手册规定: 对于那些不熟悉MPI的人来说,acommunicators是一种表示将一起参与计算或通信的过程集合的方法。通讯器具有变量类型MPI\u Comm。在大多数情况下,用户可以使用通讯器PETSC\u COMM\u WORLD指示给定运行中的所有进程,并PETSC\u COMM\u SELF指示单个进程 我相信我理解这种说法,但我不确定实际使用这些通讯器的真正后果是什么。我不确定当您对分布式阵列执行TS

我正在查看来自PETSc和petsc4py的几个示例,并查看PETSc的PDF用户手册。手册规定:

对于那些不熟悉MPI的人来说,acommunicators是一种表示将一起参与计算或通信的过程集合的方法。通讯器具有变量类型
MPI\u Comm
。在大多数情况下,用户可以使用通讯器
PETSC\u COMM\u WORLD
指示给定运行中的所有进程,并
PETSC\u COMM\u SELF
指示单个进程


我相信我理解这种说法,但我不确定实际使用这些通讯器的真正后果是什么。我不确定当您对分布式阵列执行
TSCreate(PETSC\u COMM\u WORLD,…)
vs
TSCreate(PETSC\u COMM\u SELF,…)
或类似操作时会发生什么。如果您使用
PETSC\u COMM\u SELF
创建了
DMDA
,这是否意味着
DM
对象不会真正分布在多个进程中?或者,如果使用
PETSC\u COMM\u SELF
创建
TS
,使用
PETSC\u COMM\u WORLD
创建
DM
,这是否意味着解算器实际上无法访问重影节点?它是否影响
DMCreateLocalVector
DMCreateGlobalVector
的结果?

解算器的通信器决定哪些进程参与解算器操作。例如,具有PETSC_COMM_SELF的TS将在每个进程上独立运行,而具有PETSC_COMM_WORLD的TS将在所有进程上发展一个单一系统。如果将DM与解算器一起使用,则通讯器必须一致