Core distributed array operations
Provides create, destroy, get, put, accumulate operations for
DDI-style distributed 2D arrays built on MPI-3 RMA.
Supports dp, sp, i32, and i64 data types.
module~~darrays_core~~UsesGraph
module~darrays_core
darrays_core
module~darrays_distrib
darrays_distrib
module~darrays_core->module~darrays_distrib
module~darrays_types
darrays_types
module~darrays_core->module~darrays_types
module~pic_mpi_lib
pic_mpi_lib
module~darrays_core->module~pic_mpi_lib
mpi_f08
mpi_f08
module~darrays_core->mpi_f08
pic_types
pic_types
module~darrays_core->pic_types
module~darrays_distrib->mpi_f08
module~darrays_distrib->pic_types
module~darrays_types->module~pic_mpi_lib
module~darrays_types->pic_types
module~pic_mpi_f08
pic_mpi_f08
module~pic_mpi_lib->module~pic_mpi_f08
module~pic_mpi_f08->mpi_f08
module~pic_mpi_f08->pic_types
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
module~~darrays_core~~UsedByGraph
module~darrays_core
darrays_core
module~darrays
darrays
module~darrays->module~darrays_core
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Variables
Type
Visibility Attributes
Name
Initial
integer(kind=int32),
private,
parameter
::
MAX_ARRAYS
=
100
type(comm_t ),
private,
save
::
global_comm
logical,
private,
save
::
initialized
=
.false.
type(darray_t ),
private,
target, save
::
registry (MAX_ARRAYS)
Interfaces
private subroutine darray_acc_dp (handle, ilo, ihi, jlo, jhi, buffer)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
real(kind=dp),
intent(in)
::
buffer (*)
private subroutine darray_acc_sp (handle, ilo, ihi, jlo, jhi, buffer)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
real(kind=sp),
intent(in)
::
buffer (*)
private subroutine darray_acc_i32 (handle, ilo, ihi, jlo, jhi, buffer)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
integer(kind=int32),
intent(in)
::
buffer (*)
private subroutine darray_acc_i64 (handle, ilo, ihi, jlo, jhi, buffer)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
integer(kind=int64),
intent(in)
::
buffer (*)
private subroutine darray_create_dp (nrows, ncols, handle, init_val)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
nrows
integer(kind=int32),
intent(in)
::
ncols
integer(kind=int32),
intent(out)
::
handle
real(kind=dp),
intent(in)
::
init_val
private subroutine darray_create_sp (nrows, ncols, handle, init_val)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
nrows
integer(kind=int32),
intent(in)
::
ncols
integer(kind=int32),
intent(out)
::
handle
real(kind=sp),
intent(in)
::
init_val
private subroutine darray_create_i32 (nrows, ncols, handle, init_val)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
nrows
integer(kind=int32),
intent(in)
::
ncols
integer(kind=int32),
intent(out)
::
handle
integer(kind=int32),
intent(in)
::
init_val
private subroutine darray_create_i64 (nrows, ncols, handle, init_val)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
nrows
integer(kind=int32),
intent(in)
::
ncols
integer(kind=int32),
intent(out)
::
handle
integer(kind=int64),
intent(in)
::
init_val
private subroutine darray_get_dp (handle, ilo, ihi, jlo, jhi, buffer)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
real(kind=dp),
intent(out)
::
buffer (*)
private subroutine darray_get_sp (handle, ilo, ihi, jlo, jhi, buffer)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
real(kind=sp),
intent(out)
::
buffer (*)
private subroutine darray_get_i32 (handle, ilo, ihi, jlo, jhi, buffer)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
integer(kind=int32),
intent(out)
::
buffer (*)
private subroutine darray_get_i64 (handle, ilo, ihi, jlo, jhi, buffer)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
integer(kind=int64),
intent(out)
::
buffer (*)
private subroutine darray_put_dp (handle, ilo, ihi, jlo, jhi, buffer)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
real(kind=dp),
intent(in)
::
buffer (*)
private subroutine darray_put_sp (handle, ilo, ihi, jlo, jhi, buffer)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
real(kind=sp),
intent(in)
::
buffer (*)
private subroutine darray_put_i32 (handle, ilo, ihi, jlo, jhi, buffer)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
integer(kind=int32),
intent(in)
::
buffer (*)
private subroutine darray_put_i64 (handle, ilo, ihi, jlo, jhi, buffer)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
integer(kind=int64),
intent(in)
::
buffer (*)
Functions
Find a free registry slot
Arguments
None
Return Value
integer(kind=int32)
Subroutines
Destroy a distributed array
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
Query distribution for a rank
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
rank
integer(kind=int32),
intent(out)
::
ilo
integer(kind=int32),
intent(out)
::
ihi
integer(kind=int32),
intent(out)
::
jlo
integer(kind=int32),
intent(out)
::
jhi
Finalize the distributed arrays module
Arguments
None
Initialize the distributed arrays module
Arguments
Type
Intent Optional Attributes
Name
type(comm_t ),
intent(in)
::
comm
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
real(kind=dp),
intent(in)
::
buffer (*)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
integer(kind=int32),
intent(in)
::
buffer (*)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
integer(kind=int64),
intent(in)
::
buffer (*)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
real(kind=sp),
intent(in)
::
buffer (*)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
nrows
integer(kind=int32),
intent(in)
::
ncols
integer(kind=int32),
intent(out)
::
handle
real(kind=dp),
intent(in)
::
init_val
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
nrows
integer(kind=int32),
intent(in)
::
ncols
integer(kind=int32),
intent(out)
::
handle
integer(kind=int32),
intent(in)
::
init_val
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
nrows
integer(kind=int32),
intent(in)
::
ncols
integer(kind=int32),
intent(out)
::
handle
integer(kind=int64),
intent(in)
::
init_val
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
nrows
integer(kind=int32),
intent(in)
::
ncols
integer(kind=int32),
intent(out)
::
handle
real(kind=sp),
intent(in)
::
init_val
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
real(kind=dp),
intent(out)
::
buffer (*)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
integer(kind=int32),
intent(out)
::
buffer (*)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
integer(kind=int64),
intent(out)
::
buffer (*)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
real(kind=sp),
intent(out)
::
buffer (*)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
real(kind=dp),
intent(in)
::
buffer (*)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
integer(kind=int32),
intent(in)
::
buffer (*)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
integer(kind=int64),
intent(in)
::
buffer (*)
Arguments
Type
Intent Optional Attributes
Name
integer(kind=int32),
intent(in)
::
handle
integer(kind=int32),
intent(in)
::
ilo
integer(kind=int32),
intent(in)
::
ihi
integer(kind=int32),
intent(in)
::
jlo
integer(kind=int32),
intent(in)
::
jhi
real(kind=sp),
intent(in)
::
buffer (*)