create_win_dp_array Function

private function create_win_dp_array(comm, base, win_size) result(win)

Create MPI window for RMA operations

Creates a window exposing local memory to remote RMA operations. Used for DDI distributed arrays.

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), target :: base(:)
integer(kind=MPI_ADDRESS_KIND), intent(in) :: win_size

Return Value type(win_t)


Calls

proc~~create_win_dp_array~~CallsGraph proc~create_win_dp_array create_win_dp_array mpi_win_create mpi_win_create proc~create_win_dp_array->mpi_win_create proc~comm_get comm_t%comm_get proc~create_win_dp_array->proc~comm_get

Called by

proc~~create_win_dp_array~~CalledByGraph proc~create_win_dp_array create_win_dp_array interface~win_create win_create interface~win_create->proc~create_win_dp_array

Variables

Type Visibility Attributes Name Initial
integer(kind=int32), private :: disp_unit
integer(kind=int32), private :: ierr

Source Code

   function create_win_dp_array(comm, base, win_size) result(win)
      !! Create MPI window for RMA operations
      !!
      !! Creates a window exposing local memory to remote RMA operations.
      !! Used for DDI distributed arrays.
      type(comm_t), intent(in) :: comm
      real(dp), target :: base(:)
      integer(MPI_ADDRESS_KIND), intent(in) :: win_size
      type(win_t) :: win
      integer(int32) :: ierr
      integer(int32) :: disp_unit

      disp_unit = int(storage_size(base(1))/8_int32, int32)
      call MPI_Win_create(base, win_size, disp_unit, &
                          MPI_INFO_NULL, comm%get(), win%m_win, ierr)
      win%is_valid = .true.
   end function create_win_dp_array