我想知道是否有人知道为什么在子通信器上调用PetscInitialize可能有利?例如,我有一个问题,我在4核上运行,但只有两个需要使用Petsc。我可以通过设置
在子通信器上调用PetscInitialize,仅包括这两个进程 PETSC_COMM_WORLD=mySubCommunicator
但是我不能在MPI_COMM_WORLD
上初始化它并且只在子通信器上调用Petsc例程?我问的原因是它会简化我的代码只是在MPI_COMM_WORLD
初始化,但我不想因此而遭受任何负面后果。感谢您的任何意见。
答案 0 :(得分:1)
只要您不使用排名子集在PETSC_COMM_WORLD
上调用任何集体操作,您就应该没事。我能找到的唯一隐含的函数是PetscMallocDump
,PetscMPIDump
和一些PetscLog*
。您还必须在所有级别上致电PetscFinalize
。