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 8e5c89e4eSSatish Balay PetscBarrier - Blocks until this routine is executed by all 910e053e3SBarry Smith processors owning the object obj. 10e5c89e4eSSatish Balay 11e5c89e4eSSatish Balay Input Parameters: 1210e053e3SBarry Smith . obj - PETSc object (Mat, Vec, IS, SNES etc...) 1310e053e3SBarry Smith The object be caste with a (PetscObject). NULL can be used to indicate the barrier should be across MPI_COMM_WORLD 14e5c89e4eSSatish Balay 15e5c89e4eSSatish Balay Level: intermediate 16e5c89e4eSSatish Balay 17e5c89e4eSSatish Balay Notes: 1810e053e3SBarry Smith This routine calls MPI_Barrier with the communicator of the PETSc Object obj 1910e053e3SBarry Smith 2010e053e3SBarry Smith Fortran Usage: 2110e053e3SBarry Smith You may pass PETSC_NULL_VEC or any other PETSc null object, such as PETSC_NULL_MAT, to indicate the barrier should be 227e4e2a2dSBarry Smith across MPI_COMM_WORLD. You can also pass in any PETSc object, Vec, Mat, etc 23e5c89e4eSSatish Balay 24e5c89e4eSSatish Balay @*/ 257087cfbeSBarry Smith PetscErrorCode PetscBarrier(PetscObject obj) 26e5c89e4eSSatish Balay { 27e5c89e4eSSatish Balay MPI_Comm comm; 28e5c89e4eSSatish Balay 29e5c89e4eSSatish Balay PetscFunctionBegin; 30e5c89e4eSSatish Balay if (obj) PetscValidHeader(obj,1); 31*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscLogEventBegin(PETSC_Barrier,obj,0,0,0)); 32*5f80ce2aSJacob Faibussowitsch if (obj) CHKERRQ(PetscObjectGetComm(obj,&comm)); 33*5f80ce2aSJacob Faibussowitsch else comm = PETSC_COMM_WORLD; 34*5f80ce2aSJacob Faibussowitsch CHKERRMPI(MPI_Barrier(comm)); 35*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscLogEventEnd(PETSC_Barrier,obj,0,0,0)); 36e5c89e4eSSatish Balay PetscFunctionReturn(0); 37e5c89e4eSSatish Balay } 38