![]() |
ScalES-PPM
|
distributed array implementation, optimized for read-only access in parallel phase More...
Data Types | |
type | ppm_distributed_array::global_array_desc |
describes one array-like global data structure to be distributed More... | |
type | ppm_distributed_array::dist_mult_array |
dist_mult_array describes a global array where each rank only holds a part of the whole and this object can be used to access values stored on other ranks. More... | |
interface | ppm_distributed_array::dist_mult_array_local_ptr |
get POINTER to local portion of sub-array More... | |
Functions/Subroutines | |
type(dist_mult_array) function, public | ppm_distributed_array::dist_mult_array_new (sub_arrays, local_chunk, comm, cache_size, sync_mode) |
Get value out of distributed multi-array, independent of rank the data resides on. | |
type(dist_mult_array) function, public | ppm_distributed_array::dist_mult_array_copy (dm_array) |
copy dist_mult_array data type | |
subroutine, public | ppm_distributed_array::dist_mult_array_delete (dm_array) |
destruct dist_mult_array data type | |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_c (dm_array, sub_array_idx, sub_array_ptr) |
retrieve TYPE(c_ptr) to local chunk | |
subroutine, public | ppm_distributed_array::dist_mult_array_expose (dm_array) |
make local data available to other ranks | |
subroutine, public | ppm_distributed_array::dist_mult_array_unexpose (dm_array) |
wait for all ranks to finish queries in current exposure epoch | |
subroutine, public | ppm_distributed_array::dist_mult_array_rma_sync (dm_array) |
synchronize RMA updates only, ignore local updates | |
integer function, public | ppm_distributed_array::dist_mult_array_get_sync_mode (dm_array) |
query sync protocol | |
subroutine, public | ppm_distributed_array::dist_mult_array_set_sync_mode (dm_array, sync_mode, cache_size) |
change sync protocol | |
subroutine | ppm_distributed_array::dist_mult_array_rank_rect (dm_array, sub_array_idx, rank, rect) |
integer function, public | ppm_distributed_array::dist_mult_array_comm (dm_array) |
subroutine, public | ppm_distributed_array::dist_mult_array_set_transfer_mode (dm_array, mode) |
integer function, public | ppm_distributed_array::dist_mult_array_get_transfer_mode (dm_array) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i4_1d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i4_2d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i4_3d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i4_4d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i4_5d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i4_6d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i4_7d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i8_1d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i8_2d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i8_3d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i8_4d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i8_5d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i8_6d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_i8_7d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_l_1d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_l_2d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_l_3d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_l_4d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_l_5d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_l_6d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_l_7d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_sp_1d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_sp_2d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_sp_3d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_sp_4d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_sp_5d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_sp_6d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_sp_7d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_dp_1d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_dp_2d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_dp_3d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_dp_4d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_dp_5d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_dp_6d (dm_array, sub_array_idx, sub_array_ptr) |
subroutine | ppm_distributed_array::dist_mult_array_local_ptr_dp_7d (dm_array, sub_array_idx, sub_array_ptr) |
distributed array implementation, optimized for read-only access in parallel phase
type(dist_mult_array) function, public ppm_distributed_array::dist_mult_array_copy | ( | type(dist_mult_array), intent(inout) | dm_array | ) |
copy dist_mult_array data type
[in,out] | dm_array | distributed multi-array to copy |
subroutine, public ppm_distributed_array::dist_mult_array_delete | ( | type(dist_mult_array), intent(inout) | dm_array | ) |
destruct dist_mult_array data type
[in,out] | dm_array | distributed multi-array to delete |
subroutine, public ppm_distributed_array::dist_mult_array_expose | ( | type(dist_mult_array), intent(inout) | dm_array | ) |
make local data available to other ranks
This call is collective for all ranks in the communicator used to create dm_array
note: this enters an exposure epoch on the data shared via RMA local data must not be changed while the array is in exposed state
type(dist_mult_array) function, public ppm_distributed_array::dist_mult_array_new | ( | type(global_array_desc), dimension(:), intent(in) | sub_arrays, |
type(extent), dimension(:, :), intent(in) | local_chunk, | ||
integer, intent(in) | comm, | ||
integer, intent(in), optional | cache_size, | ||
integer, intent(in), optional | sync_mode ) |
Get value out of distributed multi-array, independent of rank the data resides on.
For example, to query the data assigned in the example for dist_mult_array_local_ptr, use a query like this:
In case dma was initialized with sync_mode=sync_mode_active_target, the value of i5 must not be accessed before calling a synchronizing routine, either
or
create distributed multi-array data structure
The resulting data type represents a number of arrays distributed over the ranks of the communicator passed to this function.
[in] | sub_arrays | gives number (by its size), array ranks, data types and bounds of each distributed global array. The bounds are represented by an extent type that stores start and size. |
[in] | local_chunk | local_chunk(i, j) describes for dimension i of sub_array j of the global arrays the local part available on this MPI rank. Only contiguous local parts are possible. SIZE(local_chunk, 2) must match SIZE(sub_arrays) and SHAPE(local_chunk) = (/ max_rank or more, num_sub_arrays /) |
[in] | comm | MPI communicator for which this data structure is collectively created |
[in] | cache_size | number of ranks to cache remote local parts of |
[in] | sync_mode | switch synchronization modes, either sync_mode_passive_target (the default) or sync_mode_active_target_mode. For sync_mode=sync_mode_active_target_mode, execution of RMA is deferred until the next synchronizing call (dist_mult_array_unexpose or dist_mult_array_rma_sync). (see dist_mult_array_get for example) |
subroutine, public ppm_distributed_array::dist_mult_array_rma_sync | ( | type(dist_mult_array), intent(inout) | dm_array | ) |
synchronize RMA updates only, ignore local updates
This call is collective for all ranks in the communicator used to create dm_array. Also dm_array must be in exposed state.
subroutine, public ppm_distributed_array::dist_mult_array_set_sync_mode | ( | type(dist_mult_array), intent(inout) | dm_array, |
integer, intent(in) | sync_mode, | ||
integer, intent(in), optional | cache_size ) |
change sync protocol
This call is collective for all ranks in the communicator used to create dm_array
note: this ends an exposure epoch on the data shared via RMA
[in,out] | dm_array | distributed multiple arrays to change access/sync mode for |
[in] | sync_mode | new sync mode to set |
[in] | cache_size | in case sync_mode is sync_mode_passive_target, the number of ranks to cache data for is set to this value (or determined automatically if 0 or not present) |
subroutine, public ppm_distributed_array::dist_mult_array_unexpose | ( | type(dist_mult_array), intent(inout) | dm_array | ) |
wait for all ranks to finish queries in current exposure epoch
This call is collective for all ranks in the communicator used to create dm_array
note: local data can only be changed after the distributed array was initially created or dist_mult_array_unexpose has been called
Das diesem Bericht zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung, und Forschung unter dem Förderkennzeichen 01IH08004E gefördert. Die Verantwortung für den Inhalt dieser Veröffentlichung liegt beim Autor.