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 (has_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