shared_array_real_t Derived Type

type, public :: shared_array_real_t


Contents

Source Code


Components

Type Visibility Attributes Name Initial
real(kind=dp), public, pointer :: ptr(:) => null()
integer(kind=MPIArg), public :: win
integer(kind=TagIntType), public :: tag = 0

Type-Bound Procedures

procedure, public, :: shared_alloc => safe_shared_memory_alloc_real

  • private subroutine safe_shared_memory_alloc_real(this, size, name)

    Wrapper for shared_allocate_mpi that tests if the pointer is associated @param[out] win MPI shared memory window for internal MPI usage @param[out] ptr pointer to be allocated, on return points to a shared memory segment of given size @param[in] size size of the memory segment to be allocated

    Arguments

    Type IntentOptional Attributes Name
    class(shared_array_real_t) :: this
    integer(kind=int64), intent(in) :: size
    character(len=*), intent(in), optional :: name

procedure, public, :: shared_dealloc => safe_shared_memory_dealloc_real

  • private subroutine safe_shared_memory_dealloc_real(this)

    wrapper for shared_deallocate_mpi that tests if the pointer is associated @param[in,out] win MPI shared memory window for internal MPI usage @param[in,out] ptr pointer to be deallocated (if associated)

    Arguments

    Type IntentOptional Attributes Name
    class(shared_array_real_t) :: this

procedure, public, :: sync => sync_real

  • private subroutine sync_real(this)

    callls MPI_Win_Sync on the array’s shared memory window to sync rma This has to be called between read/write epochs to ensure all tasks of a node are looking at the same shared data

    Arguments

    Type IntentOptional Attributes Name
    class(shared_array_real_t) :: this

Source Code

    type :: shared_array_real_t
        ! They contain a ptr (access to the array)
        ! WARNING: DO NOT MANUALLY RE-ASSIGN ptr, THIS WILL MOST LIKELY BREAK STUFF
        real(dp), pointer :: ptr(:) => null()
        ! and an MPI window
        integer(MPIArg) :: win
        ! Tag for the NECI memory manager
        integer(TagIntType) :: tag = 0
    contains
        ! allocation and deallocation routines
        procedure :: shared_alloc => safe_shared_memory_alloc_real
        procedure :: shared_dealloc => safe_shared_memory_dealloc_real
        procedure :: sync => sync_real
    end type shared_array_real_t