Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=dp), | public, | pointer | :: | ptr(:) | => | null() | |
integer(kind=MPIArg), | public | :: | win | ||||
integer(kind=TagIntType), | public | :: | tag | = | 0 |
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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(shared_array_real_t) | :: | this | ||||
integer(kind=int64), | intent(in) | :: | size | |||
character(len=*), | intent(in), | optional | :: | name |
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)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(shared_array_real_t) | :: | 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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(shared_array_real_t) | :: | this |
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