【问题标题】:What is the meaning of using COMM_WORLD or COMM_SELF to instantiate a TS, DMDA, Vec, etc使用 COMM_WORLD 或 COMM_SELF 实例化一个 TS、DMDA、Vec 等是什么意思
【发布时间】:2020-10-06 02:30:41
【问题描述】:

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

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

我相信我理解这种说法,但我不确定实际使用这些交流器的真正后果。我不确定当您使用TSCreate(PETSC_COMM_WORLD,...)TSCreate(PETSC_COMM_SELF,...) 或类似的分布式阵列时会发生什么。如果您使用PETSC_COMM_SELF 创建了DMDA,这是否意味着DM 对象不会真正分布在多个进程中?或者如果你用PETSC_COMM_SELF 创建一个TS 和一个DMPETSC_COMM_WORLD,这是否意味着求解器实际上不能访问幽灵节点?对DMCreateLocalVectorDMCreateGlobalVector的结果有影响吗?

【问题讨论】:

    标签: openmpi petsc


    【解决方案1】:

    求解器的通信器决定哪些进程参与求解器操作。例如,具有 PE​​TSC_COMM_SELF 的 TS 将在每​​个进程上独立运行,而具有 PE​​TSC_COMM_WORLD 的 TS 将在所有进程中演化出一个单一系统。如果您将 DM 与求解器一起使用,则通信器必须一致。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 2022-01-01
      相关资源
      最近更新 更多