Package mpi

Class CartComm

  • All Implemented Interfaces:
    java.lang.Cloneable, Freeable

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

      • CartComm

        protected CartComm​(long[] commRequest)
    • Method Detail

      • 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.