Release buffer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_buffer), | intent(inout) | :: | buffer |
SUBROUTINE buffer_release(buffer) !! Release buffer TYPE(dbcsr_buffer), INTENT(INOUT) :: buffer IF (buffer%has_rma_win) THEN CALL mp_win_unlock_all(buffer%data_win) CALL mp_win_free(buffer%data_win) CALL mp_win_unlock_all(buffer%meta_win) CALL mp_win_free(buffer%meta_win) buffer%has_rma_win = .FALSE. buffer%grp = mp_comm_null IF (buffer%subgrp .NE. mp_comm_null .AND. buffer%num_layers_3D .GT. 1) & CALL mp_comm_free(buffer%subgrp) buffer%subgrp = mp_comm_null buffer%num_layers_3D = 1 END IF ! IF (buffer%is_valid) THEN CALL dbcsr_data_release(buffer%data) IF (dbcsr_data_valid(buffer%trs_stackbuf)) THEN CALL dbcsr_data_release(buffer%trs_stackbuf) END IF IF (dbcsr_data_valid(buffer%data_before_resize)) THEN CALL dbcsr_data_release(buffer%data_before_resize) END IF buffer%is_valid = .FALSE. END IF IF (ASSOCIATED(buffer%meta)) THEN CALL memory_deallocate(buffer%meta, memtype_mpi_buffer) NULLIFY (buffer%meta) END IF IF (ASSOCIATED(buffer%meta_before_resize)) THEN CALL memory_deallocate(buffer%meta_before_resize, memtype_mpi_buffer) NULLIFY (buffer%meta_before_resize) END IF IF (ASSOCIATED(buffer%meta_red3D)) THEN CALL memory_deallocate(buffer%meta_red3D, memtype_mpi_buffer) NULLIFY (buffer%meta_red3D) END IF END SUBROUTINE buffer_release