pic_mpi Module

Legacy MPI wrapper module using traditional MPI interface

This module provides a high-level object-oriented interface to MPI using the legacy MPI bindings for compatibility with older MPI implementations. It provides the same API as pic_mpi_f08 but uses integer-based MPI handles. MPI-3 Window type for one-sided communication (RMA) - legacy version

Wraps MPI window handles to provide object-oriented interface for Remote Memory Access (RMA) operations needed for DDI MPI communicator wrapper type for legacy MPI Create MPI window for RMA operations

Creates a window exposing local memory to remote RMA operations. Used for DDI distributed arrays. Create dynamic MPI window

For windows where memory will be attached later. Useful for load balancing counters. Allocate window memory and create window in one call (1D array) Allocate window memory and create window in one call (2D array) Allocate window memory for single precision 1D array Allocate window memory for int32 1D array Allocate window memory for int64 1D array Fence synchronization for active target RMA

Completes all pending RMA operations. Use before/after Get/Put/Accumulate operations. Lock window for passive target RMA

Begins RMA access epoch for specified target rank. Must be paired with unlock. Unlock window for passive target RMA Lock window on all ranks for passive target RMA Unlock window on all ranks for passive target RMA Flush pending RMA operations to a specific rank Flush pending RMA operations to all ranks Get data from remote window

Retrieves data from target rank’s window into local buffer. Must be called between fence or lock/unlock pairs. Put data to remote window

Sends data from local buffer to target rank’s window. Must be called between fence or lock/unlock pairs. Non-blocking get data from remote window Non-blocking put data to remote window Accumulate data to remote window

Atomically adds local buffer to target rank’s window. Critical for DDI_ACC (Fock matrix accumulation). Atomic fetch-and-add for load balancing

Atomically increments remote counter and returns old value. Used for DDI_DLBNEXT (dynamic load balancing). Allreduce for scalar double precision

In-place global reduction. Replaces DDI_GSUMF for scalars. Allreduce for double precision array

In-place global reduction. Replaces DDI_GSUMF for arrays. This is THE most-called DDI function (1,301 calls in GAMESS). Allreduce for scalar integer

In-place global reduction. Replaces DDI_GSUMI for scalars. Allreduce for integer array

In-place global reduction. Replaces DDI_GSUMI for arrays. Non-in-place allreduce for scalar double precision

Reduces sendbuf and stores result in recvbuf. Useful for timestep reduction where local value must be preserved. Non-in-place allreduce for double precision array

Reduces sendbuf and stores result in recvbuf. Allreduce for single-precision scalar Allreduce for single-precision array Non-in-place allreduce for scalar single-precision Non-in-place allreduce for single-precision array


Uses

    • mpi
    • pic_types
  • module~~pic_mpi~~UsesGraph module~pic_mpi pic_mpi mpi mpi module~pic_mpi->mpi pic_types pic_types module~pic_mpi->pic_types

Interfaces

public interface allgather

  • private subroutine comm_allgather_integer(comm, sendbuf, recvbuf)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(in) :: sendbuf
    integer(kind=int32), intent(out) :: recvbuf(:)

public interface allreduce

  • private subroutine allreduce_dp(comm, buffer, op)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(inout) :: buffer
    integer, intent(in), optional :: op
  • private subroutine allreduce_dp_array(comm, buffer, count, op)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(inout) :: buffer(:)
    integer, intent(in), optional :: count
    integer, intent(in), optional :: op
  • private subroutine allreduce_sp(comm, buffer, op)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(inout) :: buffer
    integer, intent(in), optional :: op
  • private subroutine allreduce_sp_array(comm, buffer, count, op)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(inout) :: buffer(:)
    integer, intent(in), optional :: count
    integer, intent(in), optional :: op
  • private subroutine allreduce_i32(comm, buffer, op)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(inout) :: buffer
    integer, intent(in), optional :: op
  • private subroutine allreduce_i32_array(comm, buffer, count, op)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(inout) :: buffer(:)
    integer, intent(in), optional :: count
    integer, intent(in), optional :: op
  • private subroutine allreduce_dp_to(comm, sendbuf, recvbuf, op)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(in) :: sendbuf
    real(kind=dp), intent(out) :: recvbuf
    integer, intent(in), optional :: op
  • private subroutine allreduce_dp_array_to(comm, sendbuf, recvbuf, count, op)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(in) :: sendbuf(:)
    real(kind=dp), intent(out) :: recvbuf(:)
    integer, intent(in), optional :: count
    integer, intent(in), optional :: op
  • private subroutine allreduce_sp_to(comm, sendbuf, recvbuf, op)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(in) :: sendbuf
    real(kind=sp), intent(out) :: recvbuf
    integer, intent(in), optional :: op
  • private subroutine allreduce_sp_array_to(comm, sendbuf, recvbuf, count, op)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(in) :: sendbuf(:)
    real(kind=sp), intent(out) :: recvbuf(:)
    integer, intent(in), optional :: count
    integer, intent(in), optional :: op

public interface bcast

  • private subroutine comm_bcast_integer(comm, buffer, count, root)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(inout) :: buffer
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: root
  • private subroutine comm_bcast_integer64(comm, buffer, count, root)

    Broadcasts integer64 data from root process to all processes in communicator

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int64), intent(inout) :: buffer
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: root
  • private subroutine comm_bcast_real_dp(comm, buffer, count, root)

    Broadcasts double precision data from root process to all processes in communicator

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(inout) :: buffer
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: root
  • private subroutine comm_bcast_real_dp_array(comm, buffer, count, root)

    Broadcasts double precision array from root process to all processes in communicator

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(inout) :: buffer(:)
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: root
  • private subroutine comm_bcast_real_sp(comm, buffer, count, root)

    Broadcasts single-precision data from root process to all processes in communicator

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(inout) :: buffer
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: root
  • private subroutine comm_bcast_real_sp_array(comm, buffer, count, root)

    Broadcasts single-precision array from root process to all processes in communicator

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(inout) :: buffer(:)
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: root

public interface comm_null

public interface comm_world

public interface iprobe

  • private subroutine comm_iprobe(comm, source, tag, message_pending, status)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    logical, intent(out) :: message_pending
    type(MPI_Status), intent(out) :: status

public interface irecv

  • private subroutine comm_irecv_integer(comm, data, source, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(out) :: data
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_irecv_integer_array(comm, data, source, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(out) :: data(:)
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_irecv_integer64(comm, data, source, tag, request)

    Initiates a non-blocking receive operation of an integer64

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int64), intent(out) :: data
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_irecv_integer64_array(comm, data, source, tag, request)

    Initiates a non-blocking receive operation of an integer64 array

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int64), intent(out) :: data(:)
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_irecv_real_dp(comm, data, source, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(out) :: data
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_irecv_real_dp_array(comm, data, source, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(out) :: data(:)
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_irecv_real_dp_array_2d(comm, data, source, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(inout), allocatable :: data(:,:)
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_irecv_real_sp(comm, data, source, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(out) :: data
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_irecv_real_sp_array(comm, data, source, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(out) :: data(:)
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_irecv_real_sp_array_2d(comm, data, source, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(inout), allocatable :: data(:,:)
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_irecv_logical(comm, data, source, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    logical, intent(out) :: data
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request

public interface isend

  • private subroutine comm_isend_integer(comm, data, dest, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(in) :: data
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_isend_integer_array(comm, data, dest, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(in) :: data(:)
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_isend_integer64(comm, data, dest, tag, request)

    Initiates a non-blocking send operation of an integer64

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int64), intent(in) :: data
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_isend_integer64_array(comm, data, dest, tag, request)

    Initiates a non-blocking send operation of an integer64 array

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int64), intent(in) :: data(:)
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_isend_real_dp(comm, data, dest, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(in) :: data
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_isend_real_dp_array(comm, data, dest, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(in) :: data(:)
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_isend_real_dp_array_2d(comm, data, dest, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(in) :: data(:,:)
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • public subroutine comm_isend_real_dp_array_2d_n(comm, data, count, dest, tag, request)

    Non-blocking send of a contiguous 2D dp array with explicit count. No dim-prefix protocol; pairs with comm_recv_real_dp_array_2d_n on the receive side.

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(in) :: data(:,:)
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_isend_real_sp(comm, data, dest, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(in) :: data
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_isend_real_sp_array(comm, data, dest, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(in) :: data(:)
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_isend_real_sp_array_2d(comm, data, dest, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(in) :: data(:,:)
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request
  • private subroutine comm_isend_logical(comm, data, dest, tag, request)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    logical, intent(in) :: data
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
    type(request_t), intent(out) :: request

public interface probe

  • private subroutine comm_probe(comm, source, tag, status)

    Blocking probe for incoming messages — caller reads status%MPI_SOURCE / status%MPI_TAG to dispatch the matching recv. Mirrors the f08 backend’s comm_probe.

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out) :: status

public interface recv

  • private subroutine comm_recv_integer(comm, data, source, tag, status)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(out) :: data
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out), optional :: status
  • private subroutine comm_recv_integer_array(comm, data, source, tag, status)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(out), allocatable :: data(:)
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out) :: status
  • private subroutine comm_recv_integer64(comm, data, source, tag, status)

    Blocking receive of an integer64 from specified source

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int64), intent(out) :: data
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out), optional :: status
  • private subroutine comm_recv_integer64_array(comm, data, source, tag, status)

    Blocking receive of an integer64 array from specified source

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int64), intent(out), allocatable :: data(:)
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out) :: status
  • private subroutine comm_recv_real_dp(comm, data, source, tag, status)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(out) :: data
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out), optional :: status
  • private subroutine comm_recv_real_dp_array(comm, data, source, tag, status)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(out), allocatable :: data(:)
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status) :: status
  • private subroutine comm_recv_real_dp_array_2d(comm, data, source, tag, status)

    Receive 2D real(dp) array (must be pre-allocated by receiver)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(inout), allocatable :: data(:,:)
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out) :: status
  • private subroutine comm_recv_real_sp(comm, data, source, tag, status)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(out) :: data
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out), optional :: status
  • private subroutine comm_recv_real_sp_array(comm, data, source, tag, status)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(out), allocatable :: data(:)
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status) :: status
  • private subroutine comm_recv_real_sp_array_2d(comm, data, source, tag, status)

    Receive 2D real(sp) array (must be pre-allocated by receiver)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(inout), allocatable :: data(:,:)
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out) :: status
  • private subroutine comm_recv_logical(comm, data, source, tag, status)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    logical, intent(out) :: data
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out), optional :: status
  • public subroutine comm_recv_integer_array_n(comm, data, count, source, tag, status)

    Blocking receive into a pre-allocated int32 array.

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(out) :: data(:)
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out), optional :: status
  • public subroutine comm_recv_integer64_array_n(comm, data, count, source, tag, status)

    Blocking receive into a pre-allocated int64 array.

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int64), intent(out) :: data(:)
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out), optional :: status
  • public subroutine comm_recv_real_dp_array_n(comm, data, count, source, tag, status)

    Blocking receive into a pre-allocated double-precision array.

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(out) :: data(:)
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out), optional :: status
  • public subroutine comm_recv_real_sp_array_n(comm, data, count, source, tag, status)

    Blocking receive into a pre-allocated single-precision array.

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(out) :: data(:)
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out), optional :: status
  • public subroutine comm_recv_real_dp_array_2d_n(comm, data, count, source, tag, status)

    Blocking recv of a contiguous 2D dp array with explicit count.

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(out) :: data(:,:)
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out), optional :: status
  • public subroutine comm_recv_integer_array_2d_n(comm, data, count, source, tag, status)

    Blocking recv of a contiguous 2D int32 array with explicit count.

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(out) :: data(:,:)
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: source
    integer(kind=int32), intent(in) :: tag
    type(MPI_Status), intent(out), optional :: status

public interface send

  • private subroutine comm_send_integer(comm, data, dest, tag)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(in) :: data
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
  • private subroutine comm_send_integer_array(comm, data, dest, tag)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(in) :: data(:)
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
  • private subroutine comm_send_integer64(comm, data, dest, tag)

    Blocking send of an integer64 to specified destination

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int64), intent(in) :: data
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
  • private subroutine comm_send_integer64_array(comm, data, dest, tag)

    Blocking send of an integer64 array to specified destination

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int64), intent(in) :: data(:)
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
  • private subroutine comm_send_real_dp(comm, data, dest, tag)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(in) :: data
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
  • private subroutine comm_send_real_dp_array(comm, data, dest, tag)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(in) :: data(:)
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
  • private subroutine comm_send_real_dp_array_2d(comm, data, dest, tag)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(in) :: data(:,:)
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
  • public subroutine comm_send_real_dp_array_2d_n(comm, data, count, dest, tag)

    Blocking send of a contiguous 2D dp array using an explicit count. No dim-prefix protocol — caller and receiver agree on shape externally.

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), intent(in) :: data(:,:)
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
  • public subroutine comm_send_integer_array_2d_n(comm, data, count, dest, tag)

    Blocking send of a contiguous 2D int32 array with explicit count.

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer(kind=int32), intent(in) :: data(:,:)
    integer(kind=int32), intent(in) :: count
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
  • private subroutine comm_send_real_sp(comm, data, dest, tag)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(in) :: data
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
  • private subroutine comm_send_real_sp_array(comm, data, dest, tag)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(in) :: data(:)
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
  • private subroutine comm_send_real_sp_array_2d(comm, data, dest, tag)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=sp), intent(in) :: data(:,:)
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag
  • private subroutine comm_send_logical(comm, data, dest, tag)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    logical, intent(in) :: data
    integer(kind=int32), intent(in) :: dest
    integer(kind=int32), intent(in) :: tag

public interface test

  • private subroutine request_test(request, flag, status)

    Arguments

    Type IntentOptional Attributes Name
    type(request_t), intent(inout) :: request
    logical, intent(out) :: flag
    type(MPI_Status), intent(out), optional :: status

public interface wait

  • private subroutine request_wait(request, status)

    Arguments

    Type IntentOptional Attributes Name
    type(request_t), intent(inout) :: request
    type(MPI_Status), intent(out), optional :: status

public interface waitall

  • private subroutine request_waitall(requests, statuses)

    Arguments

    Type IntentOptional Attributes Name
    type(request_t), intent(inout) :: requests(:)
    type(MPI_Status), intent(out), optional :: statuses(:)

public interface win_allocate

  • private subroutine create_win_allocate_dp_1d(comm, length, baseptr, win)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer, intent(in) :: length
    real(kind=dp), intent(out), pointer :: baseptr(:)
    type(win_t), intent(out) :: win
  • private subroutine create_win_allocate_dp_2d(comm, dim1, dim2, baseptr, win)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer, intent(in) :: dim1
    integer, intent(in) :: dim2
    real(kind=dp), intent(out), pointer :: baseptr(:,:)
    type(win_t), intent(out) :: win
  • private subroutine create_win_allocate_sp_1d(comm, length, baseptr, win)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer, intent(in) :: length
    real(kind=sp), intent(out), pointer :: baseptr(:)
    type(win_t), intent(out) :: win
  • private subroutine create_win_allocate_i32_1d(comm, length, baseptr, win)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer, intent(in) :: length
    integer(kind=int32), intent(out), pointer :: baseptr(:)
    type(win_t), intent(out) :: win
  • private subroutine create_win_allocate_i64_1d(comm, length, baseptr, win)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    integer, intent(in) :: length
    integer(kind=int64), intent(out), pointer :: baseptr(:)
    type(win_t), intent(out) :: win

public interface win_create

  • private function create_win_dp_array(comm, base, win_size) result(win)

    Arguments

    Type IntentOptional Attributes Name
    type(comm_t), intent(in) :: comm
    real(kind=dp), target, asynchronous :: base(:)
    integer(kind=MPI_ADDRESS_KIND), intent(in) :: win_size

    Return Value type(win_t)

public interface win_create_dynamic

  • private function create_win_dynamic(comm) result(win)

    Arguments

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

    Return Value type(win_t)


Derived Types

type, public ::  MPI_Status

MPI_Status wrapper type for legacy MPI compatibility

Read more…

Components

Type Visibility Attributes Name Initial
integer, public :: MPI_ERROR = 0

Error code

integer, public :: MPI_SOURCE = 0

Source rank of received message

integer, public :: MPI_TAG = 0

Tag of received message

integer, public :: internal(3) = 0

Additional status fields

type, public ::  comm_t

MPI communicator wrapper type for legacy MPI

Read more…

Components

Type Visibility Attributes Name Initial
logical, private :: is_valid = .false.

Validity flag

integer, private :: m_comm = MPI_COMM_NULL

Internal MPI communicator (integer handle)

integer(kind=int32), private :: m_rank = -1_int32

Cached rank in this communicator

integer(kind=int32), private :: m_size = -1_int32

Cached size of this communicator

Type-Bound Procedures

procedure, public :: barrier => comm_barrier

Synchronization barrier

procedure, public :: discard_leader => comm_discard_leader

Create communicator without leader

procedure, public :: discard_to => comm_discard_to

Create communicator with first N ranks

procedure, public :: duplicate => comm_duplicate

Duplicate communicator

procedure, public :: finalize => comm_finalize

Free communicator resources

procedure, public :: get => comm_get

Get underlying MPI communicator handle

procedure, public :: is_null => comm_is_null

Check if communicator is null

procedure, public :: leader => comm_leader

Check if this rank is leader (rank 0)

procedure, public :: rank => comm_rank

Get rank in communicator

procedure, public :: size => m_size_func

Get size of communicator

procedure, public :: split => comm_split_shared

Split into shared memory communicators

procedure, public :: split_by => comm_split_by_color

Split communicator by color

type, public ::  request_t

Request type for non-blocking MPI operations

Read more…

Components

Type Visibility Attributes Name Initial
logical, private :: is_valid = .false.

Validity flag

integer, private :: m_request = MPI_REQUEST_NULL

Internal MPI request handle (integer)

Type-Bound Procedures

procedure, public :: free => request_free

Free the request

procedure, public :: get => request_get

Get underlying MPI request handle

procedure, public :: is_null => request_is_null

Check if request is null

type, public ::  win_t

Components

Type Visibility Attributes Name Initial
logical, private :: is_valid = .false.
integer, private :: m_win = MPI_WIN_NULL

Type-Bound Procedures

procedure, public :: accumulate_dp => win_accumulate_dp
procedure, public :: accumulate_i32 => win_accumulate_i32
procedure, public :: accumulate_i64 => win_accumulate_i64
procedure, public :: accumulate_sp => win_accumulate_sp
procedure, public :: fence => win_fence
procedure, public :: fetch_and_add_i64 => win_fetch_and_add_i64
procedure, public :: finalize => win_finalize
procedure, public :: flush => win_flush
procedure, public :: flush_all => win_flush_all
procedure, public :: get_dp => win_get_dp
procedure, public :: get_handle => win_get_handle
procedure, public :: get_i32 => win_get_i32
procedure, public :: get_i64 => win_get_i64
procedure, public :: get_sp => win_get_sp
procedure, public :: is_null => win_is_null
procedure, public :: lock => win_lock
procedure, public :: lock_all => win_lock_all
procedure, public :: put_dp => win_put_dp
procedure, public :: put_i32 => win_put_i32
procedure, public :: put_i64 => win_put_i64
procedure, public :: put_sp => win_put_sp
procedure, public :: rget_dp => win_rget_dp
procedure, public :: rget_i32 => win_rget_i32
procedure, public :: rget_i64 => win_rget_i64
procedure, public :: rget_sp => win_rget_sp
procedure, public :: rput_dp => win_rput_dp
procedure, public :: rput_i32 => win_rput_i32
procedure, public :: rput_i64 => win_rput_i64
procedure, public :: rput_sp => win_rput_sp
procedure, public :: unlock => win_unlock
procedure, public :: unlock_all => win_unlock_all

Functions

public function pic_mpi_query_thread_level() result(thread_level)

Query the current MPI thread support level

Arguments

None

Return Value integer(kind=int32)

private function comm_discard_leader(this) result(new_comm)

Arguments

Type IntentOptional Attributes Name
class(comm_t), intent(in) :: this

Return Value type(comm_t)

private function comm_discard_to(this, num_ranks) result(new_comm)

Arguments

Type IntentOptional Attributes Name
class(comm_t), intent(in) :: this
integer, intent(in) :: num_ranks

Return Value type(comm_t)

private function comm_duplicate(this) result(new_comm)

Arguments

Type IntentOptional Attributes Name
class(comm_t), intent(in) :: this

Return Value type(comm_t)

private function comm_get(this) result(mpi_comm_out)

Arguments

Type IntentOptional Attributes Name
class(comm_t), intent(in) :: this

Return Value integer

private pure function comm_is_null(this) result(is_null)

Arguments

Type IntentOptional Attributes Name
class(comm_t), intent(in) :: this

Return Value logical

private pure function comm_leader(this) result(is_leader)

Arguments

Type IntentOptional Attributes Name
class(comm_t), intent(in) :: this

Return Value logical

private pure function comm_rank(this) result(rank)

Arguments

Type IntentOptional Attributes Name
class(comm_t), intent(in) :: this

Return Value integer

private function comm_split_by_color(this, color) result(new_comm)

Arguments

Type IntentOptional Attributes Name
class(comm_t), intent(in) :: this
integer, intent(in) :: color

Return Value type(comm_t)

private function comm_split_shared(this) result(new_comm)

Arguments

Type IntentOptional Attributes Name
class(comm_t), intent(in) :: this

Return Value type(comm_t)

private function create_comm_from_mpi(mpi_comm_in) result(comm)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: mpi_comm_in

Return Value type(comm_t)

private function create_null_comm() result(comm)

Arguments

None

Return Value type(comm_t)

private function create_win_dp_array(comm, base, win_size) result(win)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), target, asynchronous :: base(:)
integer(kind=MPI_ADDRESS_KIND), intent(in) :: win_size

Return Value type(win_t)

private function create_win_dynamic(comm) result(win)

Arguments

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

Return Value type(win_t)

private function create_world_comm() result(comm)

Arguments

None

Return Value type(comm_t)

private pure function m_size_func(this) result(size)

Arguments

Type IntentOptional Attributes Name
class(comm_t), intent(in) :: this

Return Value integer

private function request_get(this) result(mpi_request_out)

Arguments

Type IntentOptional Attributes Name
class(request_t), intent(in) :: this

Return Value integer

private pure function request_is_null(this) result(is_null)

Arguments

Type IntentOptional Attributes Name
class(request_t), intent(in) :: this

Return Value logical

private pure function status_array_to_type(status_array) result(status_type)

Convert legacy integer array status to MPI_Status type

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: status_array(MPI_STATUS_SIZE)

Return Value type(MPI_Status)

private pure function status_type_to_array(status_type) result(status_array)

Arguments

Type IntentOptional Attributes Name
type(MPI_Status), intent(in) :: status_type

Return Value integer, (MPI_STATUS_SIZE)

private function win_get_handle(this) result(mpi_win_out)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this

Return Value integer

private pure function win_is_null(this) result(is_null)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this

Return Value logical


Subroutines

public subroutine abort_comm(comm, errorcode)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(in) :: errorcode

public subroutine comm_irecv_real_dp_array_n(comm, data, count, source, tag, request)

Non-blocking receive with explicit count (for device pointers in host_data blocks)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp) :: data(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

public subroutine comm_irecv_real_sp_array_n(comm, data, count, source, tag, request)

Non-blocking receive with explicit count for single-precision (for device pointers in host_data blocks)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp) :: data(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

public subroutine comm_isend_real_dp_array_2d_n(comm, data, count, dest, tag, request)

Non-blocking send of a contiguous 2D dp array with explicit count. No dim-prefix protocol; pairs with comm_recv_real_dp_array_2d_n on the receive side.

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(in) :: data(:,:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

public subroutine comm_isend_real_dp_array_n(comm, data, count, dest, tag, request)

Non-blocking send with explicit count (for device pointers in host_data blocks)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp) :: data(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

public subroutine comm_isend_real_sp_array_n(comm, data, count, dest, tag, request)

Non-blocking send with explicit count for single-precision (for device pointers in host_data blocks)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp) :: data(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

public subroutine comm_recv_integer64_array_n(comm, data, count, source, tag, status)

Blocking receive into a pre-allocated int64 array.

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int64), intent(out) :: data(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out), optional :: status

public subroutine comm_recv_integer_array_2d_n(comm, data, count, source, tag, status)

Blocking recv of a contiguous 2D int32 array with explicit count.

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(out) :: data(:,:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out), optional :: status

public subroutine comm_recv_integer_array_n(comm, data, count, source, tag, status)

Blocking receive into a pre-allocated int32 array.

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(out) :: data(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out), optional :: status

public subroutine comm_recv_real_dp_array_2d_n(comm, data, count, source, tag, status)

Blocking recv of a contiguous 2D dp array with explicit count.

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(out) :: data(:,:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out), optional :: status

public subroutine comm_recv_real_dp_array_n(comm, data, count, source, tag, status)

Blocking receive into a pre-allocated double-precision array.

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(out) :: data(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out), optional :: status

public subroutine comm_recv_real_sp_array_n(comm, data, count, source, tag, status)

Blocking receive into a pre-allocated single-precision array.

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(out) :: data(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out), optional :: status

public subroutine comm_send_integer_array_2d_n(comm, data, count, dest, tag)

Blocking send of a contiguous 2D int32 array with explicit count.

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(in) :: data(:,:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

public subroutine comm_send_real_dp_array_2d_n(comm, data, count, dest, tag)

Blocking send of a contiguous 2D dp array using an explicit count. No dim-prefix protocol — caller and receiver agree on shape externally.

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(in) :: data(:,:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

public subroutine get_processor_name(name, namelen)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(inout) :: name
integer(kind=int32), intent(out) :: namelen

public subroutine pic_mpi_finalize(ierr)

Finalize MPI environment

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(out), optional :: ierr

public subroutine pic_mpi_init(requested_thread_level, provided_thread_level)

Initialize MPI environment with optional threading support

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in), optional :: requested_thread_level
integer(kind=int32), intent(out), optional :: provided_thread_level

private subroutine allreduce_dp(comm, buffer, op)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(inout) :: buffer
integer, intent(in), optional :: op

private subroutine allreduce_dp_array(comm, buffer, count, op)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(inout) :: buffer(:)
integer, intent(in), optional :: count
integer, intent(in), optional :: op

private subroutine allreduce_dp_array_to(comm, sendbuf, recvbuf, count, op)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(in) :: sendbuf(:)
real(kind=dp), intent(out) :: recvbuf(:)
integer, intent(in), optional :: count
integer, intent(in), optional :: op

private subroutine allreduce_dp_to(comm, sendbuf, recvbuf, op)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(in) :: sendbuf
real(kind=dp), intent(out) :: recvbuf
integer, intent(in), optional :: op

private subroutine allreduce_i32(comm, buffer, op)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(inout) :: buffer
integer, intent(in), optional :: op

private subroutine allreduce_i32_array(comm, buffer, count, op)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(inout) :: buffer(:)
integer, intent(in), optional :: count
integer, intent(in), optional :: op

private subroutine allreduce_sp(comm, buffer, op)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(inout) :: buffer
integer, intent(in), optional :: op

private subroutine allreduce_sp_array(comm, buffer, count, op)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(inout) :: buffer(:)
integer, intent(in), optional :: count
integer, intent(in), optional :: op

private subroutine allreduce_sp_array_to(comm, sendbuf, recvbuf, count, op)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(in) :: sendbuf(:)
real(kind=sp), intent(out) :: recvbuf(:)
integer, intent(in), optional :: count
integer, intent(in), optional :: op

private subroutine allreduce_sp_to(comm, sendbuf, recvbuf, op)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(in) :: sendbuf
real(kind=sp), intent(out) :: recvbuf
integer, intent(in), optional :: op

private subroutine comm_allgather_integer(comm, sendbuf, recvbuf)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(in) :: sendbuf
integer(kind=int32), intent(out) :: recvbuf(:)

private subroutine comm_barrier(this)

Arguments

Type IntentOptional Attributes Name
class(comm_t), intent(in) :: this

private subroutine comm_bcast_integer(comm, buffer, count, root)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(inout) :: buffer
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: root

private subroutine comm_bcast_integer64(comm, buffer, count, root)

Broadcasts integer64 data from root process to all processes in communicator

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int64), intent(inout) :: buffer
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: root

private subroutine comm_bcast_real_dp(comm, buffer, count, root)

Broadcasts double precision data from root process to all processes in communicator

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(inout) :: buffer
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: root

private subroutine comm_bcast_real_dp_array(comm, buffer, count, root)

Broadcasts double precision array from root process to all processes in communicator

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(inout) :: buffer(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: root

private subroutine comm_bcast_real_sp(comm, buffer, count, root)

Broadcasts single-precision data from root process to all processes in communicator

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(inout) :: buffer
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: root

private subroutine comm_bcast_real_sp_array(comm, buffer, count, root)

Broadcasts single-precision array from root process to all processes in communicator

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(inout) :: buffer(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in) :: root

private subroutine comm_finalize(this)

Arguments

Type IntentOptional Attributes Name
class(comm_t), intent(inout) :: this

private subroutine comm_iprobe(comm, source, tag, message_pending, status)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
logical, intent(out) :: message_pending
type(MPI_Status), intent(out) :: status

private subroutine comm_irecv_integer(comm, data, source, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(out) :: data
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_irecv_integer64(comm, data, source, tag, request)

Initiates a non-blocking receive operation of an integer64

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int64), intent(out) :: data
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_irecv_integer64_array(comm, data, source, tag, request)

Initiates a non-blocking receive operation of an integer64 array

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int64), intent(out) :: data(:)
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_irecv_integer_array(comm, data, source, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(out) :: data(:)
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_irecv_logical(comm, data, source, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
logical, intent(out) :: data
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_irecv_real_dp(comm, data, source, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(out) :: data
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_irecv_real_dp_array(comm, data, source, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(out) :: data(:)
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_irecv_real_dp_array_2d(comm, data, source, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(inout), allocatable :: data(:,:)
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_irecv_real_sp(comm, data, source, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(out) :: data
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_irecv_real_sp_array(comm, data, source, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(out) :: data(:)
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_irecv_real_sp_array_2d(comm, data, source, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(inout), allocatable :: data(:,:)
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_isend_integer(comm, data, dest, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(in) :: data
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_isend_integer64(comm, data, dest, tag, request)

Initiates a non-blocking send operation of an integer64

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int64), intent(in) :: data
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_isend_integer64_array(comm, data, dest, tag, request)

Initiates a non-blocking send operation of an integer64 array

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int64), intent(in) :: data(:)
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_isend_integer_array(comm, data, dest, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(in) :: data(:)
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_isend_logical(comm, data, dest, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
logical, intent(in) :: data
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_isend_real_dp(comm, data, dest, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(in) :: data
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_isend_real_dp_array(comm, data, dest, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(in) :: data(:)
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_isend_real_dp_array_2d(comm, data, dest, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(in) :: data(:,:)
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_isend_real_sp(comm, data, dest, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(in) :: data
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_isend_real_sp_array(comm, data, dest, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(in) :: data(:)
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_isend_real_sp_array_2d(comm, data, dest, tag, request)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(in) :: data(:,:)
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag
type(request_t), intent(out) :: request

private subroutine comm_probe(comm, source, tag, status)

Blocking probe for incoming messages — caller reads status%MPI_SOURCE / status%MPI_TAG to dispatch the matching recv. Mirrors the f08 backend’s comm_probe.

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out) :: status

private subroutine comm_recv_integer(comm, data, source, tag, status)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(out) :: data
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out), optional :: status

private subroutine comm_recv_integer64(comm, data, source, tag, status)

Blocking receive of an integer64 from specified source

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int64), intent(out) :: data
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out), optional :: status

private subroutine comm_recv_integer64_array(comm, data, source, tag, status)

Blocking receive of an integer64 array from specified source

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int64), intent(out), allocatable :: data(:)
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out) :: status

private subroutine comm_recv_integer_array(comm, data, source, tag, status)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(out), allocatable :: data(:)
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out) :: status

private subroutine comm_recv_logical(comm, data, source, tag, status)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
logical, intent(out) :: data
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out), optional :: status

private subroutine comm_recv_real_dp(comm, data, source, tag, status)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(out) :: data
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out), optional :: status

private subroutine comm_recv_real_dp_array(comm, data, source, tag, status)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(out), allocatable :: data(:)
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status) :: status

private subroutine comm_recv_real_dp_array_2d(comm, data, source, tag, status)

Receive 2D real(dp) array (must be pre-allocated by receiver)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(inout), allocatable :: data(:,:)
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out) :: status

private subroutine comm_recv_real_sp(comm, data, source, tag, status)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(out) :: data
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out), optional :: status

private subroutine comm_recv_real_sp_array(comm, data, source, tag, status)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(out), allocatable :: data(:)
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status) :: status

private subroutine comm_recv_real_sp_array_2d(comm, data, source, tag, status)

Receive 2D real(sp) array (must be pre-allocated by receiver)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(inout), allocatable :: data(:,:)
integer(kind=int32), intent(in) :: source
integer(kind=int32), intent(in) :: tag
type(MPI_Status), intent(out) :: status

private subroutine comm_send_integer(comm, data, dest, tag)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(in) :: data
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

private subroutine comm_send_integer64(comm, data, dest, tag)

Blocking send of an integer64 to specified destination

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int64), intent(in) :: data
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

private subroutine comm_send_integer64_array(comm, data, dest, tag)

Blocking send of an integer64 array to specified destination

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int64), intent(in) :: data(:)
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

private subroutine comm_send_integer_array(comm, data, dest, tag)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer(kind=int32), intent(in) :: data(:)
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

private subroutine comm_send_logical(comm, data, dest, tag)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
logical, intent(in) :: data
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

private subroutine comm_send_real_dp(comm, data, dest, tag)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(in) :: data
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

private subroutine comm_send_real_dp_array(comm, data, dest, tag)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(in) :: data(:)
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

private subroutine comm_send_real_dp_array_2d(comm, data, dest, tag)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=dp), intent(in) :: data(:,:)
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

private subroutine comm_send_real_sp(comm, data, dest, tag)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(in) :: data
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

private subroutine comm_send_real_sp_array(comm, data, dest, tag)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(in) :: data(:)
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

private subroutine comm_send_real_sp_array_2d(comm, data, dest, tag)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
real(kind=sp), intent(in) :: data(:,:)
integer(kind=int32), intent(in) :: dest
integer(kind=int32), intent(in) :: tag

private subroutine create_win_allocate_dp_1d(comm, length, baseptr, win)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer, intent(in) :: length
real(kind=dp), intent(out), pointer :: baseptr(:)
type(win_t), intent(out) :: win

private subroutine create_win_allocate_dp_2d(comm, dim1, dim2, baseptr, win)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer, intent(in) :: dim1
integer, intent(in) :: dim2
real(kind=dp), intent(out), pointer :: baseptr(:,:)
type(win_t), intent(out) :: win

private subroutine create_win_allocate_i32_1d(comm, length, baseptr, win)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer, intent(in) :: length
integer(kind=int32), intent(out), pointer :: baseptr(:)
type(win_t), intent(out) :: win

private subroutine create_win_allocate_i64_1d(comm, length, baseptr, win)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer, intent(in) :: length
integer(kind=int64), intent(out), pointer :: baseptr(:)
type(win_t), intent(out) :: win

private subroutine create_win_allocate_sp_1d(comm, length, baseptr, win)

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm
integer, intent(in) :: length
real(kind=sp), intent(out), pointer :: baseptr(:)
type(win_t), intent(out) :: win

private subroutine request_free(this)

Arguments

Type IntentOptional Attributes Name
class(request_t), intent(inout) :: this

private subroutine request_test(request, flag, status)

Arguments

Type IntentOptional Attributes Name
type(request_t), intent(inout) :: request
logical, intent(out) :: flag
type(MPI_Status), intent(out), optional :: status

private subroutine request_wait(request, status)

Arguments

Type IntentOptional Attributes Name
type(request_t), intent(inout) :: request
type(MPI_Status), intent(out), optional :: status

private subroutine request_waitall(requests, statuses)

Arguments

Type IntentOptional Attributes Name
type(request_t), intent(inout) :: requests(:)
type(MPI_Status), intent(out), optional :: statuses(:)

private subroutine win_accumulate_dp(this, target_rank, target_disp, count, buffer, op)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
real(kind=dp), intent(in) :: buffer(*)
integer, intent(in), optional :: op

private subroutine win_accumulate_i32(this, target_rank, target_disp, count, buffer, op)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
integer(kind=int32), intent(in) :: buffer(*)
integer, intent(in), optional :: op

private subroutine win_accumulate_i64(this, target_rank, target_disp, count, buffer, op)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
integer(kind=int64), intent(in) :: buffer(*)
integer, intent(in), optional :: op

private subroutine win_accumulate_sp(this, target_rank, target_disp, count, buffer, op)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
real(kind=sp), intent(in) :: buffer(*)
integer, intent(in), optional :: op

private subroutine win_fence(this, assert)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in), optional :: assert

private subroutine win_fetch_and_add_i64(this, target_rank, target_disp, value, result)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer(kind=int64), intent(in) :: value
integer(kind=int64), intent(out) :: result

private subroutine win_finalize(this)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(inout) :: this

private subroutine win_flush(this, rank)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: rank

private subroutine win_flush_all(this)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this

private subroutine win_get_dp(this, target_rank, target_disp, count, buffer)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
real(kind=dp), intent(out) :: buffer(*)

private subroutine win_get_i32(this, target_rank, target_disp, count, buffer)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
integer(kind=int32), intent(out) :: buffer(*)

private subroutine win_get_i64(this, target_rank, target_disp, count, buffer)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
integer(kind=int64), intent(out) :: buffer(*)

private subroutine win_get_sp(this, target_rank, target_disp, count, buffer)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
real(kind=sp), intent(out) :: buffer(*)

private subroutine win_lock(this, rank, lock_type)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: rank
integer, intent(in), optional :: lock_type

private subroutine win_lock_all(this, assert)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in), optional :: assert

private subroutine win_put_dp(this, target_rank, target_disp, count, buffer)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
real(kind=dp), intent(in) :: buffer(*)

private subroutine win_put_i32(this, target_rank, target_disp, count, buffer)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
integer(kind=int32), intent(in) :: buffer(*)

private subroutine win_put_i64(this, target_rank, target_disp, count, buffer)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
integer(kind=int64), intent(in) :: buffer(*)

private subroutine win_put_sp(this, target_rank, target_disp, count, buffer)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
real(kind=sp), intent(in) :: buffer(*)

private subroutine win_rget_dp(this, target_rank, target_disp, count, buffer, request)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
real(kind=dp), intent(out) :: buffer(*)
type(request_t), intent(out) :: request

private subroutine win_rget_i32(this, target_rank, target_disp, count, buffer, request)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
integer(kind=int32), intent(out) :: buffer(*)
type(request_t), intent(out) :: request

private subroutine win_rget_i64(this, target_rank, target_disp, count, buffer, request)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
integer(kind=int64), intent(out) :: buffer(*)
type(request_t), intent(out) :: request

private subroutine win_rget_sp(this, target_rank, target_disp, count, buffer, request)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
real(kind=sp), intent(out) :: buffer(*)
type(request_t), intent(out) :: request

private subroutine win_rput_dp(this, target_rank, target_disp, count, buffer, request)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
real(kind=dp), intent(in) :: buffer(*)
type(request_t), intent(out) :: request

private subroutine win_rput_i32(this, target_rank, target_disp, count, buffer, request)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
integer(kind=int32), intent(in) :: buffer(*)
type(request_t), intent(out) :: request

private subroutine win_rput_i64(this, target_rank, target_disp, count, buffer, request)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
integer(kind=int64), intent(in) :: buffer(*)
type(request_t), intent(out) :: request

private subroutine win_rput_sp(this, target_rank, target_disp, count, buffer, request)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer, intent(in) :: count
real(kind=sp), intent(in) :: buffer(*)
type(request_t), intent(out) :: request

private subroutine win_unlock(this, rank)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer, intent(in) :: rank

private subroutine win_unlock_all(this)

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this