Finalize the DBCSR library Cleans up after the DBCSR library. Used to deallocate persistent objects.
SUBROUTINE dbcsr_finalize_lib() !! Finalize the DBCSR library !! Cleans up after the DBCSR library. Used to deallocate persistent objects. #if defined(__LIBXSMM) USE libxsmm, ONLY: libxsmm_finalize #endif CHARACTER(len=*), PARAMETER :: routineN = 'dbcsr_finalize_lib' INTEGER :: error_handle IF (.NOT. is_initialized) RETURN CALL timeset(routineN, error_handle) !$OMP PARALLEL DEFAULT(NONE) SHARED(ext_io_unit, default_group) CALL dbcsr_multiply_lib_finalize() !$OMP END PARALLEL is_initialized = .FALSE. CALL timestop(error_handle) IF (ASSOCIATED(logger)) THEN CALL dbcsr_rm_default_logger() CALL rm_mp_perf_env() CALL rm_timer_env() NULLIFY (logger) END IF NULLIFY (timeset_hook) NULLIFY (timestop_hook) NULLIFY (dbcsr_abort_hook) NULLIFY (dbcsr_warn_hook) CALL dbcsr_mp_release(mp_env) CALL mp_comm_free(default_group) #if defined(__LIBXSMM) CALL libxsmm_finalize() #endif ! Reset Acc ID CALL reset_accdrv_active_device_id() IF (use_acc()) THEN CALL acc_finalize() END IF ! Check the number of communicators IF (check_comm_count .AND. mp_get_comm_count() .NE. 0) THEN DBCSR_ABORT("Number of DBCSR sub-communicators is not zero!") END IF END SUBROUTINE dbcsr_finalize_lib