darrays_core Module

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.


Uses

  • 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

Used by

  • module~~darrays_core~~UsedByGraph module~darrays_core darrays_core module~darrays darrays module~darrays->module~darrays_core

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

public interface darray_acc

  • private subroutine darray_acc_dp(handle, ilo, ihi, jlo, jhi, buffer)

    Arguments

    Type IntentOptional 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 IntentOptional 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 IntentOptional 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 IntentOptional 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(*)

public interface darray_create

  • private subroutine darray_create_dp(nrows, ncols, handle, init_val)

    Arguments

    Type IntentOptional 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 IntentOptional 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 IntentOptional 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 IntentOptional 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

public interface darray_get

  • private subroutine darray_get_dp(handle, ilo, ihi, jlo, jhi, buffer)

    Arguments

    Type IntentOptional 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 IntentOptional 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 IntentOptional 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 IntentOptional 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(*)

public interface darray_put

  • private subroutine darray_put_dp(handle, ilo, ihi, jlo, jhi, buffer)

    Arguments

    Type IntentOptional 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 IntentOptional 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 IntentOptional 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 IntentOptional 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

private function find_free_slot() result(slot)

Find a free registry slot

Arguments

None

Return Value integer(kind=int32)


Subroutines

public subroutine darray_destroy(handle)

Destroy a distributed array

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: handle

public subroutine darray_distrib(handle, rank, ilo, ihi, jlo, jhi)

Query distribution for a rank

Arguments

Type IntentOptional 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

public subroutine darrays_finalize()

Finalize the distributed arrays module

Arguments

None

public subroutine darrays_init(comm)

Initialize the distributed arrays module

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm

private subroutine darray_acc_dp(handle, ilo, ihi, jlo, jhi, buffer)

Arguments

Type IntentOptional 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_i32(handle, ilo, ihi, jlo, jhi, buffer)

Arguments

Type IntentOptional 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 IntentOptional 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_acc_sp(handle, ilo, ihi, jlo, jhi, buffer)

Arguments

Type IntentOptional 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_create_dp(nrows, ncols, handle, init_val)

Arguments

Type IntentOptional 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_i32(nrows, ncols, handle, init_val)

Arguments

Type IntentOptional 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 IntentOptional 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_create_sp(nrows, ncols, handle, init_val)

Arguments

Type IntentOptional 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_get_dp(handle, ilo, ihi, jlo, jhi, buffer)

Arguments

Type IntentOptional 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_i32(handle, ilo, ihi, jlo, jhi, buffer)

Arguments

Type IntentOptional 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 IntentOptional 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_get_sp(handle, ilo, ihi, jlo, jhi, buffer)

Arguments

Type IntentOptional 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_put_dp(handle, ilo, ihi, jlo, jhi, buffer)

Arguments

Type IntentOptional 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_i32(handle, ilo, ihi, jlo, jhi, buffer)

Arguments

Type IntentOptional 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 IntentOptional 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_put_sp(handle, ilo, ihi, jlo, jhi, buffer)

Arguments

Type IntentOptional 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(*)