Package mpi

Class CartComm

All Implemented Interfaces:
Cloneable, Freeable

public final class CartComm extends Intracomm
Communicator with cartesian structure.
  • Constructor Details

    • CartComm

      protected CartComm(long handle) throws MPIException
      Throws:
      MPIException
    • CartComm

      protected CartComm(long[] commRequest)
  • Method Details

    • clone

      public CartComm clone()
      Duplicates this communicator.

      Java binding of MPI_COMM_DUP.

      It is recommended to use dup() instead of clone() because the last can't throw an MPIException.

      Overrides:
      clone in class Intracomm
      Returns:
      copy of this communicator
    • dup

      public CartComm dup() throws MPIException
      Duplicates this communicator.

      Java binding of MPI_COMM_DUP.

      Overrides:
      dup in class Intracomm
      Returns:
      copy of this communicator
      Throws:
      MPIException - Signals that an MPI exception of some sort has occurred.
    • iDup

      public CartComm iDup() throws MPIException
      Duplicates this communicator.

      Java binding of MPI_COMM_IDUP.

      The new communicator can't be used before the operation completes. The request object must be obtained calling Comm.getRequest().

      Overrides:
      iDup in class Intracomm
      Returns:
      copy of this communicator
      Throws:
      MPIException - Signals that an MPI exception of some sort has occurred. Signals that an MPI exception of some sort has occurred.
    • dupWithInfo

      public CartComm dupWithInfo(Info info) throws MPIException
      Duplicates this communicator with the info object used in the call.

      Java binding of MPI_COMM_DUP_WITH_INFO.

      Overrides:
      dupWithInfo in class Intracomm
      Parameters:
      info - info object to associate with the new communicator
      Returns:
      copy of this communicator
      Throws:
      MPIException - Signals that an MPI exception of some sort has occurred.
    • getTopo

      public CartParms getTopo() throws MPIException
      Returns cartesian topology information.

      Java binding of the MPI operations MPI_CARTDIM_GET and MPI_CART_GET.

      The number of dimensions can be obtained from the size of (eg) dims field of the returned object.

      Returns:
      object containing dimensions, periods and local coordinates
      Throws:
      MPIException - Signals that an MPI exception of some sort has occurred.
    • getRank

      public int getRank(int[] coords) throws MPIException
      Translate logical process coordinates to process rank.

      Java binding of the MPI operation MPI_CART_RANK.

      Parameters:
      coords - Cartesian coordinates of a process
      Returns:
      rank of the specified process
      Throws:
      MPIException - Signals that an MPI exception of some sort has occurred.
    • getCoords

      public int[] getCoords(int rank) throws MPIException
      Translate process rank to logical process coordinates.

      Java binding of the MPI operation MPI_CART_COORDS.

      Parameters:
      rank - rank of a process
      Returns:
      Cartesian coordinates of the specified process
      Throws:
      MPIException - Signals that an MPI exception of some sort has occurred.
    • shift

      public ShiftParms shift(int direction, int disp) throws MPIException
      Compute source and destination ranks for "shift" communication.

      Java binding of the MPI operation MPI_CART_SHIFT.

      Parameters:
      direction - coordinate dimension of shift
      disp - displacement
      Returns:
      object containing ranks of source and destination processes
      Throws:
      MPIException - Signals that an MPI exception of some sort has occurred.
    • sub

      public CartComm sub(boolean[] remainDims) throws MPIException
      Partition cartesian communicator into subgroups of lower dimension.

      Java binding of the MPI operation MPI_CART_SUB.

      Parameters:
      remainDims - by dimension, true if dimension is to be kept, false otherwise
      Returns:
      communicator containing subgrid including this process
      Throws:
      MPIException - Signals that an MPI exception of some sort has occurred.
    • map

      public int map(int[] dims, boolean[] periods) throws MPIException
      Compute an optimal placement.

      Java binding of the MPI operation MPI_CART_MAP.

      The number of dimensions is taken to be size of the dims argument.

      Parameters:
      dims - the number of processes in each dimension
      periods - true if grid is periodic, false if not, in each dimension
      Returns:
      reordered rank of calling process
      Throws:
      MPIException - Signals that an MPI exception of some sort has occurred.
    • createDims

      public static void createDims(int nnodes, int[] dims) throws MPIException
      Select a balanced distribution of processes per coordinate direction.

      Java binding of the MPI operation MPI_DIMS_CREATE.

      Parameters:
      nnodes - number of nodes in a grid
      dims - array specifying the number of nodes in each dimension
      Throws:
      MPIException - Signals that an MPI exception of some sort has occurred.