| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | public, | pointer | :: | ptr(:) | => | null() | |
| type(MPI_Win), | public | :: | win | ||||
| integer(kind=TagIntType), | public | :: | tag | = | 0 |
Wrapper for shared_allocate_mpi that tests if the pointer is associated
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shared_array_real_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | size |
size of the memory segment to be allocated |
||
| character(len=*), | intent(in), | optional | :: | name |
wrapper for shared_deallocate_mpi that tests if the pointer is associated
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shared_array_real_t), | intent(inout) | :: | 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), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shared_array_real_t), | intent(in) | :: | 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 type(MPI_Win) :: 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 procedure :: get_memory_demand => get_memory_demand_real end type shared_array_real_t