start and stop the performance indicators for every call to start there has to be (exactly) one call to stop
Note
can be used to measure performance of a sub-part of a program. timings measured here will not show up in the outer start/stops Doesn't need a fresh communicator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mp_perf_env_type), | optional, | POINTER | :: | perf_env |
SUBROUTINE add_mp_perf_env(perf_env) !! start and stop the performance indicators !! for every call to start there has to be (exactly) one call to stop !! @note !! can be used to measure performance of a sub-part of a program. !! timings measured here will not show up in the outer start/stops !! Doesn't need a fresh communicator TYPE(mp_perf_env_type), OPTIONAL, POINTER :: perf_env stack_pointer = stack_pointer + 1 IF (stack_pointer > max_stack_size) THEN DBCSR_ABORT("stack_pointer too large : mpiwrap @ add_mp_perf_env") END IF NULLIFY (mp_perf_stack(stack_pointer)%mp_perf_env) IF (PRESENT(perf_env)) THEN mp_perf_stack(stack_pointer)%mp_perf_env => perf_env IF (ASSOCIATED(perf_env)) CALL mp_perf_env_retain(perf_env) END IF IF (.NOT. ASSOCIATED(mp_perf_stack(stack_pointer)%mp_perf_env)) THEN CALL mp_perf_env_create(mp_perf_stack(stack_pointer)%mp_perf_env) END IF END SUBROUTINE add_mp_perf_env