首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PETSc和MPI通信的世界正确用法

PETSc和MPI通信的世界正确用法
EN

Stack Overflow用户
提问于 2012-07-01 06:24:18
回答 1查看 937关注 0票数 1

您好,我有一个用C++编写的程序,其中有一两个函数正在使用PETSc。

当我调用这些函数时,这将是使用PETSc时的正确方法

代码语言:javascript
复制
1) a)change all MPI_COMM_WORLD to PETSC_COMM_WORLD for my entire program
   b)change MPI_Init to PetscInitialize

。。

2)为petsc创建一个单独的通信世界,并将其传递给函数

代码语言:javascript
复制
    MPI_Init(&argc, &argv);
    ..
    //some many line of code
    ..

    MPI_Comm_split(MPI_COMM_WORLD, rank, 0, &PETSC_COMM_WORLD);

    petsc_function(PETSC_COMM_WORLD,.....

    //some how reverting the comm_split here to continue as normal so all the non petsc functions work

。。

3)或者我可以简单地将MPI_COMM_WORLD与Petsc函数一起使用。

4)还是有其他我不知道的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-01 06:42:44

您需要先调用PetscInitialize。您可以用它替换对MPI_Init的调用。

除非您只想在等级的子集上使用PETSC_COMM_WORLD,否则不需要设置PETSc。如果您不自己设置PETSC_COMM_WORLDPetscInitialize会自动将其设置为MPI_COMM_WORLD的副本。

然后,当您调用PETSc函数时,您可以使用PETSC_COMM_WORLD。在程序结束时调用PetscFinalize,它将为您调用MPI_Finalize,除非您手动调用MPI_Init,而不是单独使用PetscInitialize

在程序的其余部分中,不需要将MPI_COMM_WORLD更改为PETSC_COMM_WORLD

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11278130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档