From 491caf31035e50cb4dbe5516f6deb74fa5d644ad Mon Sep 17 00:00:00 2001 From: Gerhard Theurich Date: Wed, 25 Sep 2024 14:42:52 +0000 Subject: [PATCH] Add profiling inside ESMF_StateReconcileIsNoop(). --- .../src/ESMF_StateReconcile.F90 | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/Superstructure/StateReconcile/src/ESMF_StateReconcile.F90 b/src/Superstructure/StateReconcile/src/ESMF_StateReconcile.F90 index 11996c22a6..f528d56c39 100644 --- a/src/Superstructure/StateReconcile/src/ESMF_StateReconcile.F90 +++ b/src/Superstructure/StateReconcile/src/ESMF_StateReconcile.F90 @@ -335,6 +335,8 @@ subroutine ESMF_StateReconcileIsNoop(state, vm, isNoop, rc) logical :: isNoopLoc integer :: isNoopLocInt(1), isNoopInt(1) + logical, parameter :: profile = .true. + localrc = ESMF_RC_NOT_IMPL isNoop = .false. ! assume reconcile is needed @@ -345,19 +347,47 @@ subroutine ESMF_StateReconcileIsNoop(state, vm, isNoop, rc) !call ESMF_VMIdLog(vmId, prefix="vmId: ", rc=rc) + if (profile) then + call ESMF_TraceRegionEnter("StateReconcileIsNoopLoc", rc=localrc) + if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, & + rcToReturn=rc)) return + endif + call StateReconcileIsNoopLoc(state, isNoopLoc=isNoopLoc, rc=localrc) if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, & rcToReturn=rc)) return + if (profile) then + call ESMF_TraceRegionExit("StateReconcileIsNoopLoc", rc=localrc) + if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, & + rcToReturn=rc)) return + endif + isNoopLocInt(1) = 0 if (isNoopLoc) isNoopLocInt(1) = 1 + if (profile) then + call ESMF_TraceRegionEnter("ESMF_VMAllReduce", rc=localrc) + if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, & + rcToReturn=rc)) return + endif + ! logical AND reduction, only 1 if all incoming 1 call ESMF_VMAllReduce(vm, isNoopLocInt, isNoopInt, 1, ESMF_REDUCE_MIN, & rc=localrc) if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, & rcToReturn=rc)) return + if (profile) then + call ESMF_TraceRegionExit("ESMF_VMAllReduce", rc=localrc) + if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, & + rcToReturn=rc)) return + endif + if (isNoopInt(1)==1) isNoop = .true. ! found that Reconcile is a NOOP ! return successfully