Package mpi

## Class Comm

- java.lang.Object
- - mpi.Comm

- All Implemented Interfaces:
    `java.lang.Cloneable`, `Freeable`
  Direct Known Subclasses:
    `Intercomm`, `Intracomm`

      public class Comm
      extends java.lang.Object
      implements Freeable, java.lang.Cloneable

  The `Comm` class represents communicators.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected long` | `handle` |
    `protected static int` | `SELF` |
    `static int` | `TYPE_SHARED` |
    `protected static int` | `WORLD` |

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `Comm()` |
    `protected` | `Comm​(long handle)` |
    `protected` | `Comm​(long[] commRequest)` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `abort​(int errorcode)` | Abort MPI.
    `void` | `allGather​(java.lang.Object buf, int count, Datatype type)` | Similar to `gather`, but all processes receive the result.
    `void` | `allGather​(java.lang.Object sendbuf, int sendcount, Datatype sendtype, java.lang.Object recvbuf, int recvcount, Datatype recvtype)` | Similar to `gather`, but all processes receive the result.
    `void` | `allGatherv​(java.lang.Object recvbuf, int[] recvcount, int[] displs, Datatype recvtype)` | Similar to `gatherv`, but all processes receive the result.
    `void` | `allGatherv​(java.lang.Object sendbuf, int sendcount, Datatype sendtype, java.lang.Object recvbuf, int[] recvcount, int[] displs, Datatype recvtype)` | Similar to `gatherv`, but all processes receive the result.
    `void` | `allReduce​(java.lang.Object buf, int count, Datatype type, Op op)` | Same as `reduce` except that the result appears in receive buffer of all process in the group.
    `void` | `allReduce​(java.lang.Object sendbuf, java.lang.Object recvbuf, int count, Datatype type, Op op)` | Same as `reduce` except that the result appears in receive buffer of all process in the group.
    `void` | `allToAll​(java.lang.Object sendbuf, int sendcount, Datatype sendtype, java.lang.Object recvbuf, int recvcount, Datatype recvtype)` | Extension of `allGather` to the case where each process sends distinct data to each of the receivers.
    `void` | `allToAllv​(java.lang.Object sendbuf, int[] sendcount, int[] sdispls, Datatype sendtype, java.lang.Object recvbuf, int[] recvcount, int[] rdispls, Datatype recvtype)` | Adds flexibility to `allToAll`: location of data for send is specified by `sdispls` and location to place data on receive side is specified by `rdispls`.
    `void` | `allToAllw​(java.nio.Buffer sendBuf, int[] sendCount, int[] sDispls, Datatype[] sendTypes, java.nio.Buffer recvBuf, int[] recvCount, int[] rDispls, Datatype[] recvTypes)` | Adds more flexibility to `allToAllv`: datatypes for send are specified by `sendTypes` and datatypes for receive are specified by `recvTypes` per process.
    `void` | `barrier()` | A call to `barrier` blocks the caller until all process in the group have called it.
    `void` | `bcast​(java.lang.Object buf, int count, Datatype type, int root)` | Broadcast a message from the process with rank `root` to all processes of the group.
    `void` | `bSend​(java.lang.Object buf, int count, Datatype type, int dest, int tag)` | Send in buffered mode.
    `Prequest` | `bSendInit​(java.nio.Buffer buf, int count, Datatype type, int dest, int tag)` | Creates a persistent communication request for a buffered mode send.
    `void` | `callErrhandler​(int errorCode)` | Calls the error handler currently associated with the communicator.
    `Comm` | `clone()` | Duplicates this communicator.
    `static int` | `compare​(Comm comm1, Comm comm2)` | Compare two communicators.
    `Intercomm` | `createIntercomm​(Comm localComm, int localLeader, int remoteLeader, int tag)` | Create an inter-communicator.
    `static int` | `createKeyval()` | Create a new attribute key.
    `void` | `deleteAttr​(int keyval)` | Deletes an attribute value associated with a key on a communicator.
    `void` | `disconnect()` | Java binding of the MPI operation `MPI_COMM_DISCONNECT`.
    `Comm` | `dup()` | Duplicates this communicator.
    `protected long` | `dup​(long comm)` |
    `protected long` | `dupWithInfo​(long comm, long info)` |
    `Comm` | `dupWithInfo​(Info info)` | Duplicates this communicator with the info object used in the call.
    `void` | `free()` | Java binding of the MPI operation `MPI_COMM_FREE`.
    `static void` | `freeKeyval​(int keyval)` | Frees an attribute key for communicators.
    `void` | `gather​(java.lang.Object buf, int count, Datatype type, int root)` | Each process sends the contents of its send buffer to the root process.
    `void` | `gather​(java.lang.Object sendbuf, int sendcount, Datatype sendtype, java.lang.Object recvbuf, int recvcount, Datatype recvtype, int root)` | Each process sends the contents of its send buffer to the root process.
    `void` | `gatherv​(java.lang.Object recvbuf, int[] recvcount, int[] displs, Datatype recvtype, int root)` | Extends functionality of `gather` by allowing varying counts of data from each process.
    `void` | `gatherv​(java.lang.Object sendbuf, int sendcount, Datatype sendtype, int root)` | Extends functionality of `gather` by allowing varying counts of data from each process.
    `void` | `gatherv​(java.lang.Object sendbuf, int sendcount, Datatype sendtype, java.lang.Object recvbuf, int[] recvcount, int[] displs, Datatype recvtype, int root)` | Extends functionality of `gather` by allowing varying counts of data from each process.
    `java.lang.Object` | `getAttr​(int keyval)` | Retrieves attribute value by key.
    `Errhandler` | `getErrhandler()` | Returns the error handler currently associated with the communicator.
    `Group` | `getGroup()` | Return group associated with a communicator.
    `Info` | `getInfo()` | Java binding of `MPI_COMM_GET_INFO`.
    `java.lang.String` | `getName()` | Return the print name from the communicator.
    `int` | `getRank()` | Rank of this process in group of this communicator.
    `Request` | `getRequest()` | Returns the associated request to this communicator if it was created using `iDup()`.
    `int` | `getSize()` | Size of group of this communicator.
    `int` | `getTopology()` | Returns the type of topology associated with the communicator.
    `Request` | `iAllGather​(java.nio.Buffer buf, int count, Datatype type)` | Similar to `gather`, but all processes receive the result.
    `Request` | `iAllGather​(java.nio.Buffer sendbuf, int sendcount, Datatype sendtype, java.nio.Buffer recvbuf, int recvcount, Datatype recvtype)` | Similar to `gather`, but all processes receive the result.
    `Request` | `iAllGatherv​(java.nio.Buffer buf, int[] count, int[] displs, Datatype type)` | Similar to `gatherv`, but all processes receive the result.
    `Request` | `iAllGatherv​(java.nio.Buffer sendbuf, int sendcount, Datatype sendtype, java.nio.Buffer recvbuf, int[] recvcount, int[] displs, Datatype recvtype)` | Similar to `gatherv`, but all processes receive the result.
    `Request` | `iAllReduce​(java.nio.Buffer buf, int count, Datatype type, Op op)` | Same as `reduce` except that the result appears in receive buffer of all process in the group.
    `Request` | `iAllReduce​(java.nio.Buffer sendbuf, java.nio.Buffer recvbuf, int count, Datatype type, Op op)` | Same as `reduce` except that the result appears in receive buffer of all process in the group.
    `Request` | `iAllToAll​(java.nio.Buffer sendbuf, int sendcount, Datatype sendtype, java.nio.Buffer recvbuf, int recvcount, Datatype recvtype)` | Extension of `allGather` to the case where each process sends distinct data to each of the receivers.
    `Request` | `iAllToAllv​(java.nio.Buffer sendbuf, int[] sendcount, int[] sdispls, Datatype sendtype, java.nio.Buffer recvbuf, int[] recvcount, int[] rdispls, Datatype recvtype)` | Adds flexibility to `allToAll`: location of data for send is specified by `sdispls` and location to place data on receive side is specified by `rdispls`.
    `Request` | `iAllToAllw​(java.nio.Buffer sendBuf, int[] sendCount, int[] sDispls, Datatype[] sendTypes, java.nio.Buffer recvBuf, int[] recvCount, int[] rDispls, Datatype[] recvTypes)` | Adds more flexibility to `iAllToAllv`: datatypes for send are specified by `sendTypes` and datatypes for receive are specified by `recvTypes` per process.
    `Request` | `iBarrier()` | Nonblocking barrier sinchronization.
    `Request` | `iBcast​(java.nio.Buffer buf, int count, Datatype type, int root)` | Broadcast a message from the process with rank `root` to all processes of the group.
    `Request` | `ibSend​(java.nio.Buffer buf, int count, Datatype type, int dest, int tag)` | Start a buffered mode, nonblocking send.
    `Comm` | `iDup()` | Duplicates this communicator.
    `protected long[]` | `iDup​(long comm)` |
    `Request` | `iGather​(java.nio.Buffer buf, int count, Datatype type, int root)` | Each process sends the contents of its send buffer to the root process.
    `Request` | `iGather​(java.nio.Buffer sendbuf, int sendcount, Datatype sendtype, java.nio.Buffer recvbuf, int recvcount, Datatype recvtype, int root)` | Each process sends the contents of its send buffer to the root process.
    `Request` | `iGatherv​(java.nio.Buffer recvbuf, int[] recvcount, int[] displs, Datatype recvtype, int root)` | Extends functionality of `gather` by allowing varying counts of data from each process.
    `Request` | `iGatherv​(java.nio.Buffer sendbuf, int sendcount, Datatype sendtype, int root)` | Extends functionality of `gather` by allowing varying counts of data from each process.
    `Request` | `iGatherv​(java.nio.Buffer sendbuf, int sendcount, Datatype sendtype, java.nio.Buffer recvbuf, int[] recvcount, int[] displs, Datatype recvtype, int root)` | Extends functionality of `gather` by allowing varying counts of data from each process.
    `Request` | `iNeighborAllGather​(java.nio.Buffer sendbuf, int sendcount, Datatype sendtype, java.nio.Buffer recvbuf, int recvcount, Datatype recvtype)` | Java binding of `MPI_INEIGHBOR_ALLGATHER`.
    `Request` | `iNeighborAllGatherv​(java.nio.Buffer sendbuf, int sendcount, Datatype sendtype, java.nio.Buffer recvbuf, int[] recvcount, int[] displs, Datatype recvtype)` | Java binding of `MPI_INEIGHBOR_ALLGATHERV`.
    `Request` | `iNeighborAllToAll​(java.nio.Buffer sendbuf, int sendcount, Datatype sendtype, java.nio.Buffer recvbuf, int recvcount, Datatype recvtype)` | Java binding of `MPI_INEIGHBOR_ALLTOALL`.
    `Request` | `iNeighborAllToAllv​(java.nio.Buffer sendbuf, int[] sendcount, int[] sdispls, Datatype sendtype, java.nio.Buffer recvbuf, int[] recvcount, int[] rdispls, Datatype recvtype)` | Java binding of `MPI_INEIGHBOR_ALLTOALLV`.
    `Status` | `iProbe​(int source, int tag)` | Check if there is an incoming message matching the pattern specified.
    `Request` | `iRecv​(java.nio.Buffer buf, int count, Datatype type, int source, int tag)` | Start a nonblocking receive.
    `Request` | `iReduce​(java.nio.Buffer buf, int count, Datatype type, Op op, int root)` | Combine elements in input buffer of each process using the reduce operation, and return the combined value in the output buffer of the root process.
    `Request` | `iReduce​(java.nio.Buffer sendbuf, java.nio.Buffer recvbuf, int count, Datatype type, Op op, int root)` | Combine elements in input buffer of each process using the reduce operation, and return the combined value in the output buffer of the root process.
    `Request` | `iReduceScatter​(java.nio.Buffer buf, int[] counts, Datatype type, Op op)` | Combine elements in input buffer of each process using the reduce operation, and scatter the combined values over the output buffers of the processes.
    `Request` | `iReduceScatter​(java.nio.Buffer sendbuf, java.nio.Buffer recvbuf, int[] recvcounts, Datatype type, Op op)` | Combine elements in input buffer of each process using the reduce operation, and scatter the combined values over the output buffers of the processes.
    `Request` | `iReduceScatterBlock​(java.nio.Buffer buf, int count, Datatype type, Op op)` | Combine values and scatter the results.
    `Request` | `iReduceScatterBlock​(java.nio.Buffer sendbuf, java.nio.Buffer recvbuf, int recvcount, Datatype type, Op op)` | Combine values and scatter the results.
    `Request` | `irSend​(java.nio.Buffer buf, int count, Datatype type, int dest, int tag)` | Start a ready mode, nonblocking send.
    `Request` | `iScatter​(java.nio.Buffer buf, int count, Datatype type, int root)` | Inverse of the operation `gather`.
    `Request` | `iScatter​(java.nio.Buffer sendbuf, int sendcount, Datatype sendtype, java.nio.Buffer recvbuf, int recvcount, Datatype recvtype, int root)` | Inverse of the operation `gather`.
    `Request` | `iScatterv​(java.nio.Buffer sendbuf, int[] sendcount, int[] displs, Datatype sendtype, int root)` | Inverse of the operation `gatherv`.
    `Request` | `iScatterv​(java.nio.Buffer sendbuf, int[] sendcount, int[] displs, Datatype sendtype, java.nio.Buffer recvbuf, int recvcount, Datatype recvtype, int root)` | Inverse of the operation `gatherv`.
    `Request` | `iScatterv​(java.nio.Buffer recvbuf, int recvcount, Datatype recvtype, int root)` | Inverse of the operation `gatherv`.
    `Request` | `iSend​(java.nio.Buffer buf, int count, Datatype type, int dest, int tag)` | Start a standard mode, nonblocking send.
    `boolean` | `isInter()` | Test if this communicator is an inter-communicator.
    `boolean` | `isNull()` | Test if communicator object is null (has been freed).
    `Request` | `isSend​(java.nio.Buffer buf, int count, Datatype type, int dest, int tag)` | Start a synchronous mode, nonblocking send.
    `void` | `neighborAllGather​(java.lang.Object sendbuf, int sendcount, Datatype sendtype, java.lang.Object recvbuf, int recvcount, Datatype recvtype)` | Java binding of `MPI_NEIGHBOR_ALLGATHER`.
    `void` | `neighborAllGatherv​(java.lang.Object sendbuf, int sendcount, Datatype sendtype, java.lang.Object recvbuf, int[] recvcount, int[] displs, Datatype recvtype)` | Java binding of `MPI_NEIGHBOR_ALLGATHERV`.
    `void` | `neighborAllToAll​(java.lang.Object sendbuf, int sendcount, Datatype sendtype, java.lang.Object recvbuf, int recvcount, Datatype recvtype)` | Java binding of `MPI_NEIGHBOR_ALLTOALL`.
    `void` | `neighborAllToAllv​(java.lang.Object sendbuf, int[] sendcount, int[] sdispls, Datatype sendtype, java.lang.Object recvbuf, int[] recvcount, int[] rdispls, Datatype recvtype)` | Java binding of `MPI_NEIGHBOR_ALLTOALLV`.
    `int` | `pack​(java.lang.Object inbuf, int incount, Datatype type, byte[] outbuf, int position)` | Packs message in send buffer `inbuf` into space specified in `outbuf`.
    `int` | `packSize​(int incount, Datatype type)` | Returns an upper bound on the increment of `position` effected by `pack`.
    `Status` | `probe​(int source, int tag)` | Wait until there is an incoming message matching the pattern specified.
    `Status` | `recv​(java.lang.Object buf, int count, Datatype type, int source, int tag)` | Blocking receive operation.
    `Prequest` | `recvInit​(java.nio.Buffer buf, int count, Datatype type, int source, int tag)` | Creates a persistent communication request for a receive operation.
    `void` | `reduce​(java.lang.Object buf, int count, Datatype type, Op op, int root)` | Combine elements in input buffer of each process using the reduce operation, and return the combined value in the output buffer of the root process.
    `void` | `reduce​(java.lang.Object sendbuf, java.lang.Object recvbuf, int count, Datatype type, Op op, int root)` | Combine elements in input buffer of each process using the reduce operation, and return the combined value in the output buffer of the root process.
    `static void` | `reduceLocal​(java.lang.Object inBuf, java.lang.Object inOutBuf, int count, Datatype type, Op op)` | Apply the operation given by `op` element-wise to the elements of `inBuf` and `inOutBuf` with the result stored element-wise in `inOutBuf`.
    `void` | `reduceScatter​(java.lang.Object buf, int[] counts, Datatype type, Op op)` | Combine elements in input buffer of each process using the reduce operation, and scatter the combined values over the output buffers of the processes.
    `void` | `reduceScatter​(java.lang.Object sendbuf, java.lang.Object recvbuf, int[] recvcounts, Datatype type, Op op)` | Combine elements in input buffer of each process using the reduce operation, and scatter the combined values over the output buffers of the processes.
    `void` | `reduceScatterBlock​(java.lang.Object buf, int count, Datatype type, Op op)` | Combine values and scatter the results.
    `void` | `reduceScatterBlock​(java.lang.Object sendbuf, java.lang.Object recvbuf, int recvcount, Datatype type, Op op)` | Combine values and scatter the results.
    `void` | `rSend​(java.lang.Object buf, int count, Datatype type, int dest, int tag)` | Send in ready mode.
    `Prequest` | `rSendInit​(java.nio.Buffer buf, int count, Datatype type, int dest, int tag)` | Creates a persistent communication request for a ready mode send.
    `void` | `scatter​(java.lang.Object buf, int count, Datatype type, int root)` | Inverse of the operation `gather`.
    `void` | `scatter​(java.lang.Object sendbuf, int sendcount, Datatype sendtype, java.lang.Object recvbuf, int recvcount, Datatype recvtype, int root)` | Inverse of the operation `gather`.
    `void` | `scatterv​(java.lang.Object sendbuf, int[] sendcount, int[] displs, Datatype sendtype, int root)` | Inverse of the operation `gatherv`.
    `void` | `scatterv​(java.lang.Object sendbuf, int[] sendcount, int[] displs, Datatype sendtype, java.lang.Object recvbuf, int recvcount, Datatype recvtype, int root)` | Inverse of the operation `gatherv`.
    `void` | `scatterv​(java.lang.Object recvbuf, int recvcount, Datatype recvtype, int root)` | Inverse of the operation `gatherv`.
    `void` | `send​(java.lang.Object buf, int count, Datatype type, int dest, int tag)` | Blocking send operation.
    `Prequest` | `sendInit​(java.nio.Buffer buf, int count, Datatype type, int dest, int tag)` | Creates a persistent communication request for a standard mode send.
    `Status` | `sendRecv​(java.lang.Object sendbuf, int sendcount, Datatype sendtype, int dest, int sendtag, java.lang.Object recvbuf, int recvcount, Datatype recvtype, int source, int recvtag)` | Execute a blocking send and receive operation.
    `Status` | `sendRecvReplace​(java.lang.Object buf, int count, Datatype type, int dest, int sendtag, int source, int recvtag)` | Execute a blocking send and receive operation, receiving message into send buffer.
    `void` | `setAttr​(int keyval, java.lang.Object value)` | Stores attribute value associated with a key.
    `void` | `setErrhandler​(Errhandler errhandler)` | Associates a new error handler with communicator at the calling process.
    `void` | `setInfo​(Info info)` | Java binding of `MPI_COMM_SET_INFO`.
    `void` | `setName​(java.lang.String name)` | Sets the print name for the communicator.
    `protected void` | `setType​(int type)` |
    `void` | `sSend​(java.lang.Object buf, int count, Datatype type, int dest, int tag)` | Send in synchronous mode.
    `Prequest` | `sSendInit​(java.nio.Buffer buf, int count, Datatype type, int dest, int tag)` | Creates a persistent communication request for a synchronous mode send.
    `int` | `unpack​(byte[] inbuf, int position, java.lang.Object outbuf, int outcount, Datatype type)` | Unpacks message in receive buffer `outbuf` into space specified in `inbuf`.

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### TYPE_SHARED

          public static final int TYPE_SHARED

      See Also:
        Constant Field Values

    - #### SELF

          protected static final int SELF

      See Also:
        Constant Field Values

    - #### WORLD

          protected static final int WORLD

      See Also:
        Constant Field Values

    - #### handle

          protected long handle

  - ### Constructor Detail

    - #### Comm

          protected Comm()

    - #### Comm

          protected Comm​(long handle)

    - #### Comm

          protected Comm​(long[] commRequest)

  - ### Method Detail

    - #### setType

          protected final void setType​(int type)

    - #### clone

          public Comm 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 `java.lang.Object`
      Returns:
        copy of this communicator

    - #### dup

          public Comm dup()
                   throws MPIException

      Duplicates this communicator.

      Java binding of `MPI_COMM_DUP`.

      Returns:
        copy of this communicator
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### dup

          protected final long dup​(long comm)
                            throws MPIException

      Throws:
        `MPIException`

    - #### iDup

          public Comm 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 `getRequest()`.

      Returns:
        copy of this communicator
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iDup

          protected final long[] iDup​(long comm)
                               throws MPIException

      Throws:
        `MPIException`

    - #### dupWithInfo

          public Comm dupWithInfo​(Info info)
                           throws MPIException

      Duplicates this communicator with the info object used in the call.

      Java binding of `MPI_COMM_DUP_WITH_INFO`.

      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.

    - #### dupWithInfo

          protected final long dupWithInfo​(long comm,
                                           long info)
                                    throws MPIException

      Throws:
        `MPIException`

    - #### getRequest

          public final Request getRequest()

      Returns the associated request to this communicator if it was created using `iDup()`.
      Returns:
        associated request if this communicator was created using `iDup()`, or null otherwise.

    - #### getSize

          public final int getSize()
                            throws MPIException

      Size of group of this communicator.

      Java binding of the MPI operation `MPI_COMM_SIZE`.

      Returns:
        number of processors in the group of this communicator
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### getRank

          public final int getRank()
                            throws MPIException

      Rank of this process in group of this communicator.

      Java binding of the MPI operation `MPI_COMM_RANK`.

      Returns:
        rank of the calling process in the group of this communicator
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### compare

          public static int compare​(Comm comm1,
                                    Comm comm2)
                             throws MPIException

      Compare two communicators.

      Java binding of the MPI operation `MPI_COMM_COMPARE`.

      Parameters:
        `comm1` - first communicator
        `comm2` - second communicator
      Returns:
        `MPI.IDENT` results if the `comm1` and `comm2` are references to the same object (ie, if `comm1 == comm2`).
        `MPI.CONGRUENT` results if the underlying groups are identical but the communicators differ by context.
        `MPI.SIMILAR` results if the underlying groups are similar but the communicators differ by context.
        `MPI.UNEQUAL` results otherwise.
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### free

          public final void free()
                          throws MPIException

      Java binding of the MPI operation `MPI_COMM_FREE`.
      Specified by:
        `free` in interface `Freeable`
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### isNull

          public final boolean isNull()

      Test if communicator object is null (has been freed). Java binding of `MPI_COMM_NULL`.
      Returns:
        true if the comm object is null, false otherwise

    - #### setInfo

          public final void setInfo​(Info info)
                             throws MPIException

      Java binding of `MPI_COMM_SET_INFO`.
      Parameters:
        `info` - info object
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### getInfo

          public final Info getInfo()
                             throws MPIException

      Java binding of `MPI_COMM_GET_INFO`.
      Returns:
        new info object
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### disconnect

          public final void disconnect()
                                throws MPIException

      Java binding of the MPI operation `MPI_COMM_DISCONNECT`.
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### getGroup

          public final Group getGroup()
                               throws MPIException

      Return group associated with a communicator.

      Java binding of the MPI operation `MPI_COMM_GROUP`.

      Returns:
        group corresponding to this communicator group
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### isInter

          public final boolean isInter()
                                throws MPIException

      Test if this communicator is an inter-communicator.

      Java binding of the MPI operation `MPI_COMM_TEST_INTER`.

      Returns:
        `true` if this is an inter-communicator, `false` otherwise
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### createIntercomm

          public final Intercomm createIntercomm​(Comm localComm,
                                                 int localLeader,
                                                 int remoteLeader,
                                                 int tag)
                                          throws MPIException

      Create an inter-communicator.

      Java binding of the MPI operation `MPI_INTERCOMM_CREATE`.

      This operation is defined as a method on the "peer communicator", making it analogous to a `send` or `recv` communication with the remote group leader.

      Parameters:
        `localComm` - local intra-communicator
        `localLeader` - rank of local group leader in `localComm`
        `remoteLeader` - rank of remote group leader in this communicator
        `tag` - "safe" tag
      Returns:
        new inter-communicator
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### send

          public final void send​(java.lang.Object buf,
                                 int count,
                                 Datatype type,
                                 int dest,
                                 int tag)
                          throws MPIException

      Blocking send operation.

      Java binding of the MPI operation `MPI_SEND`.

      Parameters:
        `buf` - send buffer
        `count` - number of items to send
        `type` - datatype of each item in send buffer
        `dest` - rank of destination
        `tag` - message tag
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### recv

          public final Status recv​(java.lang.Object buf,
                                   int count,
                                   Datatype type,
                                   int source,
                                   int tag)
                            throws MPIException

      Blocking receive operation.

      Java binding of the MPI operation `MPI_RECV`.

      Parameters:
        `buf` - receive buffer
        `count` - number of items in receive buffer
        `type` - datatype of each item in receive buffer
        `source` - rank of source
        `tag` - message tag
      Returns:
        status object
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### sendRecv

          public final Status sendRecv​(java.lang.Object sendbuf,
                                       int sendcount,
                                       Datatype sendtype,
                                       int dest,
                                       int sendtag,
                                       java.lang.Object recvbuf,
                                       int recvcount,
                                       Datatype recvtype,
                                       int source,
                                       int recvtag)
                                throws MPIException

      Execute a blocking send and receive operation.

      Java binding of the MPI operation `MPI_SENDRECV`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `dest` - rank of destination
        `sendtag` - send tag
        `recvbuf` - receive buffer
        `recvcount` - number of items in receive buffer
        `recvtype` - datatype of each item in receive buffer
        `source` - rank of source
        `recvtag` - receive tag
      Returns:
        status object
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`, `recv(Object, int, Datatype, int, int)`

    - #### sendRecvReplace

          public final Status sendRecvReplace​(java.lang.Object buf,
                                              int count,
                                              Datatype type,
                                              int dest,
                                              int sendtag,
                                              int source,
                                              int recvtag)
                                       throws MPIException

      Execute a blocking send and receive operation, receiving message into send buffer.

      Java binding of the MPI operation `MPI_SENDRECV_REPLACE`.

      Parameters:
        `buf` - buffer
        `count` - number of items to send
        `type` - datatype of each item in buffer
        `dest` - rank of destination
        `sendtag` - send tag
        `source` - rank of source
        `recvtag` - receive tag
      Returns:
        status object
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`, `recv(Object, int, Datatype, int, int)`

    - #### bSend

          public final void bSend​(java.lang.Object buf,
                                  int count,
                                  Datatype type,
                                  int dest,
                                  int tag)
                           throws MPIException

      Send in buffered mode.

      Java binding of the MPI operation `MPI_BSEND`.

      Parameters:
        `buf` - send buffer
        `count` - number of items to send
        `type` - datatype of each item in send buffer
        `dest` - rank of destination
        `tag` - message tag
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`

    - #### sSend

          public final void sSend​(java.lang.Object buf,
                                  int count,
                                  Datatype type,
                                  int dest,
                                  int tag)
                           throws MPIException

      Send in synchronous mode.

      Java binding of the MPI operation `MPI_SSEND`.

      Parameters:
        `buf` - send buffer
        `count` - number of items to send
        `type` - datatype of each item in send buffer
        `dest` - rank of destination
        `tag` - message tag
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`

    - #### rSend

          public final void rSend​(java.lang.Object buf,
                                  int count,
                                  Datatype type,
                                  int dest,
                                  int tag)
                           throws MPIException

      Send in ready mode.

      Java binding of the MPI operation `MPI_RSEND`.

      Parameters:
        `buf` - send buffer
        `count` - number of items to send
        `type` - datatype of each item in send buffer
        `dest` - rank of destination
        `tag` - message tag
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`

    - #### iSend

          public final Request iSend​(java.nio.Buffer buf,
                                     int count,
                                     Datatype type,
                                     int dest,
                                     int tag)
                              throws MPIException

      Start a standard mode, nonblocking send.

      Java binding of the MPI operation `MPI_ISEND`.

      Parameters:
        `buf` - send buffer
        `count` - number of items to send
        `type` - datatype of each item in send buffer
        `dest` - rank of destination
        `tag` - message tag
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`

    - #### ibSend

          public final Request ibSend​(java.nio.Buffer buf,
                                      int count,
                                      Datatype type,
                                      int dest,
                                      int tag)
                               throws MPIException

      Start a buffered mode, nonblocking send.

      Java binding of the MPI operation `MPI_IBSEND`.

      Parameters:
        `buf` - send buffer
        `count` - number of items to send
        `type` - datatype of each item in send buffer
        `dest` - rank of destination
        `tag` - message tag
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`

    - #### isSend

          public final Request isSend​(java.nio.Buffer buf,
                                      int count,
                                      Datatype type,
                                      int dest,
                                      int tag)
                               throws MPIException

      Start a synchronous mode, nonblocking send.

      Java binding of the MPI operation `MPI_ISSEND`.

      Parameters:
        `buf` - send buffer
        `count` - number of items to send
        `type` - datatype of each item in send buffer
        `dest` - rank of destination
        `tag` - message tag
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`

    - #### irSend

          public final Request irSend​(java.nio.Buffer buf,
                                      int count,
                                      Datatype type,
                                      int dest,
                                      int tag)
                               throws MPIException

      Start a ready mode, nonblocking send.

      Java binding of the MPI operation `MPI_IRSEND`.

      Parameters:
        `buf` - send buffer
        `count` - number of items to send
        `type` - datatype of each item in send buffer
        `dest` - rank of destination
        `tag` - message tag
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`

    - #### iRecv

          public final Request iRecv​(java.nio.Buffer buf,
                                     int count,
                                     Datatype type,
                                     int source,
                                     int tag)
                              throws MPIException

      Start a nonblocking receive.

      Java binding of the MPI operation `MPI_IRECV`.

      Parameters:
        `buf` - receive buffer
        `count` - number of items in receive buffer
        `type` - datatype of each item in receive buffer
        `source` - rank of source
        `tag` - message tag
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `recv(Object, int, Datatype, int, int)`

    - #### sendInit

          public final Prequest sendInit​(java.nio.Buffer buf,
                                         int count,
                                         Datatype type,
                                         int dest,
                                         int tag)
                                  throws MPIException

      Creates a persistent communication request for a standard mode send.

      Java binding of the MPI operation `MPI_SEND_INIT`.

      Parameters:
        `buf` - send buffer
        `count` - number of items to send
        `type` - datatype of each item in send buffer
        `dest` - rank of destination
        `tag` - message tag
      Returns:
        persistent communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`

    - #### bSendInit

          public final Prequest bSendInit​(java.nio.Buffer buf,
                                          int count,
                                          Datatype type,
                                          int dest,
                                          int tag)
                                   throws MPIException

      Creates a persistent communication request for a buffered mode send.

      Java binding of the MPI operation `MPI_BSEND_INIT`.

      Parameters:
        `buf` - send buffer
        `count` - number of items to send
        `type` - datatype of each item in send buffer
        `dest` - rank of destination
        `tag` - message tag
      Returns:
        persistent communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`

    - #### sSendInit

          public final Prequest sSendInit​(java.nio.Buffer buf,
                                          int count,
                                          Datatype type,
                                          int dest,
                                          int tag)
                                   throws MPIException

      Creates a persistent communication request for a synchronous mode send.

      Java binding of the MPI operation `MPI_SSEND_INIT`.

      Parameters:
        `buf` - send buffer
        `count` - number of items to send
        `type` - datatype of each item in send buffer
        `dest` - rank of destination
        `tag` - message tag
      Returns:
        persistent communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`

    - #### rSendInit

          public final Prequest rSendInit​(java.nio.Buffer buf,
                                          int count,
                                          Datatype type,
                                          int dest,
                                          int tag)
                                   throws MPIException

      Creates a persistent communication request for a ready mode send.

      Java binding of the MPI operation `MPI_RSEND_INIT`.

      Parameters:
        `buf` - send buffer
        `count` - number of items to send
        `type` - datatype of each item in send buffer
        `dest` - rank of destination
        `tag` - message tag
      Returns:
        persistent communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `send(Object, int, Datatype, int, int)`

    - #### recvInit

          public final Prequest recvInit​(java.nio.Buffer buf,
                                         int count,
                                         Datatype type,
                                         int source,
                                         int tag)
                                  throws MPIException

      Creates a persistent communication request for a receive operation.

      Java binding of the MPI operation `MPI_RECV_INIT`.

      Parameters:
        `buf` - receive buffer
        `count` - number of items in receive buffer
        `type` - datatype of each item in receive buffer
        `source` - rank of source
        `tag` - message tag
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.
      See Also:
        `recv(Object, int, Datatype, int, int)`

    - #### pack

          public final int pack​(java.lang.Object inbuf,
                                int incount,
                                Datatype type,
                                byte[] outbuf,
                                int position)
                         throws MPIException

      Packs message in send buffer `inbuf` into space specified in `outbuf`.

      Java binding of the MPI operation `MPI_PACK`.

      The return value is the output value of `position` - the inital value incremented by the number of bytes written.

      Parameters:
        `inbuf` - input buffer
        `incount` - number of items in input buffer
        `type` - datatype of each item in input buffer
        `outbuf` - output buffer
        `position` - initial position in output buffer
      Returns:
        final position in output buffer
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### unpack

          public final int unpack​(byte[] inbuf,
                                  int position,
                                  java.lang.Object outbuf,
                                  int outcount,
                                  Datatype type)
                           throws MPIException

      Unpacks message in receive buffer `outbuf` into space specified in `inbuf`.

      Java binding of the MPI operation `MPI_UNPACK`.

      The return value is the output value of `position` - the inital value incremented by the number of bytes read.

      Parameters:
        `inbuf` - input buffer
        `position` - initial position in input buffer
        `outbuf` - output buffer
        `outcount` - number of items in output buffer
        `type` - datatype of each item in output buffer
      Returns:
        final position in input buffer
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### packSize

          public final int packSize​(int incount,
                                    Datatype type)
                             throws MPIException

      Returns an upper bound on the increment of `position` effected by `pack`.

      Java binding of the MPI operation `MPI_PACK_SIZE`.

      Parameters:
        `incount` - number of items in input buffer
        `type` - datatype of each item in input buffer
      Returns:
        upper bound on size of packed message
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iProbe

          public final Status iProbe​(int source,
                                     int tag)
                              throws MPIException

      Check if there is an incoming message matching the pattern specified.

      Java binding of the MPI operation `MPI_IPROBE`.

      If such a message is currently available, a status object similar to the return value of a matching `recv` operation is returned.

      Parameters:
        `source` - rank of source
        `tag` - message tag
      Returns:
        status object if such a message is currently available, `null` otherwise.
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### probe

          public final Status probe​(int source,
                                    int tag)
                             throws MPIException

      Wait until there is an incoming message matching the pattern specified.

      Java binding of the MPI operation `MPI_PROBE`.

      Returns a status object similar to the return value of a matching `recv` operation.

      Parameters:
        `source` - rank of source
        `tag` - message tag
      Returns:
        status object
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### createKeyval

          public static int createKeyval()
                                  throws MPIException

      Create a new attribute key.

      Java binding of the MPI operation `MPI_COMM_CREATE_KEYVAL`.

      Returns:
        attribute key for future access
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### freeKeyval

          public static void freeKeyval​(int keyval)
                                 throws MPIException

      Frees an attribute key for communicators.

      Java binding of the MPI operation `MPI_COMM_FREE_KEYVAL`.

      Parameters:
        `keyval` - attribute key
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### setAttr

          public final void setAttr​(int keyval,
                                    java.lang.Object value)
                             throws MPIException

      Stores attribute value associated with a key.

      Java binding of the MPI operation `MPI_COMM_SET_ATTR`.

      Parameters:
        `keyval` - attribute key
        `value` - attribute value
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### getAttr

          public final java.lang.Object getAttr​(int keyval)
                                         throws MPIException

      Retrieves attribute value by key.

      Java binding of the MPI operation `MPI_COMM_GET_ATTR`.

      Parameters:
        `keyval` - attribute key
      Returns:
        attribute value or null if no attribute is associated with the key.
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### deleteAttr

          public final void deleteAttr​(int keyval)
                                throws MPIException

      Deletes an attribute value associated with a key on a communicator.

      Java binding of the MPI operation `MPI_COMM_DELETE_ATTR`.

      Parameters:
        `keyval` - attribute key
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### getTopology

          public final int getTopology()
                                throws MPIException

      Returns the type of topology associated with the communicator.

      Java binding of the MPI operation `MPI_TOPO_TEST`.

      The return value will be one of `MPI.GRAPH`, `MPI.CART`, `MPI.DIST_GRAPH` or `MPI.UNDEFINED`.

      Returns:
        topology type of communicator
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### abort

          public final void abort​(int errorcode)
                           throws MPIException

      Abort MPI.

      Java binding of the MPI operation `MPI_ABORT`.

      Parameters:
        `errorcode` - error code for Unix or POSIX environments
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### setErrhandler

          public final void setErrhandler​(Errhandler errhandler)
                                   throws MPIException

      Associates a new error handler with communicator at the calling process.

      Java binding of the MPI operation `MPI_COMM_SET_ERRHANDLER`.

      Parameters:
        `errhandler` - new MPI error handler for communicator
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### getErrhandler

          public final Errhandler getErrhandler()
                                         throws MPIException

      Returns the error handler currently associated with the communicator.

      Java binding of the MPI operation `MPI_COMM_GET_ERRHANDLER`.

      Returns:
        MPI error handler currently associated with communicator
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### callErrhandler

          public void callErrhandler​(int errorCode)
                              throws MPIException

      Calls the error handler currently associated with the communicator.

      Java binding of the MPI operation `MPI_COMM_CALL_ERRHANDLER`.

      Parameters:
        `errorCode` - error code
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### barrier

          public final void barrier()
                             throws MPIException

      A call to `barrier` blocks the caller until all process in the group have called it.

      Java binding of the MPI operation `MPI_BARRIER`.

      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iBarrier

          public final Request iBarrier()
                                 throws MPIException

      Nonblocking barrier sinchronization.

      Java binding of the MPI operation `MPI_IBARRIER`.

      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### bcast

          public final void bcast​(java.lang.Object buf,
                                  int count,
                                  Datatype type,
                                  int root)
                           throws MPIException

      Broadcast a message from the process with rank `root` to all processes of the group.

      Java binding of the MPI operation `MPI_BCAST`.

      Parameters:
        `buf` - buffer
        `count` - number of items in buffer
        `type` - datatype of each item in buffer
        `root` - rank of broadcast root
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iBcast

          public final Request iBcast​(java.nio.Buffer buf,
                                      int count,
                                      Datatype type,
                                      int root)
                               throws MPIException

      Broadcast a message from the process with rank `root` to all processes of the group.

      Java binding of the MPI operation `MPI_IBCAST`.

      Parameters:
        `buf` - buffer
        `count` - number of items in buffer
        `type` - datatype of each item in buffer
        `root` - rank of broadcast root
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### gather

          public final void gather​(java.lang.Object sendbuf,
                                   int sendcount,
                                   Datatype sendtype,
                                   java.lang.Object recvbuf,
                                   int recvcount,
                                   Datatype recvtype,
                                   int root)
                            throws MPIException

      Each process sends the contents of its send buffer to the root process.

      Java binding of the MPI operation `MPI_GATHER`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
        `root` - rank of receiving process
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### gather

          public final void gather​(java.lang.Object buf,
                                   int count,
                                   Datatype type,
                                   int root)
                            throws MPIException

      Each process sends the contents of its send buffer to the root process.

      Java binding of the MPI operation `MPI_GATHER` using `MPI_IN_PLACE` instead of the send buffer. The buffer is used by the root process to receive data, and it is used by the non-root processes to send data.

      Parameters:
        `buf` - buffer
        `count` - number of items to send/receive
        `type` - datatype of each item in buffer
        `root` - rank of receiving process
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iGather

          public final Request iGather​(java.nio.Buffer sendbuf,
                                       int sendcount,
                                       Datatype sendtype,
                                       java.nio.Buffer recvbuf,
                                       int recvcount,
                                       Datatype recvtype,
                                       int root)
                                throws MPIException

      Each process sends the contents of its send buffer to the root process.

      Java binding of the MPI operation `MPI_IGATHER`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
        `root` - rank of receiving process
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iGather

          public final Request iGather​(java.nio.Buffer buf,
                                       int count,
                                       Datatype type,
                                       int root)
                                throws MPIException

      Each process sends the contents of its send buffer to the root process.

      Java binding of the MPI operation `MPI_IGATHER` using `MPI_IN_PLACE` instead of the send buffer. The buffer is used by the root process to receive data, and it is used by the non-root processes to send data.

      Parameters:
        `buf` - buffer
        `count` - number of items to send/receive
        `type` - datatype of each item in buffer
        `root` - rank of receiving process
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### gatherv

          public final void gatherv​(java.lang.Object sendbuf,
                                    int sendcount,
                                    Datatype sendtype,
                                    java.lang.Object recvbuf,
                                    int[] recvcount,
                                    int[] displs,
                                    Datatype recvtype,
                                    int root)
                             throws MPIException

      Extends functionality of `gather` by allowing varying counts of data from each process.

      Java binding of the MPI operation `MPI_GATHERV`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of elements received from each process
        `displs` - displacements at which to place incoming data
        `recvtype` - datatype of each item in receive buffer
        `root` - rank of receiving process
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### gatherv

          public final void gatherv​(java.lang.Object recvbuf,
                                    int[] recvcount,
                                    int[] displs,
                                    Datatype recvtype,
                                    int root)
                             throws MPIException

      Extends functionality of `gather` by allowing varying counts of data from each process.

      Java binding of the MPI operation `MPI_GATHERV` using `MPI_IN_PLACE` instead of the send buffer in the root process. This method must be used in the root process.

      Parameters:
        `recvbuf` - receive buffer
        `recvcount` - number of elements received from each process
        `displs` - displacements at which to place incoming data
        `recvtype` - datatype of each item in receive buffer
        `root` - rank of receiving process
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### gatherv

          public final void gatherv​(java.lang.Object sendbuf,
                                    int sendcount,
                                    Datatype sendtype,
                                    int root)
                             throws MPIException

      Extends functionality of `gather` by allowing varying counts of data from each process.

      Java binding of the MPI operation `MPI_GATHERV` using `MPI_IN_PLACE` instead of the send buffer in the root process. This method must be used in the non-root processes.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `root` - rank of receiving process
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iGatherv

          public final Request iGatherv​(java.nio.Buffer sendbuf,
                                        int sendcount,
                                        Datatype sendtype,
                                        java.nio.Buffer recvbuf,
                                        int[] recvcount,
                                        int[] displs,
                                        Datatype recvtype,
                                        int root)
                                 throws MPIException

      Extends functionality of `gather` by allowing varying counts of data from each process.

      Java binding of the MPI operation `MPI_IGATHERV`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of elements received from each process
        `displs` - displacements at which to place incoming data
        `recvtype` - datatype of each item in receive buffer
        `root` - rank of receiving process
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iGatherv

          public final Request iGatherv​(java.nio.Buffer recvbuf,
                                        int[] recvcount,
                                        int[] displs,
                                        Datatype recvtype,
                                        int root)
                                 throws MPIException

      Extends functionality of `gather` by allowing varying counts of data from each process.

      Java binding of the MPI operation `MPI_IGATHERV` using `MPI_IN_PLACE` instead of the send buffer in the root process. This method must be used in the root process.

      Parameters:
        `recvbuf` - receive buffer
        `recvcount` - number of elements received from each process
        `displs` - displacements at which to place incoming data
        `recvtype` - datatype of each item in receive buffer
        `root` - rank of receiving process
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iGatherv

          public final Request iGatherv​(java.nio.Buffer sendbuf,
                                        int sendcount,
                                        Datatype sendtype,
                                        int root)
                                 throws MPIException

      Extends functionality of `gather` by allowing varying counts of data from each process.

      Java binding of the MPI operation `MPI_IGATHERV` using `MPI_IN_PLACE` instead of the send buffer in the root process. This method must be used in the non-root processes.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `root` - rank of receiving process
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### scatter

          public final void scatter​(java.lang.Object sendbuf,
                                    int sendcount,
                                    Datatype sendtype,
                                    java.lang.Object recvbuf,
                                    int recvcount,
                                    Datatype recvtype,
                                    int root)
                             throws MPIException

      Inverse of the operation `gather`.

      Java binding of the MPI operation `MPI_SCATTER`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
        `root` - rank of sending process
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### scatter

          public final void scatter​(java.lang.Object buf,
                                    int count,
                                    Datatype type,
                                    int root)
                             throws MPIException

      Inverse of the operation `gather`.

      Java binding of the MPI operation `MPI_SCATTER` using `MPI_IN_PLACE` instead of the receive buffer. The buffer is used by the root process to send data, and it is used by the non-root processes to receive data.

      Parameters:
        `buf` - send/receive buffer
        `count` - number of items to send/receive
        `type` - datatype of each item in buffer
        `root` - rank of sending process
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iScatter

          public final Request iScatter​(java.nio.Buffer sendbuf,
                                        int sendcount,
                                        Datatype sendtype,
                                        java.nio.Buffer recvbuf,
                                        int recvcount,
                                        Datatype recvtype,
                                        int root)
                                 throws MPIException

      Inverse of the operation `gather`.

      Java binding of the MPI operation `MPI_ISCATTER`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
        `root` - rank of sending process
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iScatter

          public final Request iScatter​(java.nio.Buffer buf,
                                        int count,
                                        Datatype type,
                                        int root)
                                 throws MPIException

      Inverse of the operation `gather`.

      Java binding of the MPI operation `MPI_ISCATTER` using `MPI_IN_PLACE` instead of the receive buffer. The buffer is used by the root process to send data, and it is used by the non-root processes to receive data.

      Parameters:
        `buf` - send/receive buffer
        `count` - number of items to send/receive
        `type` - datatype of each item in buffer
        `root` - rank of sending process
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### scatterv

          public final void scatterv​(java.lang.Object sendbuf,
                                     int[] sendcount,
                                     int[] displs,
                                     Datatype sendtype,
                                     java.lang.Object recvbuf,
                                     int recvcount,
                                     Datatype recvtype,
                                     int root)
                              throws MPIException

      Inverse of the operation `gatherv`.

      Java binding of the MPI operation `MPI_SCATTERV`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items sent to each process
        `displs` - displacements from which to take outgoing data
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
        `root` - rank of sending process
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### scatterv

          public final void scatterv​(java.lang.Object sendbuf,
                                     int[] sendcount,
                                     int[] displs,
                                     Datatype sendtype,
                                     int root)
                              throws MPIException

      Inverse of the operation `gatherv`.

      Java binding of the MPI operation `MPI_SCATTERV` using `MPI_IN_PLACE` instead of the receive buffer in the root process. This method must be used in the root process.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items sent to each process
        `displs` - displacements from which to take outgoing data
        `sendtype` - datatype of each item in send buffer
        `root` - rank of sending process
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### scatterv

          public final void scatterv​(java.lang.Object recvbuf,
                                     int recvcount,
                                     Datatype recvtype,
                                     int root)
                              throws MPIException

      Inverse of the operation `gatherv`.

      Java binding of the MPI operation `MPI_SCATTERV` using `MPI_IN_PLACE` instead of the receive buffer in the root process. This method must be used in the non-root processes.

      Parameters:
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
        `root` - rank of sending process
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iScatterv

          public final Request iScatterv​(java.nio.Buffer sendbuf,
                                         int[] sendcount,
                                         int[] displs,
                                         Datatype sendtype,
                                         java.nio.Buffer recvbuf,
                                         int recvcount,
                                         Datatype recvtype,
                                         int root)
                                  throws MPIException

      Inverse of the operation `gatherv`.

      Java binding of the MPI operation `MPI_ISCATTERV`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items sent to each process
        `displs` - displacements from which to take outgoing data
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
        `root` - rank of sending process
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iScatterv

          public final Request iScatterv​(java.nio.Buffer sendbuf,
                                         int[] sendcount,
                                         int[] displs,
                                         Datatype sendtype,
                                         int root)
                                  throws MPIException

      Inverse of the operation `gatherv`.

      Java binding of the MPI operation `MPI_ISCATTERV` using `MPI_IN_PLACE` instead of the receive buffer in the root process. This method must be used in the root process.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items sent to each process
        `displs` - displacements from which to take outgoing data
        `sendtype` - datatype of each item in send buffer
        `root` - rank of sending process
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iScatterv

          public final Request iScatterv​(java.nio.Buffer recvbuf,
                                         int recvcount,
                                         Datatype recvtype,
                                         int root)
                                  throws MPIException

      Inverse of the operation `gatherv`.

      Java binding of the MPI operation `MPI_ISCATTERV` using `MPI_IN_PLACE` instead of the receive buffer in the root process. This method must be used in the non-root processes.

      Parameters:
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
        `root` - rank of sending process
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### allGather

          public final void allGather​(java.lang.Object sendbuf,
                                      int sendcount,
                                      Datatype sendtype,
                                      java.lang.Object recvbuf,
                                      int recvcount,
                                      Datatype recvtype)
                               throws MPIException

      Similar to `gather`, but all processes receive the result.

      Java binding of the MPI operation `MPI_ALLGATHER`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### allGather

          public final void allGather​(java.lang.Object buf,
                                      int count,
                                      Datatype type)
                               throws MPIException

      Similar to `gather`, but all processes receive the result.

      Java binding of the MPI operation `MPI_ALLGATHER` using `MPI_IN_PLACE` instead of the send buffer.

      Parameters:
        `buf` - receive buffer
        `count` - number of items to receive
        `type` - datatype of each item in receive buffer
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iAllGather

          public final Request iAllGather​(java.nio.Buffer sendbuf,
                                          int sendcount,
                                          Datatype sendtype,
                                          java.nio.Buffer recvbuf,
                                          int recvcount,
                                          Datatype recvtype)
                                   throws MPIException

      Similar to `gather`, but all processes receive the result.

      Java binding of the MPI operation `MPI_IALLGATHER`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iAllGather

          public final Request iAllGather​(java.nio.Buffer buf,
                                          int count,
                                          Datatype type)
                                   throws MPIException

      Similar to `gather`, but all processes receive the result.

      Java binding of the MPI operation `MPI_IALLGATHER` using `MPI_IN_PLACE` instead of the send buffer.

      Parameters:
        `buf` - receive buffer
        `count` - number of items to receive
        `type` - datatype of each item in receive buffer
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### allGatherv

          public final void allGatherv​(java.lang.Object sendbuf,
                                       int sendcount,
                                       Datatype sendtype,
                                       java.lang.Object recvbuf,
                                       int[] recvcount,
                                       int[] displs,
                                       Datatype recvtype)
                                throws MPIException

      Similar to `gatherv`, but all processes receive the result.

      Java binding of the MPI operation `MPI_ALLGATHERV`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of elements received from each process
        `displs` - displacements at which to place incoming data
        `recvtype` - datatype of each item in receive buffer
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### allGatherv

          public final void allGatherv​(java.lang.Object recvbuf,
                                       int[] recvcount,
                                       int[] displs,
                                       Datatype recvtype)
                                throws MPIException

      Similar to `gatherv`, but all processes receive the result.

      Java binding of the MPI operation `MPI_ALLGATHERV` using `MPI_IN_PLACE` instead of the send buffer.

      Parameters:
        `recvbuf` - receive buffer
        `recvcount` - number of elements received from each process
        `displs` - displacements at which to place incoming data
        `recvtype` - datatype of each item in receive buffer
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iAllGatherv

          public final Request iAllGatherv​(java.nio.Buffer sendbuf,
                                           int sendcount,
                                           Datatype sendtype,
                                           java.nio.Buffer recvbuf,
                                           int[] recvcount,
                                           int[] displs,
                                           Datatype recvtype)
                                    throws MPIException

      Similar to `gatherv`, but all processes receive the result.

      Java binding of the MPI operation `MPI_IALLGATHERV`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of elements received from each process
        `displs` - displacements at which to place incoming data
        `recvtype` - datatype of each item in receive buffer
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iAllGatherv

          public final Request iAllGatherv​(java.nio.Buffer buf,
                                           int[] count,
                                           int[] displs,
                                           Datatype type)
                                    throws MPIException

      Similar to `gatherv`, but all processes receive the result.

      Java binding of the MPI operation `MPI_IALLGATHERV` using `MPI_IN_PLACE` instead of the send buffer.

      Parameters:
        `buf` - receive buffer
        `count` - number of elements received from each process
        `displs` - displacements at which to place incoming data
        `type` - datatype of each item in receive buffer
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### allToAll

          public final void allToAll​(java.lang.Object sendbuf,
                                     int sendcount,
                                     Datatype sendtype,
                                     java.lang.Object recvbuf,
                                     int recvcount,
                                     Datatype recvtype)
                              throws MPIException

      Extension of `allGather` to the case where each process sends distinct data to each of the receivers.

      Java binding of the MPI operation `MPI_ALLTOALL`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items sent to each process
        `sendtype` - datatype send buffer items
        `recvbuf` - receive buffer
        `recvcount` - number of items received from any process
        `recvtype` - datatype of receive buffer items
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iAllToAll

          public final Request iAllToAll​(java.nio.Buffer sendbuf,
                                         int sendcount,
                                         Datatype sendtype,
                                         java.nio.Buffer recvbuf,
                                         int recvcount,
                                         Datatype recvtype)
                                  throws MPIException

      Extension of `allGather` to the case where each process sends distinct data to each of the receivers.

      Java binding of the MPI operation `MPI_IALLTOALL`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items sent to each process
        `sendtype` - datatype send buffer items
        `recvbuf` - receive buffer
        `recvcount` - number of items received from any process
        `recvtype` - datatype of receive buffer items
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### allToAllv

          public final void allToAllv​(java.lang.Object sendbuf,
                                      int[] sendcount,
                                      int[] sdispls,
                                      Datatype sendtype,
                                      java.lang.Object recvbuf,
                                      int[] recvcount,
                                      int[] rdispls,
                                      Datatype recvtype)
                               throws MPIException

      Adds flexibility to `allToAll`: location of data for send is specified by `sdispls` and location to place data on receive side is specified by `rdispls`.

      Java binding of the MPI operation `MPI_ALLTOALLV`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items sent to each buffer
        `sdispls` - displacements from which to take outgoing data
        `sendtype` - datatype send buffer items
        `recvbuf` - receive buffer
        `recvcount` - number of elements received from each process
        `rdispls` - displacements at which to place incoming data
        `recvtype` - datatype of each item in receive buffer
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iAllToAllv

          public final Request iAllToAllv​(java.nio.Buffer sendbuf,
                                          int[] sendcount,
                                          int[] sdispls,
                                          Datatype sendtype,
                                          java.nio.Buffer recvbuf,
                                          int[] recvcount,
                                          int[] rdispls,
                                          Datatype recvtype)
                                   throws MPIException

      Adds flexibility to `allToAll`: location of data for send is specified by `sdispls` and location to place data on receive side is specified by `rdispls`.

      Java binding of the MPI operation `MPI_IALLTOALLV`.

      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items sent to each buffer
        `sdispls` - displacements from which to take outgoing data
        `sendtype` - datatype send buffer items
        `recvbuf` - receive buffer
        `recvcount` - number of elements received from each process
        `rdispls` - displacements at which to place incoming data
        `recvtype` - datatype of each item in receive buffer
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### allToAllw

          public final void allToAllw​(java.nio.Buffer sendBuf,
                                      int[] sendCount,
                                      int[] sDispls,
                                      Datatype[] sendTypes,
                                      java.nio.Buffer recvBuf,
                                      int[] recvCount,
                                      int[] rDispls,
                                      Datatype[] recvTypes)
                               throws MPIException

      Adds more flexibility to `allToAllv`: datatypes for send are specified by `sendTypes` and datatypes for receive are specified by `recvTypes` per process.

      Java binding of the MPI operation `MPI_ALLTOALLW`.

      Parameters:
        `sendBuf` - send buffer
        `sendCount` - number of items sent to each buffer
        `sDispls` - displacements from which to take outgoing data
        `sendTypes` - datatypes of send buffer items
        `recvBuf` - receive buffer
        `recvCount` - number of elements received from each process
        `rDispls` - displacements at which to place incoming data
        `recvTypes` - datatype of each item in receive buffer
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iAllToAllw

          public final Request iAllToAllw​(java.nio.Buffer sendBuf,
                                          int[] sendCount,
                                          int[] sDispls,
                                          Datatype[] sendTypes,
                                          java.nio.Buffer recvBuf,
                                          int[] recvCount,
                                          int[] rDispls,
                                          Datatype[] recvTypes)
                                   throws MPIException

      Adds more flexibility to `iAllToAllv`: datatypes for send are specified by `sendTypes` and datatypes for receive are specified by `recvTypes` per process.

      Java binding of the MPI operation `MPI_IALLTOALLW`.

      Parameters:
        `sendBuf` - send buffer
        `sendCount` - number of items sent to each buffer
        `sDispls` - displacements from which to take outgoing data
        `sendTypes` - datatype send buffer items
        `recvBuf` - receive buffer
        `recvCount` - number of elements received from each process
        `rDispls` - displacements at which to place incoming data
        `recvTypes` - datatype of each item in receive buffer
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### neighborAllGather

          public final void neighborAllGather​(java.lang.Object sendbuf,
                                              int sendcount,
                                              Datatype sendtype,
                                              java.lang.Object recvbuf,
                                              int recvcount,
                                              Datatype recvtype)
                                       throws MPIException

      Java binding of `MPI_NEIGHBOR_ALLGATHER`.
      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iNeighborAllGather

          public final Request iNeighborAllGather​(java.nio.Buffer sendbuf,
                                                  int sendcount,
                                                  Datatype sendtype,
                                                  java.nio.Buffer recvbuf,
                                                  int recvcount,
                                                  Datatype recvtype)
                                           throws MPIException

      Java binding of `MPI_INEIGHBOR_ALLGATHER`.
      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### neighborAllGatherv

          public final void neighborAllGatherv​(java.lang.Object sendbuf,
                                               int sendcount,
                                               Datatype sendtype,
                                               java.lang.Object recvbuf,
                                               int[] recvcount,
                                               int[] displs,
                                               Datatype recvtype)
                                        throws MPIException

      Java binding of `MPI_NEIGHBOR_ALLGATHERV`.
      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of elements that are received from each neighbor
        `displs` - displacements at which to place incoming data
        `recvtype` - datatype of receive buffer elements
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iNeighborAllGatherv

          public final Request iNeighborAllGatherv​(java.nio.Buffer sendbuf,
                                                   int sendcount,
                                                   Datatype sendtype,
                                                   java.nio.Buffer recvbuf,
                                                   int[] recvcount,
                                                   int[] displs,
                                                   Datatype recvtype)
                                            throws MPIException

      Java binding of `MPI_INEIGHBOR_ALLGATHERV`.
      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of elements that are received from each neighbor
        `displs` - displacements at which to place incoming data
        `recvtype` - datatype of receive buffer elements
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### neighborAllToAll

          public final void neighborAllToAll​(java.lang.Object sendbuf,
                                             int sendcount,
                                             Datatype sendtype,
                                             java.lang.Object recvbuf,
                                             int recvcount,
                                             Datatype recvtype)
                                      throws MPIException

      Java binding of `MPI_NEIGHBOR_ALLTOALL`.
      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iNeighborAllToAll

          public final Request iNeighborAllToAll​(java.nio.Buffer sendbuf,
                                                 int sendcount,
                                                 Datatype sendtype,
                                                 java.nio.Buffer recvbuf,
                                                 int recvcount,
                                                 Datatype recvtype)
                                          throws MPIException

      Java binding of `MPI_INEIGHBOR_ALLTOALL`.
      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items to send
        `sendtype` - datatype of each item in send buffer
        `recvbuf` - receive buffer
        `recvcount` - number of items to receive
        `recvtype` - datatype of each item in receive buffer
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### neighborAllToAllv

          public final void neighborAllToAllv​(java.lang.Object sendbuf,
                                              int[] sendcount,
                                              int[] sdispls,
                                              Datatype sendtype,
                                              java.lang.Object recvbuf,
                                              int[] recvcount,
                                              int[] rdispls,
                                              Datatype recvtype)
                                       throws MPIException

      Java binding of `MPI_NEIGHBOR_ALLTOALLV`.
      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items sent to each buffer
        `sdispls` - displacements from which to take outgoing data
        `sendtype` - datatype send buffer items
        `recvbuf` - receive buffer
        `recvcount` - number of elements received from each process
        `rdispls` - displacements at which to place incoming data
        `recvtype` - datatype of each item in receive buffer
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iNeighborAllToAllv

          public final Request iNeighborAllToAllv​(java.nio.Buffer sendbuf,
                                                  int[] sendcount,
                                                  int[] sdispls,
                                                  Datatype sendtype,
                                                  java.nio.Buffer recvbuf,
                                                  int[] recvcount,
                                                  int[] rdispls,
                                                  Datatype recvtype)
                                           throws MPIException

      Java binding of `MPI_INEIGHBOR_ALLTOALLV`.
      Parameters:
        `sendbuf` - send buffer
        `sendcount` - number of items sent to each buffer
        `sdispls` - displacements from which to take outgoing data
        `sendtype` - datatype send buffer items
        `recvbuf` - receive buffer
        `recvcount` - number of elements received from each process
        `rdispls` - displacements at which to place incoming data
        `recvtype` - datatype of each item in receive buffer
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### reduce

          public final void reduce​(java.lang.Object sendbuf,
                                   java.lang.Object recvbuf,
                                   int count,
                                   Datatype type,
                                   Op op,
                                   int root)
                            throws MPIException

      Combine elements in input buffer of each process using the reduce operation, and return the combined value in the output buffer of the root process.

      Java binding of the MPI operation `MPI_REDUCE`.

      The predefined operations are available in Java as `MPI.MAX`, `MPI.MIN`, `MPI.SUM`, `MPI.PROD`, `MPI.LAND`, `MPI.BAND`, `MPI.LOR`, `MPI.BOR`, `MPI.LXOR`, `MPI.BXOR`, `MPI.MINLOC` and `MPI.MAXLOC`.

      Parameters:
        `sendbuf` - send buffer
        `recvbuf` - receive buffer
        `count` - number of items in send buffer
        `type` - data type of each item in send buffer
        `op` - reduce operation
        `root` - rank of root process
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### reduce

          public final void reduce​(java.lang.Object buf,
                                   int count,
                                   Datatype type,
                                   Op op,
                                   int root)
                            throws MPIException

      Combine elements in input buffer of each process using the reduce operation, and return the combined value in the output buffer of the root process.

      Java binding of the MPI operation `MPI_REDUCE` using `MPI_IN_PLACE` instead of the send buffer.

      Parameters:
        `buf` - send/receive buffer
        `count` - number of items in buffer
        `type` - data type of each item in buffer
        `op` - reduce operation
        `root` - rank of root process
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iReduce

          public final Request iReduce​(java.nio.Buffer sendbuf,
                                       java.nio.Buffer recvbuf,
                                       int count,
                                       Datatype type,
                                       Op op,
                                       int root)
                                throws MPIException

      Combine elements in input buffer of each process using the reduce operation, and return the combined value in the output buffer of the root process.

      Java binding of the MPI operation `MPI_IREDUCE`.

      Parameters:
        `sendbuf` - send buffer
        `recvbuf` - receive buffer
        `count` - number of items in send buffer
        `type` - data type of each item in send buffer
        `op` - reduce operation
        `root` - rank of root process
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iReduce

          public final Request iReduce​(java.nio.Buffer buf,
                                       int count,
                                       Datatype type,
                                       Op op,
                                       int root)
                                throws MPIException

      Combine elements in input buffer of each process using the reduce operation, and return the combined value in the output buffer of the root process.

      Java binding of the MPI operation `MPI_IREDUCE` using `MPI_IN_PLACE` instead of the send buffer.

      Parameters:
        `buf` - send/receive buffer
        `count` - number of items in buffer
        `type` - data type of each item in buffer
        `op` - reduce operation
        `root` - rank of root process
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### allReduce

          public final void allReduce​(java.lang.Object sendbuf,
                                      java.lang.Object recvbuf,
                                      int count,
                                      Datatype type,
                                      Op op)
                               throws MPIException

      Same as `reduce` except that the result appears in receive buffer of all process in the group.

      Java binding of the MPI operation `MPI_ALLREDUCE`.

      Parameters:
        `sendbuf` - send buffer
        `recvbuf` - receive buffer
        `count` - number of items in send buffer
        `type` - data type of each item in send buffer
        `op` - reduce operation
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### allReduce

          public final void allReduce​(java.lang.Object buf,
                                      int count,
                                      Datatype type,
                                      Op op)
                               throws MPIException

      Same as `reduce` except that the result appears in receive buffer of all process in the group.

      Java binding of the MPI operation `MPI_ALLREDUCE` using `MPI_IN_PLACE` instead of the send buffer.

      Parameters:
        `buf` - receive buffer
        `count` - number of items in send buffer
        `type` - data type of each item in send buffer
        `op` - reduce operation
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iAllReduce

          public final Request iAllReduce​(java.nio.Buffer sendbuf,
                                          java.nio.Buffer recvbuf,
                                          int count,
                                          Datatype type,
                                          Op op)
                                   throws MPIException

      Same as `reduce` except that the result appears in receive buffer of all process in the group.

      Java binding of the MPI operation `MPI_IALLREDUCE`.

      Parameters:
        `sendbuf` - send buffer
        `recvbuf` - receive buffer
        `count` - number of items in send buffer
        `type` - data type of each item in send buffer
        `op` - reduce operation
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iAllReduce

          public final Request iAllReduce​(java.nio.Buffer buf,
                                          int count,
                                          Datatype type,
                                          Op op)
                                   throws MPIException

      Same as `reduce` except that the result appears in receive buffer of all process in the group.

      Java binding of the MPI operation `MPI_IALLREDUCE` using `MPI_IN_PLACE` instead of the send buffer.

      Parameters:
        `buf` - receive buffer
        `count` - number of items in send buffer
        `type` - data type of each item in send buffer
        `op` - reduce operation
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### reduceScatter

          public final void reduceScatter​(java.lang.Object sendbuf,
                                          java.lang.Object recvbuf,
                                          int[] recvcounts,
                                          Datatype type,
                                          Op op)
                                   throws MPIException

      Combine elements in input buffer of each process using the reduce operation, and scatter the combined values over the output buffers of the processes.

      Java binding of the MPI operation `MPI_REDUCE_SCATTER`.

      Parameters:
        `sendbuf` - send buffer
        `recvbuf` - receive buffer
        `recvcounts` - numbers of result elements distributed to each process
        `type` - data type of each item in send buffer
        `op` - reduce operation
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### reduceScatter

          public final void reduceScatter​(java.lang.Object buf,
                                          int[] counts,
                                          Datatype type,
                                          Op op)
                                   throws MPIException

      Combine elements in input buffer of each process using the reduce operation, and scatter the combined values over the output buffers of the processes.

      Java binding of the MPI operation `MPI_REDUCE_SCATTER` using `MPI_IN_PLACE` instead of the send buffer.

      Parameters:
        `buf` - receive buffer
        `counts` - numbers of result elements distributed to each process
        `type` - data type of each item in send buffer
        `op` - reduce operation
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iReduceScatter

          public final Request iReduceScatter​(java.nio.Buffer sendbuf,
                                              java.nio.Buffer recvbuf,
                                              int[] recvcounts,
                                              Datatype type,
                                              Op op)
                                       throws MPIException

      Combine elements in input buffer of each process using the reduce operation, and scatter the combined values over the output buffers of the processes.

      Java binding of the MPI operation `MPI_IREDUCE_SCATTER`.

      Parameters:
        `sendbuf` - send buffer
        `recvbuf` - receive buffer
        `recvcounts` - numbers of result elements distributed to each process
        `type` - data type of each item in send buffer
        `op` - reduce operation
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iReduceScatter

          public final Request iReduceScatter​(java.nio.Buffer buf,
                                              int[] counts,
                                              Datatype type,
                                              Op op)
                                       throws MPIException

      Combine elements in input buffer of each process using the reduce operation, and scatter the combined values over the output buffers of the processes.

      Java binding of the MPI operation `MPI_IREDUCE_SCATTER` using `MPI_IN_PLACE` instead of the send buffer.

      Parameters:
        `buf` - receive buffer
        `counts` - numbers of result elements distributed to each process
        `type` - data type of each item in send buffer
        `op` - reduce operation
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### reduceScatterBlock

          public final void reduceScatterBlock​(java.lang.Object sendbuf,
                                               java.lang.Object recvbuf,
                                               int recvcount,
                                               Datatype type,
                                               Op op)
                                        throws MPIException

      Combine values and scatter the results.

      Java binding of the MPI operation `MPI_REDUCE_SCATTER_BLOCK`.

      Parameters:
        `sendbuf` - send buffer
        `recvbuf` - receive buffer
        `recvcount` - element count per block
        `type` - data type of each item in send buffer
        `op` - reduce operation
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### reduceScatterBlock

          public final void reduceScatterBlock​(java.lang.Object buf,
                                               int count,
                                               Datatype type,
                                               Op op)
                                        throws MPIException

      Combine values and scatter the results.

      Java binding of the MPI operation `MPI_REDUCE_SCATTER_BLOCK` using `MPI_IN_PLACE` instead of the send buffer.

      Parameters:
        `buf` - receive buffer
        `count` - element count per block
        `type` - data type of each item in send buffer
        `op` - reduce operation
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iReduceScatterBlock

          public final Request iReduceScatterBlock​(java.nio.Buffer sendbuf,
                                                   java.nio.Buffer recvbuf,
                                                   int recvcount,
                                                   Datatype type,
                                                   Op op)
                                            throws MPIException

      Combine values and scatter the results.

      Java binding of the MPI operation `MPI_IREDUCE_SCATTER_BLOCK`.

      Parameters:
        `sendbuf` - send buffer
        `recvbuf` - receive buffer
        `recvcount` - element count per block
        `type` - data type of each item in send buffer
        `op` - reduce operation
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### iReduceScatterBlock

          public final Request iReduceScatterBlock​(java.nio.Buffer buf,
                                                   int count,
                                                   Datatype type,
                                                   Op op)
                                            throws MPIException

      Combine values and scatter the results.

      Java binding of the MPI operation `MPI_IREDUCE_SCATTER_BLOCK` using `MPI_IN_PLACE` instead of the send buffer.

      Parameters:
        `buf` - receive buffer
        `count` - element count per block
        `type` - data type of each item in send buffer
        `op` - reduce operation
      Returns:
        communication request
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### reduceLocal

          public static void reduceLocal​(java.lang.Object inBuf,
                                         java.lang.Object inOutBuf,
                                         int count,
                                         Datatype type,
                                         Op op)
                                  throws MPIException

      Apply the operation given by `op` element-wise to the elements of `inBuf` and `inOutBuf` with the result stored element-wise in `inOutBuf`.

      Java binding of the MPI operation `MPI_REDUCE_LOCAL`.

      Parameters:
        `inBuf` - input buffer
        `inOutBuf` - input buffer, will contain combined output
        `count` - number of elements
        `type` - data type of each item
        `op` - reduce operation
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### setName

          public final void setName​(java.lang.String name)
                             throws MPIException

      Sets the print name for the communicator.
      Parameters:
        `name` - name for the communicator
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.

    - #### getName

          public final java.lang.String getName()
                                         throws MPIException

      Return the print name from the communicator.
      Returns:
        name of the communicator
      Throws:
        `MPIException` - Signals that an MPI exception of some sort has occurred.