gpt4 book ai didi

c++ - PETSc 和 MPI COMM 世界正确使用

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:03 44 4
gpt4 key购买 nike

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

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

1) a)change all MPI_COMM_WORLD to PETSC_COMM_WORLD for my entire program
b)change MPI_Init to PetscInitialize

..

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

    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) 还是有其他我不知道的方法?

最佳答案

您需要先调用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

关于c++ - PETSc 和 MPI COMM 世界正确使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11278130/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com