Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_buffer), | intent(inout) | :: | buffer | |||
logical, | intent(inout), | DIMENSION(:) | :: | do_win_create | ||
type(mp_request_type), | intent(inout) | :: | request |
SUBROUTINE win_setup(buffer, do_win_create, request) TYPE(dbcsr_buffer), INTENT(INOUT) :: buffer LOGICAL, DIMENSION(:), INTENT(INOUT) :: do_win_create TYPE(mp_request_type), INTENT(INOUT) :: request CHARACTER(len=*), PARAMETER :: routineN = 'win_setup' INTEGER :: handle, handle1, myproc CALL timeset(routineN, handle) IF (buffer%has_rma_win) THEN CALL timeset(routineN//"_win_check", handle1) CALL mp_wait(request) CALL timestop(handle1) IF (do_win_create(1)) THEN CALL mp_win_unlock_all(buffer%data_win) CALL mp_win_free(buffer%data_win) END IF IF (do_win_create(2)) THEN CALL mp_win_unlock_all(buffer%meta_win) CALL mp_win_free(buffer%meta_win) END IF END IF CALL dbcsr_data_release(buffer%data_before_resize) IF (ASSOCIATED(buffer%meta_before_resize)) THEN CALL memory_deallocate(buffer%meta_before_resize, memtype_mpi_buffer) NULLIFY (buffer%meta_before_resize) END IF ! CALL mp_environ(taskid=myproc, groupid=buffer%subgrp) buffer%myproc = myproc IF (do_win_create(1)) THEN CALL dbcsr_win_create_any(buffer%data, buffer%subgrp, buffer%data_win) CALL mp_win_lock_all(buffer%data_win) END IF IF (do_win_create(2)) THEN CALL mp_win_create(buffer%meta, buffer%subgrp, buffer%meta_win) CALL mp_win_lock_all(buffer%meta_win) END IF ! buffer%has_rma_win = .TRUE. CALL timestop(handle) END SUBROUTINE win_setup