1e5c89e4eSSatish Balay 2af0996ceSBarry Smith #include <petsc/private/petscimpl.h> /*I "petscsys.h" I*/ 3e5c89e4eSSatish Balay 4e5c89e4eSSatish Balay /* Logging support */ 595c0884eSLisandro Dalcin PetscLogEvent PETSC_Barrier; 6e5c89e4eSSatish Balay 77e4e2a2dSBarry Smith /*@C 8667f096bSBarry Smith PetscBarrier - Blocks until this routine is executed by all processors owning the object `obj`. 9e5c89e4eSSatish Balay 10*2fe279fdSBarry Smith Input Parameter: 11811af0c4SBarry Smith . obj - PETSc object (`Mat`, `Vec`, `IS`, `SNES` etc...) 12667f096bSBarry Smith The object must be cast with a (`PetscObject`). `NULL` can be used to indicate the barrier should be across `PETSC_COMM_WORLD` 13e5c89e4eSSatish Balay 14e5c89e4eSSatish Balay Level: intermediate 15e5c89e4eSSatish Balay 16811af0c4SBarry Smith Developer Note: 17811af0c4SBarry Smith This routine calls `MPI_Barrier()` with the communicator of the `PetscObject` 1810e053e3SBarry Smith 19811af0c4SBarry Smith Fortran Note: 20811af0c4SBarry Smith You may pass `PETSC_NULL_VEC` or any other PETSc null object, such as `PETSC_NULL_MAT`, to indicate the barrier should be 21811af0c4SBarry Smith across `PETSC_COMM_WORLD`. You can also pass in any PETSc object, `Vec`, `Mat`, etc 22e5c89e4eSSatish Balay 23e5c89e4eSSatish Balay @*/ 24d71ae5a4SJacob Faibussowitsch PetscErrorCode PetscBarrier(PetscObject obj) 25d71ae5a4SJacob Faibussowitsch { 26e5c89e4eSSatish Balay MPI_Comm comm; 27e5c89e4eSSatish Balay 28e5c89e4eSSatish Balay PetscFunctionBegin; 29e5c89e4eSSatish Balay if (obj) PetscValidHeader(obj, 1); 309566063dSJacob Faibussowitsch PetscCall(PetscLogEventBegin(PETSC_Barrier, obj, 0, 0, 0)); 319566063dSJacob Faibussowitsch if (obj) PetscCall(PetscObjectGetComm(obj, &comm)); 325f80ce2aSJacob Faibussowitsch else comm = PETSC_COMM_WORLD; 339566063dSJacob Faibussowitsch PetscCallMPI(MPI_Barrier(comm)); 349566063dSJacob Faibussowitsch PetscCall(PetscLogEventEnd(PETSC_Barrier, obj, 0, 0, 0)); 353ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 36e5c89e4eSSatish Balay } 37