Delay non-master ranks/threads, used by dbcsr_abort_handler()
SUBROUTINE delay_non_master() !! Delay non-master ranks/threads, used by dbcsr_abort_handler() INTEGER :: unit_nr REAL(KIND=dp) :: t1, wait_time wait_time = 0.0_dp ! we (ab)use the logger to determine the first MPI rank unit_nr = dbcsr_logger_get_default_io_unit() IF (unit_nr <= 0) & wait_time = wait_time + 1.0_dp ! rank-0 gets a head start of one second. !$ IF (omp_get_thread_num() /= 0) & !$ wait_time = wait_time + 1.0_dp ! master threads gets another second ! sleep IF (wait_time > 0.0_dp) THEN t1 = m_walltime() DO IF (m_walltime() - t1 > wait_time .OR. t1 < 0) EXIT END DO END IF END SUBROUTINE delay_non_master