win_t Derived Type

type, public :: win_t


Components

Type Visibility Attributes Name Initial
logical, private :: is_valid = .false.
integer, private :: m_win = MPI_WIN_NULL

Type-Bound Procedures

procedure, public :: accumulate_dp => win_accumulate_dp

  • private subroutine win_accumulate_dp(this, target_rank, target_disp, count, buffer, op)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    real(kind=dp), intent(in) :: buffer(*)
    integer, intent(in), optional :: op

procedure, public :: accumulate_i32 => win_accumulate_i32

  • private subroutine win_accumulate_i32(this, target_rank, target_disp, count, buffer, op)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    integer(kind=int32), intent(in) :: buffer(*)
    integer, intent(in), optional :: op

procedure, public :: accumulate_i64 => win_accumulate_i64

  • private subroutine win_accumulate_i64(this, target_rank, target_disp, count, buffer, op)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    integer(kind=int64), intent(in) :: buffer(*)
    integer, intent(in), optional :: op

procedure, public :: accumulate_sp => win_accumulate_sp

  • private subroutine win_accumulate_sp(this, target_rank, target_disp, count, buffer, op)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    real(kind=sp), intent(in) :: buffer(*)
    integer, intent(in), optional :: op

procedure, public :: fence => win_fence

  • private subroutine win_fence(this, assert)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in), optional :: assert

procedure, public :: fetch_and_add_i64 => win_fetch_and_add_i64

  • private subroutine win_fetch_and_add_i64(this, target_rank, target_disp, value, result)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer(kind=int64), intent(in) :: value
    integer(kind=int64), intent(out) :: result

procedure, public :: finalize => win_finalize

  • private subroutine win_finalize(this)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(inout) :: this

procedure, public :: flush => win_flush

  • private subroutine win_flush(this, rank)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: rank

procedure, public :: flush_all => win_flush_all

  • private subroutine win_flush_all(this)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this

procedure, public :: get_dp => win_get_dp

  • private subroutine win_get_dp(this, target_rank, target_disp, count, buffer)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    real(kind=dp), intent(out) :: buffer(*)

procedure, public :: get_handle => win_get_handle

  • private function win_get_handle(this) result(mpi_win_out)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this

    Return Value integer

procedure, public :: get_i32 => win_get_i32

  • private subroutine win_get_i32(this, target_rank, target_disp, count, buffer)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    integer(kind=int32), intent(out) :: buffer(*)

procedure, public :: get_i64 => win_get_i64

  • private subroutine win_get_i64(this, target_rank, target_disp, count, buffer)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    integer(kind=int64), intent(out) :: buffer(*)

procedure, public :: get_sp => win_get_sp

  • private subroutine win_get_sp(this, target_rank, target_disp, count, buffer)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    real(kind=sp), intent(out) :: buffer(*)

procedure, public :: is_null => win_is_null

  • private pure function win_is_null(this) result(is_null)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this

    Return Value logical

procedure, public :: lock => win_lock

  • private subroutine win_lock(this, rank, lock_type)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: rank
    integer, intent(in), optional :: lock_type

procedure, public :: lock_all => win_lock_all

  • private subroutine win_lock_all(this, assert)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in), optional :: assert

procedure, public :: put_dp => win_put_dp

  • private subroutine win_put_dp(this, target_rank, target_disp, count, buffer)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    real(kind=dp), intent(in) :: buffer(*)

procedure, public :: put_i32 => win_put_i32

  • private subroutine win_put_i32(this, target_rank, target_disp, count, buffer)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    integer(kind=int32), intent(in) :: buffer(*)

procedure, public :: put_i64 => win_put_i64

  • private subroutine win_put_i64(this, target_rank, target_disp, count, buffer)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    integer(kind=int64), intent(in) :: buffer(*)

procedure, public :: put_sp => win_put_sp

  • private subroutine win_put_sp(this, target_rank, target_disp, count, buffer)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    real(kind=sp), intent(in) :: buffer(*)

procedure, public :: rget_dp => win_rget_dp

  • private subroutine win_rget_dp(this, target_rank, target_disp, count, buffer, request)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    real(kind=dp), intent(out) :: buffer(*)
    type(request_t), intent(out) :: request

procedure, public :: rget_i32 => win_rget_i32

  • private subroutine win_rget_i32(this, target_rank, target_disp, count, buffer, request)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    integer(kind=int32), intent(out) :: buffer(*)
    type(request_t), intent(out) :: request

procedure, public :: rget_i64 => win_rget_i64

  • private subroutine win_rget_i64(this, target_rank, target_disp, count, buffer, request)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    integer(kind=int64), intent(out) :: buffer(*)
    type(request_t), intent(out) :: request

procedure, public :: rget_sp => win_rget_sp

  • private subroutine win_rget_sp(this, target_rank, target_disp, count, buffer, request)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    real(kind=sp), intent(out) :: buffer(*)
    type(request_t), intent(out) :: request

procedure, public :: rput_dp => win_rput_dp

  • private subroutine win_rput_dp(this, target_rank, target_disp, count, buffer, request)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    real(kind=dp), intent(in) :: buffer(*)
    type(request_t), intent(out) :: request

procedure, public :: rput_i32 => win_rput_i32

  • private subroutine win_rput_i32(this, target_rank, target_disp, count, buffer, request)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    integer(kind=int32), intent(in) :: buffer(*)
    type(request_t), intent(out) :: request

procedure, public :: rput_i64 => win_rput_i64

  • private subroutine win_rput_i64(this, target_rank, target_disp, count, buffer, request)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    integer(kind=int64), intent(in) :: buffer(*)
    type(request_t), intent(out) :: request

procedure, public :: rput_sp => win_rput_sp

  • private subroutine win_rput_sp(this, target_rank, target_disp, count, buffer, request)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: target_rank
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
    integer, intent(in) :: count
    real(kind=sp), intent(in) :: buffer(*)
    type(request_t), intent(out) :: request

procedure, public :: unlock => win_unlock

  • private subroutine win_unlock(this, rank)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this
    integer, intent(in) :: rank

procedure, public :: unlock_all => win_unlock_all

  • private subroutine win_unlock_all(this)

    Arguments

    Type IntentOptional Attributes Name
    class(win_t), intent(in) :: this

Source Code

   type :: win_t
      private
      integer :: m_win = MPI_WIN_NULL
      logical :: is_valid = .false.
   contains
      procedure :: is_null => win_is_null
      procedure :: get_handle => win_get_handle
      procedure :: fence => win_fence
      procedure :: lock => win_lock
      procedure :: unlock => win_unlock
      procedure :: lock_all => win_lock_all
      procedure :: unlock_all => win_unlock_all
      procedure :: flush => win_flush
      procedure :: flush_all => win_flush_all
      procedure :: get_dp => win_get_dp
      procedure :: put_dp => win_put_dp
      procedure :: rget_dp => win_rget_dp
      procedure :: rput_dp => win_rput_dp
      procedure :: accumulate_dp => win_accumulate_dp
      procedure :: get_sp => win_get_sp
      procedure :: put_sp => win_put_sp
      procedure :: rget_sp => win_rget_sp
      procedure :: rput_sp => win_rput_sp
      procedure :: accumulate_sp => win_accumulate_sp
      procedure :: get_i32 => win_get_i32
      procedure :: put_i32 => win_put_i32
      procedure :: rget_i32 => win_rget_i32
      procedure :: rput_i32 => win_rput_i32
      procedure :: accumulate_i32 => win_accumulate_i32
      procedure :: get_i64 => win_get_i64
      procedure :: put_i64 => win_put_i64
      procedure :: rget_i64 => win_rget_i64
      procedure :: rput_i64 => win_rput_i64
      procedure :: accumulate_i64 => win_accumulate_i64
      procedure :: fetch_and_add_i64 => win_fetch_and_add_i64
      procedure :: finalize => win_finalize
   end type win_t