1
1

Formatting fixes for Java files.

Fixed tab indenting as well as some of the block comments
at the top of a few of the files.

Signed-off-by: Nathaniel Graham <ngraham@lanl.gov>
Этот коммит содержится в:
Nathaniel Graham 2015-07-24 11:02:13 -06:00
родитель 5f14273e32
Коммит 0d7a38552e
34 изменённых файлов: 12060 добавлений и 11125 удалений

Просмотреть файл

@ -16,26 +16,26 @@
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : Cartcomm.java * File : Cartcomm.java
* Author : Xinying Li * Author : Xinying Li
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -52,32 +52,32 @@ package mpi;
*/ */
public final class CartComm extends Intracomm public final class CartComm extends Intracomm
{ {
static static
{ {
init(); init();
} }
private static native void init(); private static native void init();
protected CartComm(long handle) throws MPIException protected CartComm(long handle) throws MPIException
{ {
super(handle); super(handle);
} }
protected CartComm(long[] commRequest) protected CartComm(long[] commRequest)
{ {
super(commRequest); super(commRequest);
} }
/** /**
* Duplicates this communicator. * Duplicates this communicator.
* <p>Java binding of {@code MPI_COMM_DUP}. * <p>Java binding of {@code MPI_COMM_DUP}.
* <p>It is recommended to use {@link #dup} instead of {@link #clone} * <p>It is recommended to use {@link #dup} instead of {@link #clone}
* because the last can't throw an {@link mpi.MPIException}. * because the last can't throw an {@link mpi.MPIException}.
* @return copy of this communicator * @return copy of this communicator
*/ */
@Override public CartComm clone() @Override public CartComm clone()
{ {
try try
{ {
return dup(); return dup();
@ -86,21 +86,21 @@ protected CartComm(long[] commRequest)
{ {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
} }
} }
/** /**
* Duplicates this communicator. * Duplicates this communicator.
* <p>Java binding of {@code MPI_COMM_DUP}. * <p>Java binding of {@code MPI_COMM_DUP}.
* @return copy of this communicator * @return copy of this communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
@Override public CartComm dup() throws MPIException @Override public CartComm dup() throws MPIException
{ {
MPI.check(); MPI.check();
return new CartComm(dup(handle)); return new CartComm(dup(handle));
} }
/** /**
* Duplicates this communicator. * Duplicates this communicator.
* <p>Java binding of {@code MPI_COMM_IDUP}. * <p>Java binding of {@code MPI_COMM_IDUP}.
* <p>The new communicator can't be used before the operation completes. * <p>The new communicator can't be used before the operation completes.
@ -108,13 +108,13 @@ protected CartComm(long[] commRequest)
* @return copy of this communicator * @return copy of this communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred. Signals that an MPI exception of some sort has occurred.
*/ */
@Override public CartComm iDup() throws MPIException @Override public CartComm iDup() throws MPIException
{ {
MPI.check(); MPI.check();
return new CartComm(iDup(handle)); return new CartComm(iDup(handle));
} }
/** /**
* Returns cartesian topology information. * Returns cartesian topology information.
* <p>Java binding of the MPI operations {@code MPI_CARTDIM_GET} and * <p>Java binding of the MPI operations {@code MPI_CARTDIM_GET} and
* {@code MPI_CART_GET}. * {@code MPI_CART_GET}.
@ -123,45 +123,45 @@ protected CartComm(long[] commRequest)
* @return object containing dimensions, periods and local coordinates * @return object containing dimensions, periods and local coordinates
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public CartParms getTopo() throws MPIException public CartParms getTopo() throws MPIException
{ {
MPI.check(); MPI.check();
return getTopo(handle); return getTopo(handle);
} }
private native CartParms getTopo(long comm) throws MPIException; private native CartParms getTopo(long comm) throws MPIException;
/** /**
* Translate logical process coordinates to process rank. * Translate logical process coordinates to process rank.
* <p>Java binding of the MPI operation {@code MPI_CART_RANK}. * <p>Java binding of the MPI operation {@code MPI_CART_RANK}.
* @param coords Cartesian coordinates of a process * @param coords Cartesian coordinates of a process
* @return rank of the specified process * @return rank of the specified process
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int getRank(int[] coords) throws MPIException public int getRank(int[] coords) throws MPIException
{ {
MPI.check(); MPI.check();
return getRank(handle, coords); return getRank(handle, coords);
} }
private native int getRank(long comm, int[] coords) throws MPIException; private native int getRank(long comm, int[] coords) throws MPIException;
/** /**
* Translate process rank to logical process coordinates. * Translate process rank to logical process coordinates.
* <p>Java binding of the MPI operation {@code MPI_CART_COORDS}. * <p>Java binding of the MPI operation {@code MPI_CART_COORDS}.
* @param rank rank of a process * @param rank rank of a process
* @return Cartesian coordinates of the specified process * @return Cartesian coordinates of the specified process
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int[] getCoords(int rank) throws MPIException public int[] getCoords(int rank) throws MPIException
{ {
MPI.check(); MPI.check();
return getCoords(handle, rank); return getCoords(handle, rank);
} }
private native int[] getCoords(long comm, int rank) throws MPIException; private native int[] getCoords(long comm, int rank) throws MPIException;
/** /**
* Compute source and destination ranks for "shift" communication. * Compute source and destination ranks for "shift" communication.
* <p>Java binding of the MPI operation {@code MPI_CART_SHIFT}. * <p>Java binding of the MPI operation {@code MPI_CART_SHIFT}.
* @param direction coordinate dimension of shift * @param direction coordinate dimension of shift
@ -169,16 +169,16 @@ private native int[] getCoords(long comm, int rank) throws MPIException;
* @return object containing ranks of source and destination processes * @return object containing ranks of source and destination processes
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public ShiftParms shift(int direction, int disp) throws MPIException public ShiftParms shift(int direction, int disp) throws MPIException
{ {
MPI.check(); MPI.check();
return shift(handle, direction, disp); return shift(handle, direction, disp);
} }
private native ShiftParms shift(long comm, int direction, int disp) private native ShiftParms shift(long comm, int direction, int disp)
throws MPIException; throws MPIException;
/** /**
* Partition cartesian communicator into subgroups of lower dimension. * Partition cartesian communicator into subgroups of lower dimension.
* <p>Java binding of the MPI operation {@code MPI_CART_SUB}. * <p>Java binding of the MPI operation {@code MPI_CART_SUB}.
* @param remainDims by dimension, {@code true} if dimension is to be kept, * @param remainDims by dimension, {@code true} if dimension is to be kept,
@ -186,15 +186,15 @@ private native ShiftParms shift(long comm, int direction, int disp)
* @return communicator containing subgrid including this process * @return communicator containing subgrid including this process
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public CartComm sub(boolean[] remainDims) throws MPIException public CartComm sub(boolean[] remainDims) throws MPIException
{ {
MPI.check(); MPI.check();
return new CartComm(sub(handle, remainDims)); return new CartComm(sub(handle, remainDims));
} }
private native long sub(long comm, boolean[] remainDims) throws MPIException; private native long sub(long comm, boolean[] remainDims) throws MPIException;
/** /**
* Compute an optimal placement. * Compute an optimal placement.
* <p>Java binding of the MPI operation {@code MPI_CART_MAP}. * <p>Java binding of the MPI operation {@code MPI_CART_MAP}.
* <p>The number of dimensions is taken to be size of the {@code dims} argument. * <p>The number of dimensions is taken to be size of the {@code dims} argument.
@ -204,29 +204,29 @@ private native long sub(long comm, boolean[] remainDims) throws MPIException;
* @return reordered rank of calling process * @return reordered rank of calling process
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int map(int[] dims, boolean[] periods) throws MPIException public int map(int[] dims, boolean[] periods) throws MPIException
{ {
MPI.check(); MPI.check();
return map(handle, dims, periods); return map(handle, dims, periods);
} }
private native int map(long comm, int[] dims, boolean[] periods) private native int map(long comm, int[] dims, boolean[] periods)
throws MPIException; throws MPIException;
/** /**
* Select a balanced distribution of processes per coordinate direction. * Select a balanced distribution of processes per coordinate direction.
* <p>Java binding of the MPI operation {@code MPI_DIMS_CREATE}. * <p>Java binding of the MPI operation {@code MPI_DIMS_CREATE}.
* @param nnodes number of nodes in a grid * @param nnodes number of nodes in a grid
* @param dims array specifying the number of nodes in each dimension * @param dims array specifying the number of nodes in each dimension
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static void createDims(int nnodes, int[] dims) throws MPIException public static void createDims(int nnodes, int[] dims) throws MPIException
{ {
MPI.check(); MPI.check();
createDims_jni(nnodes, dims); createDims_jni(nnodes, dims);
} }
private static native void createDims_jni(int nnodes, int[] dims) private static native void createDims_jni(int nnodes, int[] dims)
throws MPIException; throws MPIException;
} // Cartcomm } // Cartcomm

Просмотреть файл

@ -9,31 +9,33 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : CartParms.java * File : CartParms.java
* Author : Xinying Li * Author : Xinying Li
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -50,65 +52,65 @@ package mpi;
*/ */
public final class CartParms public final class CartParms
{ {
/** Number of processes for each cartesian dimension. */ /** Number of processes for each cartesian dimension. */
private final int[] dims; private final int[] dims;
/** Periodicity (true/false) for each cartesian dimension. */ /** Periodicity (true/false) for each cartesian dimension. */
private final boolean[] periods; private final boolean[] periods;
/** Coordinates of calling process in cartesian structure. */ /** Coordinates of calling process in cartesian structure. */
private final int[] coords; private final int[] coords;
/** /**
* Constructs a cartesian topology information object. * Constructs a cartesian topology information object.
* @param dims number of processes for each cartesian dimension. * @param dims number of processes for each cartesian dimension.
* @param periods periodicity (true/false) for each cartesian dimension. * @param periods periodicity (true/false) for each cartesian dimension.
* @param coords coordinates of calling process in cartesian structure. * @param coords coordinates of calling process in cartesian structure.
*/ */
protected CartParms(int[] dims, boolean[] periods, int[] coords) protected CartParms(int[] dims, boolean[] periods, int[] coords)
{ {
this.dims = dims; this.dims = dims;
this.periods = periods; this.periods = periods;
this.coords = coords; this.coords = coords;
} }
/** /**
* Returns the number of dimensions. * Returns the number of dimensions.
* @return number of dimensions. * @return number of dimensions.
*/ */
public int getDimCount() public int getDimCount()
{ {
return dims.length; return dims.length;
} }
/** /**
* Returns the number of processes for a cartesian dimension. * Returns the number of processes for a cartesian dimension.
* @param i cartesian dimension. * @param i cartesian dimension.
* @return number of processes for a cartesian dimension. * @return number of processes for a cartesian dimension.
*/ */
public int getDim(int i) public int getDim(int i)
{ {
return dims[i]; return dims[i];
} }
/** /**
* Returns the periodicity (true/false) for a cartesian dimension. * Returns the periodicity (true/false) for a cartesian dimension.
* @param i cartesian dimension. * @param i cartesian dimension.
* @return periodicity for a cartesian dimension. * @return periodicity for a cartesian dimension.
*/ */
public boolean getPeriod(int i) public boolean getPeriod(int i)
{ {
return periods[i]; return periods[i];
} }
/** /**
* Returns the coordinate of calling process for a cartesian dimension. * Returns the coordinate of calling process for a cartesian dimension.
* @param i cartesian dimension. * @param i cartesian dimension.
* @return coordinate of calling process for a cartesian dimension. * @return coordinate of calling process for a cartesian dimension.
*/ */
public int getCoord(int i) public int getCoord(int i)
{ {
return coords[i]; return coords[i];
} }
} // CartParms } // CartParms

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -9,6 +9,8 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -20,8 +22,7 @@ package mpi;
class Constant class Constant
{ {
protected int THREAD_SINGLE, THREAD_FUNNELED, THREAD_SERIALIZED, protected int THREAD_SINGLE, THREAD_FUNNELED, THREAD_SERIALIZED, THREAD_MULTIPLE;
THREAD_MULTIPLE;
protected int GRAPH, DIST_GRAPH, CART; protected int GRAPH, DIST_GRAPH, CART;
protected int ANY_SOURCE, ANY_TAG; protected int ANY_SOURCE, ANY_TAG;
@ -30,8 +31,7 @@ class Constant
protected int IDENT, CONGRUENT, SIMILAR, UNEQUAL; protected int IDENT, CONGRUENT, SIMILAR, UNEQUAL;
protected int TAG_UB, HOST, IO, WTIME_IS_GLOBAL; protected int TAG_UB, HOST, IO, WTIME_IS_GLOBAL;
protected int APPNUM, LASTUSEDCODE, UNIVERSE_SIZE, WIN_BASE, WIN_SIZE, protected int APPNUM, LASTUSEDCODE, UNIVERSE_SIZE, WIN_BASE, WIN_SIZE, WIN_DISP_UNIT;
WIN_DISP_UNIT;
protected int VERSION, SUBVERSION; protected int VERSION, SUBVERSION;
protected int ROOT, KEYVAL_INVALID, BSEND_OVERHEAD; protected int ROOT, KEYVAL_INVALID, BSEND_OVERHEAD;
@ -39,8 +39,7 @@ class Constant
protected int MAX_INFO_KEY, MAX_INFO_VAL; protected int MAX_INFO_KEY, MAX_INFO_VAL;
protected int ORDER_C, ORDER_FORTRAN; protected int ORDER_C, ORDER_FORTRAN;
protected int DISTRIBUTE_BLOCK, DISTRIBUTE_CYCLIC, DISTRIBUTE_NONE, protected int DISTRIBUTE_BLOCK, DISTRIBUTE_CYCLIC, DISTRIBUTE_NONE, DISTRIBUTE_DFLT_DARG;
DISTRIBUTE_DFLT_DARG;
protected int MODE_CREATE, MODE_RDONLY, MODE_WRONLY, MODE_RDWR, protected int MODE_CREATE, MODE_RDONLY, MODE_WRONLY, MODE_RDWR,
MODE_DELETE_ON_CLOSE, MODE_UNIQUE_OPEN, MODE_EXCL, MODE_DELETE_ON_CLOSE, MODE_UNIQUE_OPEN, MODE_EXCL,

Просмотреть файл

@ -16,26 +16,26 @@
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : Datatype.java * File : Datatype.java
* Author : Sang Lim, Sung-Hoon Ko, Xinying Li, Bryan Carpenter * Author : Sang Lim, Sung-Hoon Ko, Xinying Li, Bryan Carpenter
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -54,39 +54,39 @@ import java.nio.*;
*/ */
public final class Datatype implements Freeable public final class Datatype implements Freeable
{ {
protected long handle; protected long handle;
protected int baseType; protected int baseType;
protected int baseSize; protected int baseSize;
// Cache to avoid unnecessary jni calls. // Cache to avoid unnecessary jni calls.
private int lb, extent, trueLb, trueExtent; private int lb, extent, trueLb, trueExtent;
protected static final int NULL = 0; protected static final int NULL = 0;
protected static final int BYTE = 1; protected static final int BYTE = 1;
protected static final int CHAR = 2; protected static final int CHAR = 2;
protected static final int SHORT = 3; protected static final int SHORT = 3;
protected static final int BOOLEAN = 4; protected static final int BOOLEAN = 4;
protected static final int INT = 5; protected static final int INT = 5;
protected static final int LONG = 6; protected static final int LONG = 6;
protected static final int FLOAT = 7; protected static final int FLOAT = 7;
protected static final int DOUBLE = 8; protected static final int DOUBLE = 8;
protected static final int PACKED = 9; protected static final int PACKED = 9;
protected static final int INT2 = 10; protected static final int INT2 = 10;
protected static final int SHORT_INT = 11; protected static final int SHORT_INT = 11;
protected static final int LONG_INT = 12; protected static final int LONG_INT = 12;
protected static final int FLOAT_INT = 13; protected static final int FLOAT_INT = 13;
protected static final int DOUBLE_INT = 14; protected static final int DOUBLE_INT = 14;
protected static final int FLOAT_COMPLEX = 15; protected static final int FLOAT_COMPLEX = 15;
protected static final int DOUBLE_COMPLEX = 16; protected static final int DOUBLE_COMPLEX = 16;
static static
{ {
init(); init();
} }
private static native void init(); private static native void init();
/* /*
* Constructor used in static initializer of 'MPI'. * Constructor used in static initializer of 'MPI'.
* *
* (Called before MPI.Init(), so cannot make any native MPI calls.) * (Called before MPI.Init(), so cannot make any native MPI calls.)
@ -95,182 +95,182 @@ private static native void init();
* datatype objects for 'BYTE', etc in static initializers invoked before * datatype objects for 'BYTE', etc in static initializers invoked before
* MPI.Init(), then initialize objects after MPI initialized.) * MPI.Init(), then initialize objects after MPI initialized.)
*/ */
protected Datatype() protected Datatype()
{ {
} }
protected void setBasic(int type) protected void setBasic(int type)
{ {
baseType = type; baseType = type;
handle = getDatatype(type); handle = getDatatype(type);
baseSize = type == NULL ? 0 : getSize(handle); baseSize = type == NULL ? 0 : getSize(handle);
} }
protected void setBasic(int type, Datatype oldType) protected void setBasic(int type, Datatype oldType)
{ {
baseType = oldType.baseType; baseType = oldType.baseType;
handle = getDatatype(type); handle = getDatatype(type);
baseSize = oldType.baseSize; baseSize = oldType.baseSize;
} }
private static native long getDatatype(int type); private static native long getDatatype(int type);
/* /*
* Constructor used in 'create*' methods. * Constructor used in 'create*' methods.
*/ */
private Datatype(Datatype oldType, long handle) private Datatype(Datatype oldType, long handle)
{ {
baseType = oldType.baseType; baseType = oldType.baseType;
baseSize = oldType.baseSize; baseSize = oldType.baseSize;
this.handle = handle; this.handle = handle;
} }
/* /*
* Constructor used in 'create*' methods. * Constructor used in 'create*' methods.
*/ */
private Datatype(int baseType, int baseSize, long handle) private Datatype(int baseType, int baseSize, long handle)
{ {
this.baseType = baseType; this.baseType = baseType;
this.baseSize = baseSize; this.baseSize = baseSize;
this.handle = handle; this.handle = handle;
} }
/** /**
* Returns the lower bound of a datatype. * Returns the lower bound of a datatype.
* <p>Java binding of the MPI operation {@code MPI_TYPE_GET_EXTENT}. * <p>Java binding of the MPI operation {@code MPI_TYPE_GET_EXTENT}.
* @return lower bound of datatype * @return lower bound of datatype
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int getLb() throws MPIException public int getLb() throws MPIException
{ {
if(extent == 0) if(extent == 0)
getLbExtent(); getLbExtent();
return lb; return lb;
} }
/** /**
* Returns the extent of a datatype. * Returns the extent of a datatype.
* <p>Java binding of the MPI operation {@code MPI_TYPE_GET_EXTENT}. * <p>Java binding of the MPI operation {@code MPI_TYPE_GET_EXTENT}.
* @return datatype extent * @return datatype extent
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int getExtent() throws MPIException public int getExtent() throws MPIException
{ {
if(extent == 0) if(extent == 0)
getLbExtent(); getLbExtent();
return extent; return extent;
} }
private void getLbExtent() throws MPIException private void getLbExtent() throws MPIException
{ {
MPI.check(); MPI.check();
int lbExt[] = new int[2]; int lbExt[] = new int[2];
getLbExtent(handle, lbExt); getLbExtent(handle, lbExt);
lb = lbExt[0] / baseSize; lb = lbExt[0] / baseSize;
extent = lbExt[1] / baseSize; extent = lbExt[1] / baseSize;
} }
private native void getLbExtent(long handle, int[] lbExt); private native void getLbExtent(long handle, int[] lbExt);
/** /**
* Returns the true lower bound of a datatype. * Returns the true lower bound of a datatype.
* <p>Java binding of the MPI operation {@code MPI_TYPE_GET_TRUE_EXTENT}. * <p>Java binding of the MPI operation {@code MPI_TYPE_GET_TRUE_EXTENT}.
* @return lower bound of datatype * @return lower bound of datatype
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int getTrueLb() throws MPIException public int getTrueLb() throws MPIException
{ {
if(trueExtent == 0) if(trueExtent == 0)
getTrueLbExtent(); getTrueLbExtent();
return trueLb; return trueLb;
} }
/** /**
* Returns the true extent of a datatype. * Returns the true extent of a datatype.
* <p>Java binding of the MPI operation {@code MPI_TYPE_GET_TRUE_EXTENT}. * <p>Java binding of the MPI operation {@code MPI_TYPE_GET_TRUE_EXTENT}.
* @return datatype true extent * @return datatype true extent
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int getTrueExtent() throws MPIException public int getTrueExtent() throws MPIException
{ {
if(trueExtent == 0) if(trueExtent == 0)
getTrueLbExtent(); getTrueLbExtent();
return trueExtent; return trueExtent;
} }
private void getTrueLbExtent() throws MPIException private void getTrueLbExtent() throws MPIException
{ {
MPI.check(); MPI.check();
int lbExt[] = new int[2]; int lbExt[] = new int[2];
getTrueLbExtent(handle, lbExt); getTrueLbExtent(handle, lbExt);
trueLb = lbExt[0] / baseSize; trueLb = lbExt[0] / baseSize;
trueExtent = lbExt[1] / baseSize; trueExtent = lbExt[1] / baseSize;
} }
private native void getTrueLbExtent(long handle, int[] lbExt); private native void getTrueLbExtent(long handle, int[] lbExt);
/** /**
* Returns the total size of a datatype - the number of buffer * Returns the total size of a datatype - the number of buffer
* elements it represents. * elements it represents.
* <p>Java binding of the MPI operation {@code MPI_TYPE_SIZE}. * <p>Java binding of the MPI operation {@code MPI_TYPE_SIZE}.
* @return datatype size * @return datatype size
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int getSize() throws MPIException public int getSize() throws MPIException
{ {
MPI.check(); MPI.check();
return getSize(handle) / baseSize; return getSize(handle) / baseSize;
} }
private native int getSize(long type); private native int getSize(long type);
/** /**
* Commits a derived datatype. * Commits a derived datatype.
* Java binding of the MPI operation {@code MPI_TYPE_COMMIT}. * Java binding of the MPI operation {@code MPI_TYPE_COMMIT}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void commit() throws MPIException public void commit() throws MPIException
{ {
MPI.check(); MPI.check();
commit(handle); commit(handle);
} }
private native void commit(long type); private native void commit(long type);
/** /**
* Frees the datatype. * Frees the datatype.
* <p>Java binding of the MPI operation {@code MPI_TYPE_FREE}. * <p>Java binding of the MPI operation {@code MPI_TYPE_FREE}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
@Override public void free() throws MPIException @Override public void free() throws MPIException
{ {
MPI.check(); MPI.check();
handle = free(handle); handle = free(handle);
} }
private native long free(long type) throws MPIException; private native long free(long type) throws MPIException;
/** /**
* Returns {@code true} if this datatype is MPI_DATATYPE_NULL. * Returns {@code true} if this datatype is MPI_DATATYPE_NULL.
* @return {@code true} if this datatype is MPI_DATATYPE_NULL * @return {@code true} if this datatype is MPI_DATATYPE_NULL
*/ */
public boolean isNull() public boolean isNull()
{ {
return handle == MPI.DATATYPE_NULL.handle; return handle == MPI.DATATYPE_NULL.handle;
} }
/** /**
* Java binding of {@code MPI_TYPE_DUP}. * Java binding of {@code MPI_TYPE_DUP}.
* <p>It is recommended to use {@link #dup} instead of {@link #clone} * <p>It is recommended to use {@link #dup} instead of {@link #clone}
* because the last can't throw an {@link mpi.MPIException}. * because the last can't throw an {@link mpi.MPIException}.
* @return new datatype * @return new datatype
*/ */
@Override public Datatype clone() @Override public Datatype clone()
{ {
try try
{ {
return dup(); return dup();
@ -279,22 +279,22 @@ public boolean isNull()
{ {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
} }
} }
/** /**
* Java binding of {@code MPI_TYPE_DUP}. * Java binding of {@code MPI_TYPE_DUP}.
* @return new datatype * @return new datatype
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Datatype dup() throws MPIException public Datatype dup() throws MPIException
{ {
MPI.check(); MPI.check();
return new Datatype(this, dup(handle)); return new Datatype(this, dup(handle));
} }
private native long dup(long type) throws MPIException; private native long dup(long type) throws MPIException;
/** /**
* Construct new datatype representing replication of old datatype into * Construct new datatype representing replication of old datatype into
* contiguous locations. * contiguous locations.
* <p>Java binding of the MPI operation {@code MPI_TYPE_CONTIGUOUS}. * <p>Java binding of the MPI operation {@code MPI_TYPE_CONTIGUOUS}.
@ -305,16 +305,16 @@ private native long dup(long type) throws MPIException;
* @return new datatype * @return new datatype
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Datatype createContiguous(int count, Datatype oldType) public static Datatype createContiguous(int count, Datatype oldType)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
return new Datatype(oldType, getContiguous(count, oldType.handle)); return new Datatype(oldType, getContiguous(count, oldType.handle));
} }
private static native long getContiguous(int count, long oldType); private static native long getContiguous(int count, long oldType);
/** /**
* Construct new datatype representing replication of old datatype into * Construct new datatype representing replication of old datatype into
* locations that consist of equally spaced blocks. * locations that consist of equally spaced blocks.
* <p>Java binding of the MPI operation {@code MPI_TYPE_VECTOR}. * <p>Java binding of the MPI operation {@code MPI_TYPE_VECTOR}.
@ -327,20 +327,20 @@ private static native long getContiguous(int count, long oldType);
* @return new datatype * @return new datatype
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Datatype createVector(int count, int blockLength, public static Datatype createVector(int count, int blockLength,
int stride, Datatype oldType) int stride, Datatype oldType)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
long handle = getVector(count, blockLength, stride, oldType.handle); long handle = getVector(count, blockLength, stride, oldType.handle);
return new Datatype(oldType, handle); return new Datatype(oldType, handle);
} }
private static native long getVector( private static native long getVector(
int count, int blockLength, int stride, long oldType) int count, int blockLength, int stride, long oldType)
throws MPIException; throws MPIException;
/** /**
* Identical to {@code createVector} except that the stride is expressed * Identical to {@code createVector} except that the stride is expressed
* directly in terms of the buffer index, rather than the units of * directly in terms of the buffer index, rather than the units of
* the old type. * the old type.
@ -352,20 +352,20 @@ private static native long getVector(
* @return new datatype * @return new datatype
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Datatype createHVector(int count, int blockLength, public static Datatype createHVector(int count, int blockLength,
int stride, Datatype oldType) int stride, Datatype oldType)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
long handle = getHVector(count, blockLength, stride, oldType.handle); long handle = getHVector(count, blockLength, stride, oldType.handle);
return new Datatype(oldType, handle); return new Datatype(oldType, handle);
} }
private static native long getHVector( private static native long getHVector(
int count, int blockLength, int stride, long oldType) int count, int blockLength, int stride, long oldType)
throws MPIException; throws MPIException;
/** /**
* Construct new datatype representing replication of old datatype into * Construct new datatype representing replication of old datatype into
* a sequence of blocks where each block can contain a different number * a sequence of blocks where each block can contain a different number
* of copies and have a different displacement. * of copies and have a different displacement.
@ -380,20 +380,20 @@ private static native long getHVector(
* @return new datatype * @return new datatype
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Datatype createIndexed(int[] blockLengths, public static Datatype createIndexed(int[] blockLengths,
int[] displacements, Datatype oldType) int[] displacements, Datatype oldType)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
long handle = getIndexed(blockLengths, displacements, oldType.handle); long handle = getIndexed(blockLengths, displacements, oldType.handle);
return new Datatype(oldType, handle); return new Datatype(oldType, handle);
} }
private static native long getIndexed( private static native long getIndexed(
int[] blockLengths, int[] displacements, long oldType) int[] blockLengths, int[] displacements, long oldType)
throws MPIException; throws MPIException;
/** /**
* Identical to {@code createIndexed} except that the displacements are * Identical to {@code createIndexed} except that the displacements are
* expressed directly in terms of the buffer index, rather than the * expressed directly in terms of the buffer index, rather than the
* units of the old type. * units of the old type.
@ -404,20 +404,20 @@ private static native long getIndexed(
* @return new datatype * @return new datatype
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Datatype createHIndexed(int[] blockLengths, public static Datatype createHIndexed(int[] blockLengths,
int[] displacements, Datatype oldType) int[] displacements, Datatype oldType)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
long handle = getHIndexed(blockLengths, displacements, oldType.handle); long handle = getHIndexed(blockLengths, displacements, oldType.handle);
return new Datatype(oldType, handle); return new Datatype(oldType, handle);
} }
private static native long getHIndexed( private static native long getHIndexed(
int[] blockLengths, int[] displacements, long oldType) int[] blockLengths, int[] displacements, long oldType)
throws MPIException; throws MPIException;
/** /**
* The most general type constructor. * The most general type constructor.
* <p>Java binding of the MPI operation {@code MPI_TYPE_STRUCT}. * <p>Java binding of the MPI operation {@code MPI_TYPE_STRUCT}.
* <p>The number of blocks is taken to be size of the {@code blockLengths} * <p>The number of blocks is taken to be size of the {@code blockLengths}
@ -429,24 +429,24 @@ private static native long getHIndexed(
* @return new datatype * @return new datatype
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Datatype createStruct(int[] blockLengths, public static Datatype createStruct(int[] blockLengths,
int[] displacements, Datatype[] types) int[] displacements, Datatype[] types)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
long handle = getStruct(blockLengths, displacements, types); long handle = getStruct(blockLengths, displacements, types);
return new Datatype(MPI.BYTE, handle); return new Datatype(MPI.BYTE, handle);
} }
private static native long getStruct( private static native long getStruct(
int[] blockLengths, int[] displacements, Datatype[] types) int[] blockLengths, int[] displacements, Datatype[] types)
throws MPIException; throws MPIException;
/* /*
* JMS add proper documentation here * JMS add proper documentation here
* JMS int != Aint! This needs to be fixed throughout. * JMS int != Aint! This needs to be fixed throughout.
*/ */
/** /**
* Create a datatype with a new lower bound and extent from an existing * Create a datatype with a new lower bound and extent from an existing
* datatype. * datatype.
* <p>Java binding of the MPI operation {@code MPI_TYPE_CREATE_RESIZED}. * <p>Java binding of the MPI operation {@code MPI_TYPE_CREATE_RESIZED}.
@ -456,124 +456,124 @@ private static native long getStruct(
* @return new datatype * @return new datatype
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Datatype createResized(Datatype oldType, int lb, int extent) public static Datatype createResized(Datatype oldType, int lb, int extent)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
long handle = getResized(oldType.handle, lb, extent); long handle = getResized(oldType.handle, lb, extent);
return new Datatype(oldType, handle); return new Datatype(oldType, handle);
} }
private static native long getResized(long oldType, int lb, int extent); private static native long getResized(long oldType, int lb, int extent);
/** /**
* Sets the print name for the datatype. * Sets the print name for the datatype.
* @param name name for the datatype * @param name name for the datatype
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void setName(String name) throws MPIException public void setName(String name) throws MPIException
{ {
MPI.check(); MPI.check();
setName(handle, name); setName(handle, name);
} }
private native void setName(long handle, String name) throws MPIException; private native void setName(long handle, String name) throws MPIException;
/** /**
* Return the print name from the datatype. * Return the print name from the datatype.
* @return name of the datatype * @return name of the datatype
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public String getName() throws MPIException public String getName() throws MPIException
{ {
MPI.check(); MPI.check();
return getName(handle); return getName(handle);
} }
private native String getName(long handle) throws MPIException; private native String getName(long handle) throws MPIException;
/** /**
* Create a new attribute key. * Create a new attribute key.
* <p>Java binding of the MPI operation {@code MPI_TYPE_CREATE_KEYVAL}. * <p>Java binding of the MPI operation {@code MPI_TYPE_CREATE_KEYVAL}.
* @return attribute key for future access * @return attribute key for future access
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static int createKeyval() throws MPIException public static int createKeyval() throws MPIException
{ {
MPI.check(); MPI.check();
return createKeyval_jni(); return createKeyval_jni();
} }
private static native int createKeyval_jni() throws MPIException; private static native int createKeyval_jni() throws MPIException;
/** /**
* Frees an attribute key. * Frees an attribute key.
* <p>Java binding of the MPI operation {@code MPI_TYPE_FREE_KEYVAL}. * <p>Java binding of the MPI operation {@code MPI_TYPE_FREE_KEYVAL}.
* @param keyval attribute key * @param keyval attribute key
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static void freeKeyval(int keyval) throws MPIException public static void freeKeyval(int keyval) throws MPIException
{ {
MPI.check(); MPI.check();
freeKeyval_jni(keyval); freeKeyval_jni(keyval);
} }
private static native void freeKeyval_jni(int keyval) throws MPIException; private static native void freeKeyval_jni(int keyval) throws MPIException;
/** /**
* Stores attribute value associated with a key. * Stores attribute value associated with a key.
* <p>Java binding of the MPI operation {@code MPI_TYPE_SET_ATTR}. * <p>Java binding of the MPI operation {@code MPI_TYPE_SET_ATTR}.
* @param keyval attribute key * @param keyval attribute key
* @param value attribute value * @param value attribute value
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void setAttr(int keyval, Object value) throws MPIException public void setAttr(int keyval, Object value) throws MPIException
{ {
MPI.check(); MPI.check();
setAttr(handle, keyval, MPI.attrSet(value)); setAttr(handle, keyval, MPI.attrSet(value));
} }
private native void setAttr(long type, int keyval, byte[] value) private native void setAttr(long type, int keyval, byte[] value)
throws MPIException; throws MPIException;
/** /**
* Retrieves attribute value by key. * Retrieves attribute value by key.
* <p>Java binding of the MPI operation {@code MPI_TYPE_GET_ATTR}. * <p>Java binding of the MPI operation {@code MPI_TYPE_GET_ATTR}.
* @param keyval attribute key * @param keyval attribute key
* @return attribute value or null if no attribute is associated with the key. * @return attribute value or null if no attribute is associated with the key.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Object getAttr(int keyval) throws MPIException public Object getAttr(int keyval) throws MPIException
{ {
MPI.check(); MPI.check();
Object obj = getAttr(handle, keyval); Object obj = getAttr(handle, keyval);
return obj instanceof byte[] ? MPI.attrGet((byte[])obj) : obj; return obj instanceof byte[] ? MPI.attrGet((byte[])obj) : obj;
} }
private native Object getAttr(long type, int keyval) throws MPIException; private native Object getAttr(long type, int keyval) throws MPIException;
/** /**
* Deletes an attribute value associated with a key. * Deletes an attribute value associated with a key.
* <p>Java binding of the MPI operation {@code MPI_TYPE_DELETE_ATTR}. * <p>Java binding of the MPI operation {@code MPI_TYPE_DELETE_ATTR}.
* @param keyval attribute key * @param keyval attribute key
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void deleteAttr(int keyval) throws MPIException public void deleteAttr(int keyval) throws MPIException
{ {
MPI.check(); MPI.check();
deleteAttr(handle, keyval); deleteAttr(handle, keyval);
} }
private native void deleteAttr(long type, int keyval) throws MPIException; private native void deleteAttr(long type, int keyval) throws MPIException;
/** /**
* Gets the offset of a buffer in bytes. * Gets the offset of a buffer in bytes.
* @param buffer buffer * @param buffer buffer
* @return offset in bytes * @return offset in bytes
*/ */
protected int getOffset(Object buffer) protected int getOffset(Object buffer)
{ {
return baseSize * ((Buffer)buffer).arrayOffset(); return baseSize * ((Buffer)buffer).arrayOffset();
} }
} // Datatype } // Datatype

Просмотреть файл

@ -9,6 +9,8 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -23,85 +25,85 @@ package mpi;
*/ */
public final class DistGraphNeighbors public final class DistGraphNeighbors
{ {
private final int[] sources, sourceWeights, destinations, destWeights; private final int[] sources, sourceWeights, destinations, destWeights;
private final boolean weighted; private final boolean weighted;
protected DistGraphNeighbors( protected DistGraphNeighbors(
int[] sources, int[] sourceWeights, int[] sources, int[] sourceWeights,
int[] destinations, int[] destWeights, boolean weighted) int[] destinations, int[] destWeights, boolean weighted)
{ {
this.sources = sources; this.sources = sources;
this.sourceWeights = sourceWeights; this.sourceWeights = sourceWeights;
this.destinations = destinations; this.destinations = destinations;
this.destWeights = destWeights; this.destWeights = destWeights;
this.weighted = weighted; this.weighted = weighted;
} }
/** /**
* Gets the number of edges into this process. * Gets the number of edges into this process.
* @return number of edges into this process * @return number of edges into this process
*/ */
public int getInDegree() public int getInDegree()
{ {
return sources.length; return sources.length;
} }
/** /**
* Gets the number of edges out of this process. * Gets the number of edges out of this process.
* @return number of edges out of this process * @return number of edges out of this process
*/ */
public int getOutDegree() public int getOutDegree()
{ {
return destinations.length; return destinations.length;
} }
/** /**
* Returns false if {@code MPI_UNWEIGHTED} was supplied during creation. * Returns false if {@code MPI_UNWEIGHTED} was supplied during creation.
* @return false if {@code MPI_UNWEIGHTED} was supplied, true otherwise * @return false if {@code MPI_UNWEIGHTED} was supplied, true otherwise
*/ */
public boolean isWeighted() public boolean isWeighted()
{ {
return weighted; return weighted;
} }
/** /**
* Gets a process for which the calling processs is a destination. * Gets a process for which the calling processs is a destination.
* @param i source index * @param i source index
* @return process for which the calling processs is a destination * @return process for which the calling processs is a destination
*/ */
public int getSource(int i) public int getSource(int i)
{ {
return sources[i]; return sources[i];
} }
/** /**
* Gets the weight of an edge into the calling process. * Gets the weight of an edge into the calling process.
* @param i source index * @param i source index
* @return weight of the edge into the calling process * @return weight of the edge into the calling process
*/ */
public int getSourceWeight(int i) public int getSourceWeight(int i)
{ {
return sourceWeights[i]; return sourceWeights[i];
} }
/** /**
* Gets a process for which the calling process is a source * Gets a process for which the calling process is a source
* @param i destination index * @param i destination index
* @return process for which the calling process is a source * @return process for which the calling process is a source
*/ */
public int getDestination(int i) public int getDestination(int i)
{ {
return destinations[i]; return destinations[i];
} }
/** /**
* Gets the weight of an edge out of the calling process. * Gets the weight of an edge out of the calling process.
* @param i destination index * @param i destination index
* @return weight of an edge out of the calling process * @return weight of an edge out of the calling process
*/ */
public int getDestinationWeight(int i) public int getDestinationWeight(int i)
{ {
return destWeights[i]; return destWeights[i];
} }
} // DistGraphNeighbors } // DistGraphNeighbors

Просмотреть файл

@ -9,6 +9,8 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -25,124 +27,124 @@ import java.nio.*;
*/ */
public final class DoubleComplex public final class DoubleComplex
{ {
private final int offset; private final int offset;
private final DoubleBuffer buffer; private final DoubleBuffer buffer;
private DoubleComplex(DoubleBuffer buffer, int index) private DoubleComplex(DoubleBuffer buffer, int index)
{ {
this.buffer = buffer; this.buffer = buffer;
this.offset = index * 2; this.offset = index * 2;
} }
/** /**
* Wraps a complex number stored in a buffer * Wraps a complex number stored in a buffer
* @param buffer buffer * @param buffer buffer
* @return complex number * @return complex number
*/ */
public static DoubleComplex get(DoubleBuffer buffer) public static DoubleComplex get(DoubleBuffer buffer)
{ {
return new DoubleComplex(buffer, 0); return new DoubleComplex(buffer, 0);
} }
/** /**
* Wraps the complex number at the specified position * Wraps the complex number at the specified position
* of an array of complex numbers stored in a buffer. * of an array of complex numbers stored in a buffer.
* @param buffer buffer * @param buffer buffer
* @param index index * @param index index
* @return complex number * @return complex number
*/ */
public static DoubleComplex get(DoubleBuffer buffer, int index) public static DoubleComplex get(DoubleBuffer buffer, int index)
{ {
return new DoubleComplex(buffer, index); return new DoubleComplex(buffer, index);
} }
/** /**
* Wraps a complex number stored in the first two values of an array. * Wraps a complex number stored in the first two values of an array.
* @param array array * @param array array
* @return complex number * @return complex number
*/ */
public static DoubleComplex get(double[] array) public static DoubleComplex get(double[] array)
{ {
return new DoubleComplex(DoubleBuffer.wrap(array), 0); return new DoubleComplex(DoubleBuffer.wrap(array), 0);
} }
/** /**
* Wraps the complex number at the specified position of * Wraps the complex number at the specified position of
* an array of complex numbers stored in an array of doubles. * an array of complex numbers stored in an array of doubles.
* @param array array * @param array array
* @param index index * @param index index
* @return complex number * @return complex number
*/ */
public static DoubleComplex get(double[] array, int index) public static DoubleComplex get(double[] array, int index)
{ {
return new DoubleComplex(DoubleBuffer.wrap(array), index); return new DoubleComplex(DoubleBuffer.wrap(array), index);
} }
/** /**
* Wraps a complex number stored in a buffer * Wraps a complex number stored in a buffer
* @param buffer buffer * @param buffer buffer
* @return complex number * @return complex number
*/ */
public static DoubleComplex get(ByteBuffer buffer) public static DoubleComplex get(ByteBuffer buffer)
{ {
return new DoubleComplex(buffer.asDoubleBuffer(), 0); return new DoubleComplex(buffer.asDoubleBuffer(), 0);
} }
/** /**
* Wraps the complex number at the specified position * Wraps the complex number at the specified position
* of an array of complex numbers stored in a buffer. * of an array of complex numbers stored in a buffer.
* @param buffer buffer * @param buffer buffer
* @param index index * @param index index
* @return complex number * @return complex number
*/ */
public static DoubleComplex get(ByteBuffer buffer, int index) public static DoubleComplex get(ByteBuffer buffer, int index)
{ {
return new DoubleComplex(buffer.asDoubleBuffer(), index); return new DoubleComplex(buffer.asDoubleBuffer(), index);
} }
/** /**
* Gets the real value. * Gets the real value.
* @return real value * @return real value
*/ */
public double getReal() public double getReal()
{ {
return buffer.get(offset); return buffer.get(offset);
} }
/** /**
* Gets the imaginary value. * Gets the imaginary value.
* @return imaginary value. * @return imaginary value.
*/ */
public double getImag() public double getImag()
{ {
return buffer.get(offset + 1); return buffer.get(offset + 1);
} }
/** /**
* Puts the real value. * Puts the real value.
* @param real real value * @param real real value
*/ */
public void putReal(double real) public void putReal(double real)
{ {
buffer.put(offset, real); buffer.put(offset, real);
} }
/** /**
* Puts the imaginary value. * Puts the imaginary value.
* @param imag imaginary value * @param imag imaginary value
*/ */
public void putImag(double imag) public void putImag(double imag)
{ {
buffer.put(offset + 1, imag); buffer.put(offset + 1, imag);
} }
/** /**
* Gets the buffer where the complex number is stored. * Gets the buffer where the complex number is stored.
* @return buffer where the complex number is stored * @return buffer where the complex number is stored
*/ */
public DoubleBuffer getBuffer() public DoubleBuffer getBuffer()
{ {
return offset == 0 ? buffer : MPI.slice(buffer, offset); return offset == 0 ? buffer : MPI.slice(buffer, offset);
} }
} // DoubleComplex } // DoubleComplex

Просмотреть файл

@ -25,16 +25,16 @@ package mpi;
*/ */
public final class DoubleInt extends Struct public final class DoubleInt extends Struct
{ {
private final int iOff, iSize; private final int iOff, iSize;
/** /**
* The struct object will be created only in MPI class. * The struct object will be created only in MPI class.
* @param intOff int offset * @param intOff int offset
* @param intSize int size * @param intSize int size
* @see MPI#doubleInt * @see MPI#doubleInt
*/ */
protected DoubleInt(int intOff, int intSize) protected DoubleInt(int intOff, int intSize)
{ {
int dOff = addDouble(); int dOff = addDouble();
assert dOff == 0; assert dOff == 0;
@ -49,22 +49,22 @@ protected DoubleInt(int intOff, int intSize)
} }
assert(intOff == iOff); assert(intOff == iOff);
} }
/** /**
* Creates a Data object. * Creates a Data object.
* @return new Data object. * @return new Data object.
*/ */
@Override protected DoubleInt.Data newData() @Override protected DoubleInt.Data newData()
{ {
return new DoubleInt.Data(); return new DoubleInt.Data();
} }
/** /**
* Class for reading/writing data in a struct stored in a byte buffer. * Class for reading/writing data in a struct stored in a byte buffer.
*/ */
public final class Data extends Struct.Data public final class Data extends Struct.Data
{ {
/** /**
* Gets the double value. * Gets the double value.
* @return double value * @return double value
@ -110,6 +110,6 @@ public final class Data extends Struct.Data
default: throw new AssertionError(); default: throw new AssertionError();
} }
} }
} // Data } // Data
} // DoubleInt } // DoubleInt

Просмотреть файл

@ -9,31 +9,33 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : Errhandler.java * File : Errhandler.java
* Author : Xinying Li * Author : Xinying Li
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -50,14 +52,14 @@ package mpi;
*/ */
public final class Errhandler public final class Errhandler
{ {
protected long handle; protected long handle;
protected static native long getFatal(); protected static native long getFatal();
protected static native long getReturn(); protected static native long getReturn();
protected Errhandler(long handle) protected Errhandler(long handle)
{ {
this.handle = handle; this.handle = handle;
} }
} // Errhandler } // Errhandler

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -9,6 +9,8 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -23,59 +25,59 @@ package mpi;
*/ */
public final class FileView public final class FileView
{ {
private final long disp; private final long disp;
private final Datatype etype, filetype; private final Datatype etype, filetype;
private final String datarep; private final String datarep;
/** /**
* Constructs a file view. * Constructs a file view.
* @param disp displacement * @param disp displacement
* @param etype elementary datatype * @param etype elementary datatype
* @param filetype file type * @param filetype file type
* @param datarep data representation * @param datarep data representation
*/ */
public FileView(long disp, Datatype etype, Datatype filetype, String datarep) public FileView(long disp, Datatype etype, Datatype filetype, String datarep)
{ {
this.disp = disp; this.disp = disp;
this.etype = etype; this.etype = etype;
this.filetype = filetype; this.filetype = filetype;
this.datarep = datarep; this.datarep = datarep;
} }
/** /**
* Gets the displacement. * Gets the displacement.
* @return displacement * @return displacement
*/ */
public long getDisp() public long getDisp()
{ {
return disp; return disp;
} }
/** /**
* Gets the elementary datatype. * Gets the elementary datatype.
* @return elementary datatype * @return elementary datatype
*/ */
public Datatype getEType() public Datatype getEType()
{ {
return etype; return etype;
} }
/** /**
* Gets the file type. * Gets the file type.
* @return file type * @return file type
*/ */
public Datatype getFileType() public Datatype getFileType()
{ {
return filetype; return filetype;
} }
/** /**
* Gets the data representation. * Gets the data representation.
* @return data representation * @return data representation
*/ */
public String getDataRep() public String getDataRep()
{ {
return datarep; return datarep;
} }
} // FileView } // FileView

Просмотреть файл

@ -9,6 +9,8 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -25,124 +27,124 @@ import java.nio.*;
*/ */
public final class FloatComplex public final class FloatComplex
{ {
private final int offset; private final int offset;
private final FloatBuffer buffer; private final FloatBuffer buffer;
private FloatComplex(FloatBuffer buffer, int index) private FloatComplex(FloatBuffer buffer, int index)
{ {
this.buffer = buffer; this.buffer = buffer;
this.offset = index * 2; this.offset = index * 2;
} }
/** /**
* Wraps a complex number stored in a buffer * Wraps a complex number stored in a buffer
* @param buffer buffer * @param buffer buffer
* @return complex number * @return complex number
*/ */
public static FloatComplex get(FloatBuffer buffer) public static FloatComplex get(FloatBuffer buffer)
{ {
return new FloatComplex(buffer, 0); return new FloatComplex(buffer, 0);
} }
/** /**
* Wraps the complex number at the specified position * Wraps the complex number at the specified position
* of an array of complex numbers stored in a buffer. * of an array of complex numbers stored in a buffer.
* @param buffer buffer * @param buffer buffer
* @param index index * @param index index
* @return complex number * @return complex number
*/ */
public static FloatComplex get(FloatBuffer buffer, int index) public static FloatComplex get(FloatBuffer buffer, int index)
{ {
return new FloatComplex(buffer, index); return new FloatComplex(buffer, index);
} }
/** /**
* Wraps a complex number stored in the first two values of an array. * Wraps a complex number stored in the first two values of an array.
* @param array array * @param array array
* @return complex number * @return complex number
*/ */
public static FloatComplex get(float[] array) public static FloatComplex get(float[] array)
{ {
return new FloatComplex(FloatBuffer.wrap(array), 0); return new FloatComplex(FloatBuffer.wrap(array), 0);
} }
/** /**
* Wraps the complex number at the specified position of * Wraps the complex number at the specified position of
* an array of complex numbers stored in an array of floats. * an array of complex numbers stored in an array of floats.
* @param array array * @param array array
* @param index index * @param index index
* @return complex number * @return complex number
*/ */
public static FloatComplex get(float[] array, int index) public static FloatComplex get(float[] array, int index)
{ {
return new FloatComplex(FloatBuffer.wrap(array), index); return new FloatComplex(FloatBuffer.wrap(array), index);
} }
/** /**
* Wraps a complex number stored in a buffer * Wraps a complex number stored in a buffer
* @param buffer buffer * @param buffer buffer
* @return complex number * @return complex number
*/ */
public static FloatComplex get(ByteBuffer buffer) public static FloatComplex get(ByteBuffer buffer)
{ {
return new FloatComplex(buffer.asFloatBuffer(), 0); return new FloatComplex(buffer.asFloatBuffer(), 0);
} }
/** /**
* Wraps the complex number at the specified position * Wraps the complex number at the specified position
* of an array of complex numbers stored in a buffer. * of an array of complex numbers stored in a buffer.
* @param buffer buffer * @param buffer buffer
* @param index index * @param index index
* @return complex number * @return complex number
*/ */
public static FloatComplex get(ByteBuffer buffer, int index) public static FloatComplex get(ByteBuffer buffer, int index)
{ {
return new FloatComplex(buffer.asFloatBuffer(), index); return new FloatComplex(buffer.asFloatBuffer(), index);
} }
/** /**
* Gets the real value. * Gets the real value.
* @return real value * @return real value
*/ */
public float getReal() public float getReal()
{ {
return buffer.get(offset); return buffer.get(offset);
} }
/** /**
* Gets the imaginary value. * Gets the imaginary value.
* @return imaginary value. * @return imaginary value.
*/ */
public float getImag() public float getImag()
{ {
return buffer.get(offset + 1); return buffer.get(offset + 1);
} }
/** /**
* Puts the real value. * Puts the real value.
* @param real real value * @param real real value
*/ */
public void putReal(float real) public void putReal(float real)
{ {
buffer.put(offset, real); buffer.put(offset, real);
} }
/** /**
* Puts the imaginary value. * Puts the imaginary value.
* @param imag imaginary value * @param imag imaginary value
*/ */
public void putImag(float imag) public void putImag(float imag)
{ {
buffer.put(offset + 1, imag); buffer.put(offset + 1, imag);
} }
/** /**
* Gets the buffer where the complex number is stored. * Gets the buffer where the complex number is stored.
* @return buffer where the complex number is stored * @return buffer where the complex number is stored
*/ */
public FloatBuffer getBuffer() public FloatBuffer getBuffer()
{ {
return offset == 0 ? buffer : MPI.slice(buffer, offset); return offset == 0 ? buffer : MPI.slice(buffer, offset);
} }
} // FloatComplex } // FloatComplex

Просмотреть файл

@ -25,16 +25,16 @@ package mpi;
*/ */
public final class FloatInt extends Struct public final class FloatInt extends Struct
{ {
private final int iOff, iSize; private final int iOff, iSize;
/** /**
* The struct object will be created only in MPI class. * The struct object will be created only in MPI class.
* @param intOff int offset * @param intOff int offset
* @param intSize int size * @param intSize int size
* @see MPI#floatInt * @see MPI#floatInt
*/ */
protected FloatInt(int intOff, int intSize) protected FloatInt(int intOff, int intSize)
{ {
int fOff = addFloat(); int fOff = addFloat();
assert fOff == 0; assert fOff == 0;
@ -49,22 +49,22 @@ protected FloatInt(int intOff, int intSize)
} }
assert(intOff == iOff); assert(intOff == iOff);
} }
/** /**
* Creates a Data object. * Creates a Data object.
* @return new Data object. * @return new Data object.
*/ */
@Override protected Data newData() @Override protected Data newData()
{ {
return new Data(); return new Data();
} }
/** /**
* Class for reading/writing data in a struct stored in a byte buffer. * Class for reading/writing data in a struct stored in a byte buffer.
*/ */
public final class Data extends Struct.Data public final class Data extends Struct.Data
{ {
/** /**
* Gets the float value. * Gets the float value.
* @return float value * @return float value
@ -110,6 +110,6 @@ public final class Data extends Struct.Data
default: throw new AssertionError(); default: throw new AssertionError();
} }
} }
} // Data } // Data
} // FloatInt } // FloatInt

Просмотреть файл

@ -16,26 +16,26 @@
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : Freeable.java * File : Freeable.java
* Author : Bryan Carpenter * Author : Bryan Carpenter
* Created : Wed Jan 15 23:14:43 EST 2003 * Created : Wed Jan 15 23:14:43 EST 2003

Просмотреть файл

@ -16,26 +16,26 @@
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : Graphcomm.java * File : Graphcomm.java
* Author : Xinying Li * Author : Xinying Li
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -52,32 +52,32 @@ package mpi;
*/ */
public final class GraphComm extends Intracomm public final class GraphComm extends Intracomm
{ {
static static
{ {
init(); init();
} }
private static native void init(); private static native void init();
protected GraphComm(long handle) throws MPIException protected GraphComm(long handle) throws MPIException
{ {
super(handle); super(handle);
} }
protected GraphComm(long[] commRequest) protected GraphComm(long[] commRequest)
{ {
super(commRequest); super(commRequest);
} }
/** /**
* Duplicates this communicator. * Duplicates this communicator.
* <p>Java binding of {@code MPI_COMM_DUP}. * <p>Java binding of {@code MPI_COMM_DUP}.
* <p>It is recommended to use {@link #dup} instead of {@link #clone} * <p>It is recommended to use {@link #dup} instead of {@link #clone}
* because the last can't throw an {@link mpi.MPIException}. * because the last can't throw an {@link mpi.MPIException}.
* @return copy of this communicator * @return copy of this communicator
*/ */
@Override public GraphComm clone() @Override public GraphComm clone()
{ {
try try
{ {
return dup(); return dup();
@ -86,21 +86,21 @@ protected GraphComm(long[] commRequest)
{ {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
} }
} }
/** /**
* Duplicates this communicator. * Duplicates this communicator.
* <p>Java binding of {@code MPI_COMM_DUP}. * <p>Java binding of {@code MPI_COMM_DUP}.
* @return copy of this communicator * @return copy of this communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
@Override public GraphComm dup() throws MPIException @Override public GraphComm dup() throws MPIException
{ {
MPI.check(); MPI.check();
return new GraphComm(dup(handle)); return new GraphComm(dup(handle));
} }
/** /**
* Duplicates this communicator. * Duplicates this communicator.
* <p>The new communicator can't be used before the operation completes. * <p>The new communicator can't be used before the operation completes.
* The request object must be obtained calling {@link #getRequest}. * The request object must be obtained calling {@link #getRequest}.
@ -108,13 +108,13 @@ protected GraphComm(long[] commRequest)
* @return copy of this communicator * @return copy of this communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
@Override public GraphComm iDup() throws MPIException @Override public GraphComm iDup() throws MPIException
{ {
MPI.check(); MPI.check();
return new GraphComm(iDup(handle)); return new GraphComm(iDup(handle));
} }
/** /**
* Returns graph topology information. * Returns graph topology information.
* <p>Java binding of the MPI operations {@code MPI_GRAPHDIMS_GET} * <p>Java binding of the MPI operations {@code MPI_GRAPHDIMS_GET}
* and {@code MPI_GRAPH_GET}. * and {@code MPI_GRAPH_GET}.
@ -124,15 +124,15 @@ protected GraphComm(long[] commRequest)
* @return object defining node degress and edges of graph * @return object defining node degress and edges of graph
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public GraphParms getDims() throws MPIException public GraphParms getDims() throws MPIException
{ {
MPI.check(); MPI.check();
return getDims(handle); return getDims(handle);
} }
private native GraphParms getDims(long comm) throws MPIException; private native GraphParms getDims(long comm) throws MPIException;
/** /**
* Provides adjacency information for general graph topology. * Provides adjacency information for general graph topology.
* <p>Java binding of the MPI operations {@code MPI_GRAPH_NEIGHBORS_COUNT} * <p>Java binding of the MPI operations {@code MPI_GRAPH_NEIGHBORS_COUNT}
* and {@code MPI_GRAPH_NEIGHBORS}. * and {@code MPI_GRAPH_NEIGHBORS}.
@ -141,29 +141,29 @@ private native GraphParms getDims(long comm) throws MPIException;
* @return array of ranks of neighbouring processes to one specified * @return array of ranks of neighbouring processes to one specified
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int[] getNeighbors(int rank) throws MPIException public int[] getNeighbors(int rank) throws MPIException
{ {
MPI.check(); MPI.check();
return getNeighbors(handle, rank); return getNeighbors(handle, rank);
} }
private native int[] getNeighbors(long comm, int rank) throws MPIException; private native int[] getNeighbors(long comm, int rank) throws MPIException;
/** /**
* Gets the adjacency information for a distributed graph topology. * Gets the adjacency information for a distributed graph topology.
* @return adjacency information for a distributed graph topology * @return adjacency information for a distributed graph topology
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public DistGraphNeighbors getDistGraphNeighbors() throws MPIException public DistGraphNeighbors getDistGraphNeighbors() throws MPIException
{ {
MPI.check(); MPI.check();
return getDistGraphNeighbors(handle); return getDistGraphNeighbors(handle);
} }
private native DistGraphNeighbors getDistGraphNeighbors(long comm) private native DistGraphNeighbors getDistGraphNeighbors(long comm)
throws MPIException; throws MPIException;
/** /**
* Compute an optimal placement. * Compute an optimal placement.
* <p>Java binding of the MPI operation {@code MPI_GRAPH_MAP}. * <p>Java binding of the MPI operation {@code MPI_GRAPH_MAP}.
* <p>The number of nodes is taken to be size of the {@code index} argument. * <p>The number of nodes is taken to be size of the {@code index} argument.
@ -172,12 +172,12 @@ private native DistGraphNeighbors getDistGraphNeighbors(long comm)
* @return reordered rank of calling process * @return reordered rank of calling process
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int map(int[] index, int[] edges) throws MPIException public int map(int[] index, int[] edges) throws MPIException
{ {
MPI.check(); MPI.check();
return map(handle, index, edges); return map(handle, index, edges);
} }
private native int map(long comm, int[] index, int[] edges) throws MPIException; private native int map(long comm, int[] index, int[] edges) throws MPIException;
} // Graphcomm } // Graphcomm

Просмотреть файл

@ -9,31 +9,33 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : GraphParms.java * File : GraphParms.java
* Author : Xinying Li * Author : Xinying Li
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -50,54 +52,54 @@ package mpi;
*/ */
public final class GraphParms public final class GraphParms
{ {
/** Node degrees. */ /** Node degrees. */
private final int[] index; private final int[] index;
/** Graph edges. */ /** Graph edges. */
private final int[] edges; private final int[] edges;
/** /**
* Constructs a graph topology information object. * Constructs a graph topology information object.
* @param index node degrees. * @param index node degrees.
* @param edges graph edges. * @param edges graph edges.
*/ */
protected GraphParms(int[] index, int[] edges) protected GraphParms(int[] index, int[] edges)
{ {
this.index = index; this.index = index;
this.edges = edges; this.edges = edges;
} }
/** /**
* Returns the number of nodes. * Returns the number of nodes.
* @return number of nodes. * @return number of nodes.
*/ */
public int getIndexCount() public int getIndexCount()
{ {
return index.length; return index.length;
} }
/** /**
* Returns the index of the node {@code i}. * Returns the index of the node {@code i}.
* <p>{@code getIndex(0)} returns the degree of the node {@code 0}, and * <p>{@code getIndex(0)} returns the degree of the node {@code 0}, and
* {@code getIndex(i)-getIndex(i-1)} is the degree of the node {@code i}. * {@code getIndex(i)-getIndex(i-1)} is the degree of the node {@code i}.
* @param i position of the node. * @param i position of the node.
* @return the index. * @return the index.
*/ */
public int getIndex(int i) public int getIndex(int i)
{ {
return index[i]; return index[i];
} }
/** /**
* Returns the number of edges. * Returns the number of edges.
* @return number of edges. * @return number of edges.
*/ */
public int getEdgeCount() public int getEdgeCount()
{ {
return edges.length; return edges.length;
} }
/** /**
* Returns the edge {@code i}. * Returns the edge {@code i}.
* <p>The list of neighbors of node zero is stored in {@code getEdge(j)}, * <p>The list of neighbors of node zero is stored in {@code getEdge(j)},
* for {@code 0} &le; {@code j} &le; {@code getIndex(0)-1} and the list * for {@code 0} &le; {@code j} &le; {@code getIndex(0)-1} and the list
@ -107,9 +109,9 @@ public int getEdgeCount()
* @param i index of the edge. * @param i index of the edge.
* @return the edge. * @return the edge.
*/ */
public int getEdge(int i) public int getEdge(int i)
{ {
return edges[i]; return edges[i];
} }
} // GraphParms } // GraphParms

Просмотреть файл

@ -16,26 +16,26 @@
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : Group.java * File : Group.java
* Author : Xinying Li, Bryan Carpenter * Author : Xinying Li, Bryan Carpenter
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -52,72 +52,72 @@ package mpi;
*/ */
public final class Group implements Freeable public final class Group implements Freeable
{ {
protected long handle; protected long handle;
private static long nullHandle; private static long nullHandle;
static static
{ {
init(); init();
} }
private static native void init(); private static native void init();
protected static native long getEmpty(); protected static native long getEmpty();
protected Group(long handle) protected Group(long handle)
{ {
this.handle = handle; this.handle = handle;
} }
/** /**
* Java binding of the MPI operation {@code MPI_GROUP_SIZE}. * Java binding of the MPI operation {@code MPI_GROUP_SIZE}.
* @return number of processes in the group * @return number of processes in the group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int getSize() throws MPIException public int getSize() throws MPIException
{ {
MPI.check(); MPI.check();
return getSize(handle); return getSize(handle);
} }
private native int getSize(long group) throws MPIException; private native int getSize(long group) throws MPIException;
/** /**
* Rank of this process in the group. * Rank of this process in the group.
* <p>Java binding of the MPI operation {@code MPI_GROUP_RANK}. * <p>Java binding of the MPI operation {@code MPI_GROUP_RANK}.
* @return rank of this process in the group, or {@code MPI.UNDEFINED} * @return rank of this process in the group, or {@code MPI.UNDEFINED}
* if this process is not a member of the group. * if this process is not a member of the group.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int getRank() throws MPIException public int getRank() throws MPIException
{ {
MPI.check(); MPI.check();
return getRank(handle); return getRank(handle);
} }
private native int getRank(long group) throws MPIException; private native int getRank(long group) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_GROUP_FREE}. * Java binding of the MPI operation {@code MPI_GROUP_FREE}.
*/ */
@Override public void free() throws MPIException @Override public void free() throws MPIException
{ {
MPI.check(); MPI.check();
handle = free(handle); handle = free(handle);
} }
private native long free(long group); private native long free(long group);
/** /**
* Test if group object is null. * Test if group object is null.
* @return true if the group object is null. * @return true if the group object is null.
*/ */
public boolean isNull() public boolean isNull()
{ {
return handle == nullHandle; return handle == nullHandle;
} }
/** /**
* Translate ranks within one group to ranks within another. * Translate ranks within one group to ranks within another.
* <p>Java binding of the MPI operation {@code MPI_GROUP_TRANSLATE_RANKS}. * <p>Java binding of the MPI operation {@code MPI_GROUP_TRANSLATE_RANKS}.
* <p>Result elements are {@code MPI.UNDEFINED} where no correspondence exists. * <p>Result elements are {@code MPI.UNDEFINED} where no correspondence exists.
@ -127,17 +127,17 @@ public boolean isNull()
* @return array of corresponding ranks in group2 * @return array of corresponding ranks in group2
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static int[] translateRanks(Group group1, int[] ranks1, Group group2) public static int[] translateRanks(Group group1, int[] ranks1, Group group2)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
return translateRanks(group1.handle, ranks1, group2.handle); return translateRanks(group1.handle, ranks1, group2.handle);
} }
private static native int[] translateRanks( private static native int[] translateRanks(
long group1, int[] ranks1, long group2) throws MPIException; long group1, int[] ranks1, long group2) throws MPIException;
/** /**
* Compare two groups. * Compare two groups.
* <p>Java binding of the MPI operation {@code MPI_GROUP_COMPARE}. * <p>Java binding of the MPI operation {@code MPI_GROUP_COMPARE}.
* @param group1 first group * @param group1 first group
@ -147,15 +147,15 @@ private static native int[] translateRanks(
* the same but the order is different, {@code MPI.UNEQUAL} otherwise. * the same but the order is different, {@code MPI.UNEQUAL} otherwise.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static int compare(Group group1, Group group2) throws MPIException public static int compare(Group group1, Group group2) throws MPIException
{ {
MPI.check(); MPI.check();
return compare(group1.handle, group2.handle); return compare(group1.handle, group2.handle);
} }
private static native int compare(long group1, long group2) throws MPIException; private static native int compare(long group1, long group2) throws MPIException;
/** /**
* Set union of two groups. * Set union of two groups.
* <p>Java binding of the MPI operation {@code MPI_GROUP_UNION}. * <p>Java binding of the MPI operation {@code MPI_GROUP_UNION}.
* @param group1 first group * @param group1 first group
@ -163,15 +163,15 @@ private static native int compare(long group1, long group2) throws MPIException;
* @return union group * @return union group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Group union(Group group1, Group group2) throws MPIException public static Group union(Group group1, Group group2) throws MPIException
{ {
MPI.check(); MPI.check();
return new Group(union(group1.handle, group2.handle)); return new Group(union(group1.handle, group2.handle));
} }
private static native long union(long group1, long group2); private static native long union(long group1, long group2);
/** /**
* Set intersection of two groups. * Set intersection of two groups.
* Java binding of the MPI operation {@code MPI_GROUP_INTERSECTION}. * Java binding of the MPI operation {@code MPI_GROUP_INTERSECTION}.
* @param group1 first group * @param group1 first group
@ -179,15 +179,15 @@ private static native long union(long group1, long group2);
* @return intersection group * @return intersection group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Group intersection(Group group1, Group group2) throws MPIException public static Group intersection(Group group1, Group group2) throws MPIException
{ {
MPI.check(); MPI.check();
return new Group(intersection(group1.handle, group2.handle)); return new Group(intersection(group1.handle, group2.handle));
} }
private static native long intersection(long group1, long group2); private static native long intersection(long group1, long group2);
/** /**
* Set difference of two groups. * Set difference of two groups.
* Java binding of the MPI operation {@code MPI_GROUP_DIFFERENCE}. * Java binding of the MPI operation {@code MPI_GROUP_DIFFERENCE}.
* @param group1 first group * @param group1 first group
@ -195,45 +195,45 @@ private static native long intersection(long group1, long group2);
* @return difference group * @return difference group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Group difference(Group group1, Group group2) throws MPIException public static Group difference(Group group1, Group group2) throws MPIException
{ {
MPI.check(); MPI.check();
return new Group(difference(group1.handle, group2.handle)); return new Group(difference(group1.handle, group2.handle));
} }
private static native long difference(long group1, long group2); private static native long difference(long group1, long group2);
/** /**
* Create a subset group including specified processes. * Create a subset group including specified processes.
* <p>Java binding of the MPI operation {@code MPI_GROUP_INCL}. * <p>Java binding of the MPI operation {@code MPI_GROUP_INCL}.
* @param ranks ranks from this group to appear in new group * @param ranks ranks from this group to appear in new group
* @return new group * @return new group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Group incl(int[] ranks) throws MPIException public Group incl(int[] ranks) throws MPIException
{ {
MPI.check(); MPI.check();
return new Group(incl(handle, ranks)); return new Group(incl(handle, ranks));
} }
private native long incl(long group, int[] ranks); private native long incl(long group, int[] ranks);
/** /**
* Create a subset group excluding specified processes. * Create a subset group excluding specified processes.
* <p>Java binding of the MPI operation {@code MPI_GROUP_EXCL}. * <p>Java binding of the MPI operation {@code MPI_GROUP_EXCL}.
* @param ranks ranks from this group <em>not</em> to appear in new group * @param ranks ranks from this group <em>not</em> to appear in new group
* @return new group * @return new group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Group excl(int[] ranks) throws MPIException public Group excl(int[] ranks) throws MPIException
{ {
MPI.check(); MPI.check();
return new Group(excl(handle, ranks)); return new Group(excl(handle, ranks));
} }
private native long excl(long group, int[] ranks); private native long excl(long group, int[] ranks);
/** /**
* Create a subset group including processes specified * Create a subset group including processes specified
* by strided intervals of ranks. * by strided intervals of ranks.
* <p>Java binding of the MPI operation {@code MPI_GROUP_RANGE_INCL}. * <p>Java binding of the MPI operation {@code MPI_GROUP_RANGE_INCL}.
@ -245,15 +245,15 @@ private native long excl(long group, int[] ranks);
* @return new group * @return new group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Group rangeIncl(int[][] ranges) throws MPIException public Group rangeIncl(int[][] ranges) throws MPIException
{ {
MPI.check(); MPI.check();
return new Group(rangeIncl(handle, ranges)); return new Group(rangeIncl(handle, ranges));
} }
private native long rangeIncl(long group, int[][] ranges); private native long rangeIncl(long group, int[][] ranges);
/** /**
* Create a subset group excluding processes specified * Create a subset group excluding processes specified
* by strided intervals of ranks. * by strided intervals of ranks.
* <p>Java binding of the MPI operation {@code MPI_GROUP_RANGE_EXCL}. * <p>Java binding of the MPI operation {@code MPI_GROUP_RANGE_EXCL}.
@ -263,12 +263,12 @@ private native long rangeIncl(long group, int[][] ranges);
* @return new group * @return new group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Group rangeExcl(int[][] ranges) throws MPIException public Group rangeExcl(int[][] ranges) throws MPIException
{ {
MPI.check(); MPI.check();
return new Group(rangeExcl(handle, ranges)); return new Group(rangeExcl(handle, ranges));
} }
private native long rangeExcl(long group, int[][] ranges); private native long rangeExcl(long group, int[][] ranges);
} // Group } // Group

Просмотреть файл

@ -25,111 +25,111 @@ package mpi;
*/ */
public final class Info implements Freeable public final class Info implements Freeable
{ {
protected long handle; protected long handle;
protected static final long NULL = getNull(); protected static final long NULL = getNull();
/** /**
* Java binding of the MPI operation {@code MPI_INFO_CREATE}. * Java binding of the MPI operation {@code MPI_INFO_CREATE}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Info() throws MPIException public Info() throws MPIException
{ {
MPI.check(); MPI.check();
handle = create(); handle = create();
} }
protected Info(long handle) protected Info(long handle)
{ {
this.handle = handle; this.handle = handle;
} }
private native long create(); private native long create();
protected static Info newEnv() protected static Info newEnv()
{ {
return new Info(getEnv()); return new Info(getEnv());
} }
private native static long getEnv(); private native static long getEnv();
private native static long getNull(); private native static long getNull();
/** /**
* Java binding of the MPI operation {@code MPI_INFO_SET}. * Java binding of the MPI operation {@code MPI_INFO_SET}.
* @param key key * @param key key
* @param value value * @param value value
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void set(String key, String value) throws MPIException public void set(String key, String value) throws MPIException
{ {
MPI.check(); MPI.check();
set(handle, key, value); set(handle, key, value);
} }
private native void set(long handle, String key, String value) private native void set(long handle, String key, String value)
throws MPIException; throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_INFO_SET}. * Java binding of the MPI operation {@code MPI_INFO_SET}.
* @param key key * @param key key
* @return value or {@code null} if key is not defined * @return value or {@code null} if key is not defined
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public String get(String key) throws MPIException public String get(String key) throws MPIException
{ {
MPI.check(); MPI.check();
return get(handle, key); return get(handle, key);
} }
private native String get(long handle, String key) throws MPIException; private native String get(long handle, String key) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_INFO_SET}. * Java binding of the MPI operation {@code MPI_INFO_SET}.
* @param key key * @param key key
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void delete(String key) throws MPIException public void delete(String key) throws MPIException
{ {
MPI.check(); MPI.check();
delete(handle, key); delete(handle, key);
} }
private native void delete(long handle, String key) throws MPIException; private native void delete(long handle, String key) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_INFO_GET_NKEYS}. * Java binding of the MPI operation {@code MPI_INFO_GET_NKEYS}.
* @return number of defined keys * @return number of defined keys
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int size() throws MPIException public int size() throws MPIException
{ {
MPI.check(); MPI.check();
return size(handle); return size(handle);
} }
private native int size(long handle) throws MPIException; private native int size(long handle) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_INFO_GET_NTHKEY}. * Java binding of the MPI operation {@code MPI_INFO_GET_NTHKEY}.
* @param i key number * @param i key number
* @return key * @return key
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public String getKey(int i) throws MPIException public String getKey(int i) throws MPIException
{ {
MPI.check(); MPI.check();
return getKey(handle, i); return getKey(handle, i);
} }
private native String getKey(long handle, int i) throws MPIException; private native String getKey(long handle, int i) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_INFO_DUP}. * Java binding of the MPI operation {@code MPI_INFO_DUP}.
* <p>It is recommended to use {@link #dup} instead of {@link #clone} * <p>It is recommended to use {@link #dup} instead of {@link #clone}
* because the last can't throw an {@link mpi.MPIException}. * because the last can't throw an {@link mpi.MPIException}.
* @return info object * @return info object
*/ */
@Override public Info clone() @Override public Info clone()
{ {
try try
{ {
return dup(); return dup();
@ -138,42 +138,42 @@ private native String getKey(long handle, int i) throws MPIException;
{ {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
} }
} }
/** /**
* Java binding of the MPI operation {@code MPI_INFO_DUP}. * Java binding of the MPI operation {@code MPI_INFO_DUP}.
* @return info object * @return info object
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Info dup() throws MPIException public Info dup() throws MPIException
{ {
MPI.check(); MPI.check();
return new Info(dup(handle)); return new Info(dup(handle));
} }
private native long dup(long handle) throws MPIException; private native long dup(long handle) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_INFO_FREE}. * Java binding of the MPI operation {@code MPI_INFO_FREE}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
@Override public void free() throws MPIException @Override public void free() throws MPIException
{ {
MPI.check(); MPI.check();
handle = free(handle); handle = free(handle);
} }
private native long free(long handle) throws MPIException; private native long free(long handle) throws MPIException;
/** /**
* Tests if the info object is {@code MPI_INFO_NULL} (has been freed). * Tests if the info object is {@code MPI_INFO_NULL} (has been freed).
* @return true if the info object is {@code MPI_INFO_NULL}, false otherwise. * @return true if the info object is {@code MPI_INFO_NULL}, false otherwise.
*/ */
public boolean isNull() public boolean isNull()
{ {
return isNull(handle); return isNull(handle);
} }
private native boolean isNull(long handle); private native boolean isNull(long handle);
} // Info } // Info

Просмотреть файл

@ -25,48 +25,48 @@ package mpi;
*/ */
public final class Int2 extends Struct public final class Int2 extends Struct
{ {
private final int iOff, iSize; private final int iOff, iSize;
/** /**
* The struct object will be created only in MPI class. * The struct object will be created only in MPI class.
* @param intOff int offset * @param intOff int offset
* @param intSize int size * @param intSize int size
* @see MPI#int2 * @see MPI#int2
*/ */
protected Int2(int intOff, int intSize) protected Int2(int intOff, int intSize)
{ {
iSize = intSize; iSize = intSize;
int off = addIntField(); int off = addIntField();
assert off == 0; assert off == 0;
setOffset(intOff); setOffset(intOff);
iOff = addIntField(); iOff = addIntField();
assert intOff == iOff; assert intOff == iOff;
} }
private int addIntField() private int addIntField()
{ {
switch(iSize) switch(iSize)
{ {
case 4: return addInt(); case 4: return addInt();
case 8: return addLong(); case 8: return addLong();
default: throw new AssertionError("Unsupported int size: "+ iSize); default: throw new AssertionError("Unsupported int size: "+ iSize);
} }
} }
/** /**
* Creates a Data object. * Creates a Data object.
* @return new Data object. * @return new Data object.
*/ */
@Override protected Int2.Data newData() @Override protected Int2.Data newData()
{ {
return new Int2.Data(); return new Int2.Data();
} }
/** /**
* Class for reading/writing data in a struct stored in a byte buffer. * Class for reading/writing data in a struct stored in a byte buffer.
*/ */
public final class Data extends Struct.Data public final class Data extends Struct.Data
{ {
/** /**
* Gets the first int. * Gets the first int.
* @return first int * @return first int
@ -122,6 +122,6 @@ public final class Data extends Struct.Data
default: throw new AssertionError(); default: throw new AssertionError();
} }
} }
} // Data } // Data
} // Int2 } // Int2

Просмотреть файл

@ -16,26 +16,26 @@
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : Intercomm.java * File : Intercomm.java
* Author : Xinying Li * Author : Xinying Li
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -52,25 +52,25 @@ package mpi;
*/ */
public final class Intercomm extends Comm public final class Intercomm extends Comm
{ {
protected Intercomm(long handle) protected Intercomm(long handle)
{ {
super(handle); super(handle);
} }
protected Intercomm(long[] commRequest) protected Intercomm(long[] commRequest)
{ {
super(commRequest); super(commRequest);
} }
/** /**
* Duplicates this communicator. * Duplicates this communicator.
* <p>Java binding of {@code MPI_COMM_DUP}. * <p>Java binding of {@code MPI_COMM_DUP}.
* <p>It is recommended to use {@link #dup} instead of {@link #clone} * <p>It is recommended to use {@link #dup} instead of {@link #clone}
* because the last can't throw an {@link mpi.MPIException}. * because the last can't throw an {@link mpi.MPIException}.
* @return copy of this communicator * @return copy of this communicator
*/ */
@Override public Intercomm clone() @Override public Intercomm clone()
{ {
try try
{ {
return dup(); return dup();
@ -79,21 +79,21 @@ protected Intercomm(long[] commRequest)
{ {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
} }
} }
/** /**
* Duplicates this communicator. * Duplicates this communicator.
* <p>Java binding of {@code MPI_COMM_DUP}. * <p>Java binding of {@code MPI_COMM_DUP}.
* @return copy of this communicator * @return copy of this communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
@Override public Intercomm dup() throws MPIException @Override public Intercomm dup() throws MPIException
{ {
MPI.check(); MPI.check();
return new Intercomm(dup(handle)); return new Intercomm(dup(handle));
} }
/** /**
* Duplicates this communicator. * Duplicates this communicator.
* <p>Java binding of {@code MPI_COMM_IDUP}. * <p>Java binding of {@code MPI_COMM_IDUP}.
* <p>The new communicator can't be used before the operation completes. * <p>The new communicator can't be used before the operation completes.
@ -101,68 +101,68 @@ protected Intercomm(long[] commRequest)
* @return copy of this communicator * @return copy of this communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
@Override public Intercomm iDup() throws MPIException @Override public Intercomm iDup() throws MPIException
{ {
MPI.check(); MPI.check();
return new Intercomm(iDup(handle)); return new Intercomm(iDup(handle));
} }
// Inter-Communication // Inter-Communication
/** /**
* Size of remote group. * Size of remote group.
* <p>Java binding of the MPI operation {@code MPI_COMM_REMOTE_SIZE}. * <p>Java binding of the MPI operation {@code MPI_COMM_REMOTE_SIZE}.
* @return number of process in remote group of this communicator * @return number of process in remote group of this communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int getRemoteSize() throws MPIException public int getRemoteSize() throws MPIException
{ {
MPI.check(); MPI.check();
return getRemoteSize_jni(); return getRemoteSize_jni();
} }
private native int getRemoteSize_jni() throws MPIException; private native int getRemoteSize_jni() throws MPIException;
/** /**
* Return the remote group. * Return the remote group.
* <p>Java binding of the MPI operation {@code MPI_COMM_REMOTE_GROUP}. * <p>Java binding of the MPI operation {@code MPI_COMM_REMOTE_GROUP}.
* @return remote group of this communicator * @return remote group of this communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Group getRemoteGroup() throws MPIException public Group getRemoteGroup() throws MPIException
{ {
MPI.check(); MPI.check();
return new Group(getRemoteGroup_jni()); return new Group(getRemoteGroup_jni());
} }
private native long getRemoteGroup_jni(); private native long getRemoteGroup_jni();
/** /**
* Creates an intracommuncator from an intercommunicator * Creates an intracommuncator from an intercommunicator
* <p>Java binding of the MPI operation {@code MPI_INTERCOMM_MERGE}. * <p>Java binding of the MPI operation {@code MPI_INTERCOMM_MERGE}.
* @param high true if the local group has higher ranks in combined group * @param high true if the local group has higher ranks in combined group
* @return new intra-communicator * @return new intra-communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Intracomm merge(boolean high) throws MPIException public Intracomm merge(boolean high) throws MPIException
{ {
MPI.check(); MPI.check();
return new Intracomm(merge_jni(high)); return new Intracomm(merge_jni(high));
} }
private native long merge_jni(boolean high); private native long merge_jni(boolean high);
/** /**
* Java binding of {@code MPI_COMM_GET_PARENT}. * Java binding of {@code MPI_COMM_GET_PARENT}.
* @return the parent communicator * @return the parent communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Intercomm getParent() throws MPIException public static Intercomm getParent() throws MPIException
{ {
MPI.check(); MPI.check();
return new Intercomm(getParent_jni()); return new Intercomm(getParent_jni());
} }
private native static long getParent_jni() throws MPIException; private native static long getParent_jni() throws MPIException;
} // Intercomm } // Intercomm

Просмотреть файл

@ -16,26 +16,26 @@
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : Intracommm.java * File : Intracommm.java
* Author : Sang Lim, Xinying Li, Bryan Carpenter * Author : Sang Lim, Xinying Li, Bryan Carpenter
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -43,9 +43,9 @@
* Updated : $Date: 2002/12/16 15:25:13 $ * Updated : $Date: 2002/12/16 15:25:13 $
* Copyright: Northeast Parallel Architectures Center * Copyright: Northeast Parallel Architectures Center
* at Syracuse University 1998 * at Syracuse University 1998
*/ *
*
/* *
* IMPLEMENTATION DETAILS * IMPLEMENTATION DETAILS
* *
* All methods with buffers that can be direct or non direct have * All methods with buffers that can be direct or non direct have
@ -65,29 +65,29 @@ import static mpi.MPI.assertDirectBuffer;
*/ */
public class Intracomm extends Comm public class Intracomm extends Comm
{ {
protected Intracomm() protected Intracomm()
{ {
} }
protected Intracomm(long handle) protected Intracomm(long handle)
{ {
super(handle); super(handle);
} }
protected Intracomm(long[] commRequest) protected Intracomm(long[] commRequest)
{ {
super(commRequest); super(commRequest);
} }
/** /**
* Duplicates this communicator. * Duplicates this communicator.
* <p>Java binding of {@code MPI_COMM_DUP}. * <p>Java binding of {@code MPI_COMM_DUP}.
* <p>It is recommended to use {@link #dup} instead of {@link #clone} * <p>It is recommended to use {@link #dup} instead of {@link #clone}
* because the last can't throw an {@link mpi.MPIException}. * because the last can't throw an {@link mpi.MPIException}.
* @return copy of this communicator * @return copy of this communicator
*/ */
@Override public Intracomm clone() @Override public Intracomm clone()
{ {
try try
{ {
return dup(); return dup();
@ -96,21 +96,21 @@ protected Intracomm(long[] commRequest)
{ {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
} }
} }
/** /**
* Duplicates this communicator. * Duplicates this communicator.
* <p>Java binding of {@code MPI_COMM_DUP}. * <p>Java binding of {@code MPI_COMM_DUP}.
* @return copy of this communicator * @return copy of this communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
@Override public Intracomm dup() throws MPIException @Override public Intracomm dup() throws MPIException
{ {
MPI.check(); MPI.check();
return new Intracomm(dup(handle)); return new Intracomm(dup(handle));
} }
/** /**
* Duplicates this communicator. * Duplicates this communicator.
* <p>Java binding of {@code MPI_COMM_IDUP}. * <p>Java binding of {@code MPI_COMM_IDUP}.
* <p>The new communicator can't be used before the operation completes. * <p>The new communicator can't be used before the operation completes.
@ -118,13 +118,13 @@ protected Intracomm(long[] commRequest)
* @return copy of this communicator * @return copy of this communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
@Override public Intracomm iDup() throws MPIException @Override public Intracomm iDup() throws MPIException
{ {
MPI.check(); MPI.check();
return new Intracomm(iDup(handle)); return new Intracomm(iDup(handle));
} }
/** /**
* Partition the group associated with this communicator and create * Partition the group associated with this communicator and create
* a new communicator within each subgroup. * a new communicator within each subgroup.
* <p>Java binding of the MPI operation {@code MPI_COMM_SPLIT}. * <p>Java binding of the MPI operation {@code MPI_COMM_SPLIT}.
@ -133,15 +133,15 @@ protected Intracomm(long[] commRequest)
* @return new communicator * @return new communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Intracomm split(int colour, int key) throws MPIException public final Intracomm split(int colour, int key) throws MPIException
{ {
MPI.check(); MPI.check();
return new Intracomm(split(handle, colour, key)); return new Intracomm(split(handle, colour, key));
} }
private native long split(long comm, int colour, int key) throws MPIException; private native long split(long comm, int colour, int key) throws MPIException;
/** /**
* Partition the group associated with this communicator and create * Partition the group associated with this communicator and create
* a new communicator within each subgroup. * a new communicator within each subgroup.
* <p>Java binding of the MPI operation {@code MPI_COMM_SPLIT_TYPE}. * <p>Java binding of the MPI operation {@code MPI_COMM_SPLIT_TYPE}.
@ -151,32 +151,32 @@ private native long split(long comm, int colour, int key) throws MPIException;
* @return new communicator * @return new communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Intracomm splitType(int splitType, int key, Info info) throws MPIException public final Intracomm splitType(int splitType, int key, Info info) throws MPIException
{ {
MPI.check(); MPI.check();
return new Intracomm(splitType(handle, splitType, key, info.handle)); return new Intracomm(splitType(handle, splitType, key, info.handle));
} }
private native long splitType(long comm, int colour, int key, long info) throws MPIException; private native long splitType(long comm, int colour, int key, long info) throws MPIException;
/** /**
* Create a new communicator. * Create a new communicator.
* <p>Java binding of the MPI operation {@code MPI_COMM_CREATE}. * <p>Java binding of the MPI operation {@code MPI_COMM_CREATE}.
* @param group group which is a subset of the group of this communicator * @param group group which is a subset of the group of this communicator
* @return new communicator * @return new communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Intracomm create(Group group) throws MPIException public final Intracomm create(Group group) throws MPIException
{ {
MPI.check(); MPI.check();
return new Intracomm(create(handle, group.handle)); return new Intracomm(create(handle, group.handle));
} }
private native long create(long comm, long group); private native long create(long comm, long group);
// Topology Constructors // Topology Constructors
/** /**
* Creates a communicator to which the Cartesian topology * Creates a communicator to which the Cartesian topology
* information is attached. * information is attached.
* Create a cartesian topology communicator whose group is a subset * Create a cartesian topology communicator whose group is a subset
@ -193,18 +193,18 @@ private native long create(long comm, long group);
* @return new cartesian topology communicator * @return new cartesian topology communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final CartComm createCart(int[] dims, boolean[] periods, boolean reorder) public final CartComm createCart(int[] dims, boolean[] periods, boolean reorder)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
return new CartComm(createCart(handle, dims, periods, reorder)); return new CartComm(createCart(handle, dims, periods, reorder));
} }
private native long createCart( private native long createCart(
long comm, int[] dims, boolean[] periods, boolean reorder) long comm, int[] dims, boolean[] periods, boolean reorder)
throws MPIException; throws MPIException;
/** /**
* Creates a communicator to which the graph topology information is attached. * Creates a communicator to which the graph topology information is attached.
* <p>Java binding of the MPI operation {@code MPI_GRAPH_CREATE}. * <p>Java binding of the MPI operation {@code MPI_GRAPH_CREATE}.
* <p>The number of nodes in the graph, <em>nnodes</em>, is taken * <p>The number of nodes in the graph, <em>nnodes</em>, is taken
@ -216,18 +216,18 @@ private native long createCart(
* @return new graph topology communicator * @return new graph topology communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final GraphComm createGraph(int[] index, int[] edges, boolean reorder) public final GraphComm createGraph(int[] index, int[] edges, boolean reorder)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
return new GraphComm(createGraph(handle, index, edges, reorder)); return new GraphComm(createGraph(handle, index, edges, reorder));
} }
private native long createGraph( private native long createGraph(
long comm, int[] index, int[] edges, boolean reorder) long comm, int[] index, int[] edges, boolean reorder)
throws MPIException; throws MPIException;
/** /**
* Creates a communicator to which the distributed graph topology * Creates a communicator to which the distributed graph topology
* information is attached. * information is attached.
* <p>Java binding of the MPI operation {@code MPI_DIST_GRAPH_CREATE}. * <p>Java binding of the MPI operation {@code MPI_DIST_GRAPH_CREATE}.
@ -241,19 +241,19 @@ private native long createGraph(
* @return communicator with distributed graph topology * @return communicator with distributed graph topology
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final GraphComm createDistGraph( public final GraphComm createDistGraph(
int[] sources, int[] degrees, int[] destinations, int[] sources, int[] degrees, int[] destinations,
int[] weights, Info info, boolean reorder) int[] weights, Info info, boolean reorder)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
return new GraphComm(createDistGraph( return new GraphComm(createDistGraph(
handle, sources, degrees, destinations, handle, sources, degrees, destinations,
weights, info.handle, reorder, true)); weights, info.handle, reorder, true));
} }
/** /**
* Creates a communicator to which the distributed graph topology * Creates a communicator to which the distributed graph topology
* information is attached. * information is attached.
* <p>Java binding of the MPI operation {@code MPI_DIST_GRAPH_CREATE} * <p>Java binding of the MPI operation {@code MPI_DIST_GRAPH_CREATE}
@ -267,25 +267,25 @@ public final GraphComm createDistGraph(
* @return communicator with distributed graph topology * @return communicator with distributed graph topology
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final GraphComm createDistGraph( public final GraphComm createDistGraph(
int[] sources, int[] degrees, int[] destinations, int[] sources, int[] degrees, int[] destinations,
Info info, boolean reorder) Info info, boolean reorder)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
return new GraphComm(createDistGraph( return new GraphComm(createDistGraph(
handle, sources, degrees, destinations, handle, sources, degrees, destinations,
null, info.handle, reorder, false)); null, info.handle, reorder, false));
} }
private native long createDistGraph( private native long createDistGraph(
long comm, int[] sources, int[] degrees, int[] destinations, long comm, int[] sources, int[] degrees, int[] destinations,
int[] weights, long info, boolean reorder, boolean weighted) int[] weights, long info, boolean reorder, boolean weighted)
throws MPIException; throws MPIException;
/** /**
* Creates a communicator to which the distributed graph topology * Creates a communicator to which the distributed graph topology
* information is attached. * information is attached.
* <p>Java binding of the MPI operation {@code MPI_DIST_GRAPH_CREATE_ADJACENT}. * <p>Java binding of the MPI operation {@code MPI_DIST_GRAPH_CREATE_ADJACENT}.
@ -302,19 +302,19 @@ private native long createDistGraph(
* @return communicator with distributed graph topology * @return communicator with distributed graph topology
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final GraphComm createDistGraphAdjacent( public final GraphComm createDistGraphAdjacent(
int[] sources, int[] sourceWeights, int[] sources, int[] sourceWeights,
int[] destinations, int[] destWeights, Info info, boolean reorder) int[] destinations, int[] destWeights, Info info, boolean reorder)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
return new GraphComm(createDistGraphAdjacent( return new GraphComm(createDistGraphAdjacent(
handle, sources, sourceWeights, destinations, handle, sources, sourceWeights, destinations,
destWeights, info.handle, reorder, true)); destWeights, info.handle, reorder, true));
} }
/** /**
* Creates a communicator to which the distributed graph topology * Creates a communicator to which the distributed graph topology
* information is attached. * information is attached.
* <p>Java binding of the MPI operation {@code MPI_DIST_GRAPH_CREATE_ADJACENT} * <p>Java binding of the MPI operation {@code MPI_DIST_GRAPH_CREATE_ADJACENT}
@ -330,24 +330,24 @@ public final GraphComm createDistGraphAdjacent(
* @return communicator with distributed graph topology * @return communicator with distributed graph topology
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final GraphComm createDistGraphAdjacent( public final GraphComm createDistGraphAdjacent(
int[] sources, int[] destinations, Info info, boolean reorder) int[] sources, int[] destinations, Info info, boolean reorder)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
return new GraphComm(createDistGraphAdjacent( return new GraphComm(createDistGraphAdjacent(
handle, sources, null, destinations, null, handle, sources, null, destinations, null,
info.handle, reorder, false)); info.handle, reorder, false));
} }
private native long createDistGraphAdjacent( private native long createDistGraphAdjacent(
long comm, int[] sources, int []sourceweights, int[] destinations, long comm, int[] sources, int []sourceweights, int[] destinations,
int[] distweights, long info, boolean reorder, boolean weighted) int[] distweights, long info, boolean reorder, boolean weighted)
throws MPIException; throws MPIException;
/** /**
* Perform a prefix reduction on data distributed across the group. * Perform a prefix reduction on data distributed across the group.
* <p>Java binding of the MPI operation {@code MPI_SCAN}. * <p>Java binding of the MPI operation {@code MPI_SCAN}.
* @param sendbuf send buffer array * @param sendbuf send buffer array
@ -357,10 +357,10 @@ private native long createDistGraphAdjacent(
* @param op reduce operation * @param op reduce operation
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final void scan(Object sendbuf, Object recvbuf, public final void scan(Object sendbuf, Object recvbuf,
int count, Datatype type, Op op) int count, Datatype type, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
int sendoff = 0, int sendoff = 0,
@ -385,9 +385,9 @@ public final void scan(Object sendbuf, Object recvbuf,
scan(handle, sendbuf, sdb, sendoff, recvbuf, rdb, recvoff, scan(handle, sendbuf, sdb, sendoff, recvbuf, rdb, recvoff,
count, type.handle, type.baseType, op, op.handle); count, type.handle, type.baseType, op, op.handle);
} }
/** /**
* Perform a prefix reduction on data distributed across the group. * Perform a prefix reduction on data distributed across the group.
* <p>Java binding of the MPI operation {@code MPI_SCAN} * <p>Java binding of the MPI operation {@code MPI_SCAN}
* using {@code MPI_IN_PLACE} instead of the send buffer. * using {@code MPI_IN_PLACE} instead of the send buffer.
@ -397,9 +397,9 @@ public final void scan(Object sendbuf, Object recvbuf,
* @param op reduce operation * @param op reduce operation
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final void scan(Object recvbuf, int count, Datatype type, Op op) public final void scan(Object recvbuf, int count, Datatype type, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
int recvoff = 0; int recvoff = 0;
boolean rdb = false; boolean rdb = false;
@ -414,14 +414,14 @@ public final void scan(Object recvbuf, int count, Datatype type, Op op)
scan(handle, null, false, 0, recvbuf, rdb, recvoff, scan(handle, null, false, 0, recvbuf, rdb, recvoff,
count, type.handle, type.baseType, op, op.handle); count, type.handle, type.baseType, op, op.handle);
} }
private native void scan( private native void scan(
long comm, Object sendbuf, boolean sdb, int sendoff, long comm, Object sendbuf, boolean sdb, int sendoff,
Object recvbuf, boolean rdb, int recvoff, int count, Object recvbuf, boolean rdb, int recvoff, int count,
long type, int baseType, Op jOp, long hOp) throws MPIException; long type, int baseType, Op jOp, long hOp) throws MPIException;
/** /**
* Perform a prefix reduction on data distributed across the group. * Perform a prefix reduction on data distributed across the group.
* <p>Java binding of the MPI operation {@code MPI_ISCAN}. * <p>Java binding of the MPI operation {@code MPI_ISCAN}.
* @param sendbuf send buffer array * @param sendbuf send buffer array
@ -432,19 +432,19 @@ private native void scan(
* @return communication request * @return communication request
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Request iScan(Buffer sendbuf, Buffer recvbuf, public final Request iScan(Buffer sendbuf, Buffer recvbuf,
int count, Datatype type, Op op) int count, Datatype type, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
op.setDatatype(type); op.setDatatype(type);
assertDirectBuffer(sendbuf, recvbuf); assertDirectBuffer(sendbuf, recvbuf);
return new Request(iScan(handle, sendbuf, recvbuf, count, return new Request(iScan(handle, sendbuf, recvbuf, count,
type.handle, type.baseType, op, op.handle)); type.handle, type.baseType, op, op.handle));
} }
/** /**
* Perform a prefix reduction on data distributed across the group. * Perform a prefix reduction on data distributed across the group.
* <p>Java binding of the MPI operation {@code MPI_ISCAN} * <p>Java binding of the MPI operation {@code MPI_ISCAN}
* using {@code MPI_IN_PLACE} instead of the send buffer. * using {@code MPI_IN_PLACE} instead of the send buffer.
@ -455,9 +455,9 @@ public final Request iScan(Buffer sendbuf, Buffer recvbuf,
* @return communication request * @return communication request
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Request iScan(Buffer buf, int count, Datatype type, Op op) public final Request iScan(Buffer buf, int count, Datatype type, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
op.setDatatype(type); op.setDatatype(type);
assertDirectBuffer(buf); assertDirectBuffer(buf);
@ -465,13 +465,13 @@ public final Request iScan(Buffer buf, int count, Datatype type, Op op)
return new Request(iScan( return new Request(iScan(
handle, null, buf, count, handle, null, buf, count,
type.handle, type.baseType, op, op.handle)); type.handle, type.baseType, op, op.handle));
} }
private native long iScan( private native long iScan(
long comm, Buffer sendbuf, Buffer recvbuf, int count, long comm, Buffer sendbuf, Buffer recvbuf, int count,
long type, int baseType, Op jOp, long hOp) throws MPIException; long type, int baseType, Op jOp, long hOp) throws MPIException;
/** /**
* Perform a prefix reduction on data distributed across the group. * Perform a prefix reduction on data distributed across the group.
* <p>Java binding of the MPI operation {@code MPI_EXSCAN}. * <p>Java binding of the MPI operation {@code MPI_EXSCAN}.
* @param sendbuf send buffer array * @param sendbuf send buffer array
@ -481,10 +481,10 @@ private native long iScan(
* @param op reduce operation * @param op reduce operation
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final void exScan(Object sendbuf, Object recvbuf, public final void exScan(Object sendbuf, Object recvbuf,
int count, Datatype type, Op op) int count, Datatype type, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
int sendoff = 0, int sendoff = 0,
@ -509,9 +509,9 @@ public final void exScan(Object sendbuf, Object recvbuf,
exScan(handle, sendbuf, sdb, sendoff, recvbuf, rdb, recvoff, exScan(handle, sendbuf, sdb, sendoff, recvbuf, rdb, recvoff,
count, type.handle, type.baseType, op, op.handle); count, type.handle, type.baseType, op, op.handle);
} }
/** /**
* Perform a prefix reduction on data distributed across the group. * Perform a prefix reduction on data distributed across the group.
* <p>Java binding of the MPI operation {@code MPI_EXSCAN} * <p>Java binding of the MPI operation {@code MPI_EXSCAN}
* using {@code MPI_IN_PLACE} instead of the send buffer. * using {@code MPI_IN_PLACE} instead of the send buffer.
@ -521,9 +521,9 @@ public final void exScan(Object sendbuf, Object recvbuf,
* @param op reduce operation * @param op reduce operation
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final void exScan(Object buf, int count, Datatype type, Op op) public final void exScan(Object buf, int count, Datatype type, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
int off = 0; int off = 0;
boolean db = false; boolean db = false;
@ -538,14 +538,14 @@ public final void exScan(Object buf, int count, Datatype type, Op op)
exScan(handle, null, false, 0, buf, db, off, count, exScan(handle, null, false, 0, buf, db, off, count,
type.handle, type.baseType, op, op.handle); type.handle, type.baseType, op, op.handle);
} }
private native void exScan( private native void exScan(
long comm, Object sendbuf, boolean sdb, int sendoff, long comm, Object sendbuf, boolean sdb, int sendoff,
Object recvbuf, boolean rdb, int recvoff, int count, Object recvbuf, boolean rdb, int recvoff, int count,
long type, int baseType, Op jOp, long hOp) throws MPIException; long type, int baseType, Op jOp, long hOp) throws MPIException;
/** /**
* Perform a prefix reduction on data distributed across the group. * Perform a prefix reduction on data distributed across the group.
* <p>Java binding of the MPI operation {@code MPI_IEXSCAN}. * <p>Java binding of the MPI operation {@code MPI_IEXSCAN}.
* @param sendbuf send buffer array * @param sendbuf send buffer array
@ -556,19 +556,19 @@ private native void exScan(
* @return communication request * @return communication request
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Request iExScan(Buffer sendbuf, Buffer recvbuf, public final Request iExScan(Buffer sendbuf, Buffer recvbuf,
int count, Datatype type, Op op) int count, Datatype type, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
op.setDatatype(type); op.setDatatype(type);
assertDirectBuffer(sendbuf, recvbuf); assertDirectBuffer(sendbuf, recvbuf);
return new Request(iExScan(handle, sendbuf, recvbuf, count, return new Request(iExScan(handle, sendbuf, recvbuf, count,
type.handle, type.baseType, op, op.handle)); type.handle, type.baseType, op, op.handle));
} }
/** /**
* Perform a prefix reduction on data distributed across the group. * Perform a prefix reduction on data distributed across the group.
* <p>Java binding of the MPI operation {@code MPI_IEXSCAN} * <p>Java binding of the MPI operation {@code MPI_IEXSCAN}
* using {@code MPI_IN_PLACE} instead of the send buffer. * using {@code MPI_IN_PLACE} instead of the send buffer.
@ -579,9 +579,9 @@ public final Request iExScan(Buffer sendbuf, Buffer recvbuf,
* @return communication request * @return communication request
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Request iExScan(Buffer buf, int count, Datatype type, Op op) public final Request iExScan(Buffer buf, int count, Datatype type, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
op.setDatatype(type); op.setDatatype(type);
assertDirectBuffer(buf); assertDirectBuffer(buf);
@ -589,64 +589,64 @@ public final Request iExScan(Buffer buf, int count, Datatype type, Op op)
return new Request(iExScan( return new Request(iExScan(
handle, null, buf, count, handle, null, buf, count,
type.handle, type.baseType, op, op.handle)); type.handle, type.baseType, op, op.handle));
} }
private native long iExScan( private native long iExScan(
long comm, Buffer sendbuf, Buffer recvbuf, int count, long comm, Buffer sendbuf, Buffer recvbuf, int count,
long type, int baseType, Op jOp, long hOp) throws MPIException; long type, int baseType, Op jOp, long hOp) throws MPIException;
/** /**
* Java binding of {@code MPI_OPEN_PORT} using {@code MPI_INFO_NULL}. * Java binding of {@code MPI_OPEN_PORT} using {@code MPI_INFO_NULL}.
* @return port name * @return port name
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static String openPort() throws MPIException public static String openPort() throws MPIException
{ {
MPI.check(); MPI.check();
return openPort(Info.NULL); return openPort(Info.NULL);
} }
/** /**
* Java binding of {@code MPI_OPEN_PORT}. * Java binding of {@code MPI_OPEN_PORT}.
* @param info implementation-specific information * @param info implementation-specific information
* @return port name * @return port name
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static String openPort(Info info) throws MPIException public static String openPort(Info info) throws MPIException
{ {
MPI.check(); MPI.check();
return openPort(info.handle); return openPort(info.handle);
} }
private native static String openPort(long info) throws MPIException; private native static String openPort(long info) throws MPIException;
/** /**
* Java binding of {@code MPI_CLOSE_PORT}. * Java binding of {@code MPI_CLOSE_PORT}.
* @param name port name * @param name port name
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static void closePort(String name) throws MPIException public static void closePort(String name) throws MPIException
{ {
MPI.check(); MPI.check();
closePort_jni(name); closePort_jni(name);
} }
private native static void closePort_jni(String name) throws MPIException; private native static void closePort_jni(String name) throws MPIException;
/** /**
* Java binding of {@code MPI_COMM_ACCEPT} using {@code MPI_INFO_NULL}. * Java binding of {@code MPI_COMM_ACCEPT} using {@code MPI_INFO_NULL}.
* @param port port name * @param port port name
* @param root rank in comm of root node * @param root rank in comm of root node
* @return intercommunicator with client as remote group * @return intercommunicator with client as remote group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Intercomm accept(String port, int root) throws MPIException public final Intercomm accept(String port, int root) throws MPIException
{ {
MPI.check(); MPI.check();
return new Intercomm(accept(handle, port, Info.NULL, root)); return new Intercomm(accept(handle, port, Info.NULL, root));
} }
/** /**
* Java binding of {@code MPI_COMM_ACCEPT}. * Java binding of {@code MPI_COMM_ACCEPT}.
* @param port port name * @param port port name
* @param info implementation-specific information * @param info implementation-specific information
@ -654,30 +654,30 @@ public final Intercomm accept(String port, int root) throws MPIException
* @return intercommunicator with client as remote group * @return intercommunicator with client as remote group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Intercomm accept(String port, Info info, int root) public final Intercomm accept(String port, Info info, int root)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
return new Intercomm(accept(handle, port, info.handle, root)); return new Intercomm(accept(handle, port, info.handle, root));
} }
private native long accept(long comm, String port, long info, int root) private native long accept(long comm, String port, long info, int root)
throws MPIException; throws MPIException;
/** /**
* Java binding of {@code MPI_COMM_CONNECT} using {@code MPI_INFO_NULL}. * Java binding of {@code MPI_COMM_CONNECT} using {@code MPI_INFO_NULL}.
* @param port port name * @param port port name
* @param root rank in comm of root node * @param root rank in comm of root node
* @return intercommunicator with server as remote group * @return intercommunicator with server as remote group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Intercomm connect(String port, int root) throws MPIException public final Intercomm connect(String port, int root) throws MPIException
{ {
MPI.check(); MPI.check();
return new Intercomm(connect(handle, port, Info.NULL, root)); return new Intercomm(connect(handle, port, Info.NULL, root));
} }
/** /**
* Java binding of {@code MPI_COMM_CONNECT}. * Java binding of {@code MPI_COMM_CONNECT}.
* @param port port name * @param port port name
* @param info implementation-specific information * @param info implementation-specific information
@ -685,105 +685,105 @@ public final Intercomm connect(String port, int root) throws MPIException
* @return intercommunicator with server as remote group * @return intercommunicator with server as remote group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Intercomm connect(String port, Info info, int root) public final Intercomm connect(String port, Info info, int root)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
return new Intercomm(connect(handle, port, info.handle, root)); return new Intercomm(connect(handle, port, info.handle, root));
} }
private native long connect(long comm, String port, long info, int root) private native long connect(long comm, String port, long info, int root)
throws MPIException; throws MPIException;
/** /**
* Java binding of {@code MPI_PUBLISH_NAME} using {@code MPI_INFO_NULL}. * Java binding of {@code MPI_PUBLISH_NAME} using {@code MPI_INFO_NULL}.
* @param service service name * @param service service name
* @param port port name * @param port port name
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static void publishName(String service, String port) public static void publishName(String service, String port)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
publishName(service, Info.NULL, port); publishName(service, Info.NULL, port);
} }
/** /**
* Java binding of {@code MPI_PUBLISH_NAME}. * Java binding of {@code MPI_PUBLISH_NAME}.
* @param service service name * @param service service name
* @param info implementation-specific information * @param info implementation-specific information
* @param port port name * @param port port name
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static void publishName(String service, Info info, String port) public static void publishName(String service, Info info, String port)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
publishName(service, info.handle, port); publishName(service, info.handle, port);
} }
private native static void publishName(String service, long info, String port) private native static void publishName(String service, long info, String port)
throws MPIException; throws MPIException;
/** /**
* Java binding of {@code MPI_UNPUBLISH_NAME} using {@code MPI_INFO_NULL}. * Java binding of {@code MPI_UNPUBLISH_NAME} using {@code MPI_INFO_NULL}.
* @param service service name * @param service service name
* @param port port name * @param port port name
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static void unpublishName(String service, String port) public static void unpublishName(String service, String port)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
unpublishName(service, Info.NULL, port); unpublishName(service, Info.NULL, port);
} }
/** /**
* Java binding of {@code MPI_UNPUBLISH_NAME}. * Java binding of {@code MPI_UNPUBLISH_NAME}.
* @param service service name * @param service service name
* @param info implementation-specific information * @param info implementation-specific information
* @param port port name * @param port port name
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static void unpublishName(String service, Info info, String port) public static void unpublishName(String service, Info info, String port)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
unpublishName(service, info.handle, port); unpublishName(service, info.handle, port);
} }
private native static void unpublishName(String service, long info, String port) private native static void unpublishName(String service, long info, String port)
throws MPIException; throws MPIException;
/** /**
* Java binding of {@code MPI_LOOKUP_NAME} using {@code MPI_INFO_NULL}. * Java binding of {@code MPI_LOOKUP_NAME} using {@code MPI_INFO_NULL}.
* @param service service name * @param service service name
* @return port name * @return port name
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static String lookupName(String service) throws MPIException public static String lookupName(String service) throws MPIException
{ {
MPI.check(); MPI.check();
return lookupName(service, Info.NULL); return lookupName(service, Info.NULL);
} }
/** /**
* Java binding of {@code MPI_LOOKUP_NAME}. * Java binding of {@code MPI_LOOKUP_NAME}.
* @param service service name * @param service service name
* @param info mplementation-specific information * @param info mplementation-specific information
* @return port name * @return port name
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static String lookupName(String service, Info info) throws MPIException public static String lookupName(String service, Info info) throws MPIException
{ {
MPI.check(); MPI.check();
return lookupName(service, info.handle); return lookupName(service, info.handle);
} }
private native static String lookupName(String service, long info) private native static String lookupName(String service, long info)
throws MPIException; throws MPIException;
/** /**
* Java binding of {@code MPI_COMM_SPAWN}. * Java binding of {@code MPI_COMM_SPAWN}.
* This intracommunicator will contain the group of spawned processes. * This intracommunicator will contain the group of spawned processes.
* @param command name of program to be spawned * @param command name of program to be spawned
@ -798,21 +798,21 @@ private native static String lookupName(String service, long info)
* @return intercommunicator between original group and the newly spawned group * @return intercommunicator between original group and the newly spawned group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Intercomm spawn(String command, String[] argv, int maxprocs, public final Intercomm spawn(String command, String[] argv, int maxprocs,
Info info, int root, int[] errcodes) Info info, int root, int[] errcodes)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
return new Intercomm(spawn(handle, command, argv, maxprocs, return new Intercomm(spawn(handle, command, argv, maxprocs,
info.handle, root, errcodes)); info.handle, root, errcodes));
} }
private native long spawn(long comm, String command, String[] argv, private native long spawn(long comm, String command, String[] argv,
int maxprocs, long info, int root, int[] errcodes) int maxprocs, long info, int root, int[] errcodes)
throws MPIException; throws MPIException;
/** /**
* Java binding of {@code MPI_COMM_SPAWN_MULTIPLE}. * Java binding of {@code MPI_COMM_SPAWN_MULTIPLE}.
* This intracommunicator will contain the group of spawned processes. * This intracommunicator will contain the group of spawned processes.
* @param commands programs to be executed * @param commands programs to be executed
@ -827,11 +827,11 @@ private native long spawn(long comm, String command, String[] argv,
* @return intercommunicator between original group and the newly spawned group * @return intercommunicator between original group and the newly spawned group
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Intercomm spawnMultiple( public final Intercomm spawnMultiple(
String[] commands, String[][] argv, int[] maxprocs, String[] commands, String[][] argv, int[] maxprocs,
Info[] info, int root, int[] errcodes) Info[] info, int root, int[] errcodes)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
long hInfo[] = new long[info.length]; long hInfo[] = new long[info.length];
@ -841,9 +841,9 @@ public final Intercomm spawnMultiple(
return new Intercomm(spawnMultiple(handle, commands, argv, maxprocs, return new Intercomm(spawnMultiple(handle, commands, argv, maxprocs,
hInfo, root, errcodes)); hInfo, root, errcodes));
} }
private native long spawnMultiple( private native long spawnMultiple(
long comm, String[] commands, String[][] argv, int[] maxprocs, long comm, String[] commands, String[][] argv, int[] maxprocs,
long[] info, int root, int[] errcodes) throws MPIException; long[] info, int root, int[] errcodes) throws MPIException;

Просмотреть файл

@ -25,17 +25,17 @@ package mpi;
*/ */
public final class LongInt extends Struct public final class LongInt extends Struct
{ {
private final int lSize, iOff, iSize; private final int lSize, iOff, iSize;
/** /**
* The struct object will be created only in MPI class. * The struct object will be created only in MPI class.
* @param longSize size of long * @param longSize size of long
* @param intOff int offset * @param intOff int offset
* @param intSize int size * @param intSize int size
* @see MPI#longInt * @see MPI#longInt
*/ */
protected LongInt(int longSize, int intOff, int intSize) protected LongInt(int longSize, int intOff, int intSize)
{ {
lSize = longSize; lSize = longSize;
iSize = intSize; iSize = intSize;
int lOff; int lOff;
@ -58,22 +58,22 @@ protected LongInt(int longSize, int intOff, int intSize)
} }
assert(intOff == iOff); assert(intOff == iOff);
} }
/** /**
* Creates a Data object. * Creates a Data object.
* @return new Data object. * @return new Data object.
*/ */
@Override protected LongInt.Data newData() @Override protected LongInt.Data newData()
{ {
return new LongInt.Data(); return new LongInt.Data();
} }
/** /**
* Class for reading/writing data in a struct stored in a byte buffer. * Class for reading/writing data in a struct stored in a byte buffer.
*/ */
public final class Data extends Struct.Data public final class Data extends Struct.Data
{ {
/** /**
* Gets the long value. * Gets the long value.
* @return long value * @return long value
@ -129,6 +129,6 @@ public final class Data extends Struct.Data
default: throw new AssertionError(); default: throw new AssertionError();
} }
} }
} // Data } // Data
} // LongInt } // LongInt

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -9,31 +9,33 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : MPIException.java * File : MPIException.java
* Author : Bryan Carpenter * Author : Bryan Carpenter
* Created : Tue Sep 14 13:03:57 EDT 1999 * Created : Tue Sep 14 13:03:57 EDT 1999
@ -52,50 +54,50 @@ package mpi;
*/ */
public final class MPIException extends Exception public final class MPIException extends Exception
{ {
private int errorCode, errorClass; private int errorCode, errorClass;
protected MPIException(int code, int clazz, String message) protected MPIException(int code, int clazz, String message)
{ {
super(message); super(message);
errorCode = code; errorCode = code;
errorClass = clazz; errorClass = clazz;
} }
/** /**
* Creates an exception. * Creates an exception.
* @param message message associated to the exception * @param message message associated to the exception
*/ */
public MPIException(String message) public MPIException(String message)
{ {
super(message); super(message);
} }
/** /**
* Creates an exception: * Creates an exception:
* @param cause cause associated to the exception * @param cause cause associated to the exception
*/ */
public MPIException(Throwable cause) public MPIException(Throwable cause)
{ {
super(cause); super(cause);
setStackTrace(cause.getStackTrace()); setStackTrace(cause.getStackTrace());
} }
/** /**
* Gets the MPI error code. * Gets the MPI error code.
* @return error code * @return error code
*/ */
public int getErrorCode() public int getErrorCode()
{ {
return errorCode; return errorCode;
} }
/** /**
* Gets the MPI error class. * Gets the MPI error class.
* @return error class * @return error class
*/ */
public int getErrorClass() public int getErrorClass()
{ {
return errorClass; return errorClass;
} }
} // MPIException } // MPIException

Просмотреть файл

@ -16,8 +16,8 @@
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* IMPLEMENTATION DETAILS * IMPLEMENTATION DETAILS
* *
* All methods with buffers that can be direct or non direct have * All methods with buffers that can be direct or non direct have
@ -36,43 +36,43 @@ import static mpi.MPI.assertDirectBuffer;
*/ */
public final class Message public final class Message
{ {
protected long handle; protected long handle;
private static long NULL, NO_PROC; private static long NULL, NO_PROC;
static static
{ {
init(); init();
} }
private static native void init(); private static native void init();
/** /**
* Creates a {@code MPI_MESSAGE_NULL}. * Creates a {@code MPI_MESSAGE_NULL}.
*/ */
public Message() public Message()
{ {
handle = NULL; handle = NULL;
} }
/** /**
* Tests if the message is {@code MPI_MESSAGE_NULL}. * Tests if the message is {@code MPI_MESSAGE_NULL}.
* @return true if the message is {@code MPI_MESSAGE_NULL}. * @return true if the message is {@code MPI_MESSAGE_NULL}.
*/ */
public boolean isNull() public boolean isNull()
{ {
return handle == NULL; return handle == NULL;
} }
/** /**
* Tests if the message is {@code MPI_MESSAGE_NO_PROC}. * Tests if the message is {@code MPI_MESSAGE_NO_PROC}.
* @return true if the message is {@code MPI_MESSAGE_NO_PROC}. * @return true if the message is {@code MPI_MESSAGE_NO_PROC}.
*/ */
public boolean isNoProc() public boolean isNoProc()
{ {
return handle == NO_PROC; return handle == NO_PROC;
} }
/** /**
* Java binding of {@code MPI_MPROBE}. * Java binding of {@code MPI_MPROBE}.
* @param source rank of the source * @param source rank of the source
* @param tag message tag * @param tag message tag
@ -80,18 +80,18 @@ public boolean isNoProc()
* @return status object * @return status object
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Status mProbe(int source, int tag, Comm comm) throws MPIException public Status mProbe(int source, int tag, Comm comm) throws MPIException
{ {
MPI.check(); MPI.check();
Status status = new Status(); Status status = new Status();
handle = mProbe(source, tag, comm.handle, status.data); handle = mProbe(source, tag, comm.handle, status.data);
return status; return status;
} }
private native long mProbe(int source, int tag, long comm, long[] status) private native long mProbe(int source, int tag, long comm, long[] status)
throws MPIException; throws MPIException;
/** /**
* Java binding of {@code MPI_IMPROBE}. * Java binding of {@code MPI_IMPROBE}.
* @param source rank of the source * @param source rank of the source
* @param tag message tag * @param tag message tag
@ -99,16 +99,16 @@ private native long mProbe(int source, int tag, long comm, long[] status)
* @return status object if there is a message, {@code null} otherwise * @return status object if there is a message, {@code null} otherwise
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Status imProbe(int source, int tag, Comm comm) throws MPIException public Status imProbe(int source, int tag, Comm comm) throws MPIException
{ {
MPI.check(); MPI.check();
return imProbe(source, tag, comm.handle); return imProbe(source, tag, comm.handle);
} }
private native Status imProbe(int source, int tag, long comm) private native Status imProbe(int source, int tag, long comm)
throws MPIException; throws MPIException;
/** /**
* Java binding of {@code MPI_MRECV}. * Java binding of {@code MPI_MRECV}.
* @param buf receive buffer * @param buf receive buffer
* @param count number of elements in receve buffer * @param count number of elements in receve buffer
@ -116,8 +116,8 @@ private native Status imProbe(int source, int tag, long comm)
* @return status object * @return status object
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Status mRecv(Object buf, int count, Datatype type) throws MPIException public Status mRecv(Object buf, int count, Datatype type) throws MPIException
{ {
MPI.check(); MPI.check();
int off = 0; int off = 0;
boolean db = false; boolean db = false;
@ -133,13 +133,13 @@ public Status mRecv(Object buf, int count, Datatype type) throws MPIException
type.handle, type.baseType, status.data); type.handle, type.baseType, status.data);
return status; return status;
} }
private native long mRecv( private native long mRecv(
long message, Object buf, boolean db, int offset, int count, long message, Object buf, boolean db, int offset, int count,
long type, int baseType, long[] status) throws MPIException; long type, int baseType, long[] status) throws MPIException;
/** /**
* Java binding of {@code MPI_IMRECV}. * Java binding of {@code MPI_IMRECV}.
* @param buf receive buffer * @param buf receive buffer
* @param count number of elements in receve buffer * @param count number of elements in receve buffer
@ -147,15 +147,15 @@ private native long mRecv(
* @return request object * @return request object
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Request imRecv(Buffer buf, int count, Datatype type) public Request imRecv(Buffer buf, int count, Datatype type)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
assertDirectBuffer(buf); assertDirectBuffer(buf);
return new Request(imRecv(handle, buf, count, type.handle)); return new Request(imRecv(handle, buf, count, type.handle));
} }
private native long imRecv(long message, Object buf, int count, long type) private native long imRecv(long message, Object buf, int count, long type)
throws MPIException; throws MPIException;
} // Message } // Message

Просмотреть файл

@ -16,26 +16,26 @@
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : Op.java * File : Op.java
* Author : Xinying Li, Sang LIm * Author : Xinying Li, Sang LIm
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -54,48 +54,48 @@ import java.nio.*;
*/ */
public final class Op implements Freeable public final class Op implements Freeable
{ {
protected final UserFunction uf; protected final UserFunction uf;
private boolean commute; private boolean commute;
private Datatype datatype; private Datatype datatype;
protected long handle; protected long handle;
static static
{ {
init(); init();
} }
private static native void init(); private static native void init();
protected Op(int type) protected Op(int type)
{ {
getOp(type); getOp(type);
uf = null; uf = null;
commute = true; commute = true;
} }
private native void getOp(int type); private native void getOp(int type);
/** /**
* Bind a user-defined global reduction operation to an {@code Op} object. * Bind a user-defined global reduction operation to an {@code Op} object.
* <p>Java binding of the MPI operation {@code MPI_OP_CREATE}. * <p>Java binding of the MPI operation {@code MPI_OP_CREATE}.
* @param function user defined function * @param function user defined function
* @param commute {@code true} if commutative, {@code false} otherwise * @param commute {@code true} if commutative, {@code false} otherwise
*/ */
public Op(UserFunction function, boolean commute) public Op(UserFunction function, boolean commute)
{ {
handle = 0; // When JNI code gets the handle it will be initialized. handle = 0; // When JNI code gets the handle it will be initialized.
uf = function; uf = function;
this.commute = commute; this.commute = commute;
} }
protected void setDatatype(Datatype t) protected void setDatatype(Datatype t)
{ {
datatype = t; datatype = t;
} }
protected void call(Object invec, Object inoutvec, int count) protected void call(Object invec, Object inoutvec, int count)
throws MPIException throws MPIException
{ {
if(datatype.baseType == Datatype.BOOLEAN) if(datatype.baseType == Datatype.BOOLEAN)
{ {
uf.call(invec, inoutvec, count, datatype); uf.call(invec, inoutvec, count, datatype);
@ -106,28 +106,28 @@ protected void call(Object invec, Object inoutvec, int count)
((ByteBuffer)inoutvec).order(ByteOrder.nativeOrder()), ((ByteBuffer)inoutvec).order(ByteOrder.nativeOrder()),
count, datatype); count, datatype);
} }
} }
/** /**
* Test if the operation is conmutative. * Test if the operation is conmutative.
* <p>Java binding of the MPI operation {@code MPI_OP_COMMUTATIVE}. * <p>Java binding of the MPI operation {@code MPI_OP_COMMUTATIVE}.
* @return {@code true} if commutative, {@code false} otherwise * @return {@code true} if commutative, {@code false} otherwise
*/ */
public boolean isCommutative() public boolean isCommutative()
{ {
return commute; return commute;
} }
/** /**
* Java binding of the MPI operation {@code MPI_OP_FREE}. * Java binding of the MPI operation {@code MPI_OP_FREE}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
@Override public native void free() throws MPIException; @Override public native void free() throws MPIException;
/** /**
* Test if operation object is null. * Test if operation object is null.
* @return true if the operation object is null, false otherwise * @return true if the operation object is null, false otherwise
*/ */
public native boolean isNull(); public native boolean isNull();
} // Op } // Op

Просмотреть файл

@ -16,26 +16,26 @@
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : Prequest.java * File : Prequest.java
* Author : Sang Lim, Xinying Li, Bryan Carpenter * Author : Sang Lim, Xinying Li, Bryan Carpenter
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -52,16 +52,16 @@ package mpi;
*/ */
public final class Prequest extends Request public final class Prequest extends Request
{ {
/** /**
* Constructor used by {@code sendInit}, etc. * Constructor used by {@code sendInit}, etc.
* @param handle Handle for the Prequest object * @param handle Handle for the Prequest object
*/ */
protected Prequest(long handle) protected Prequest(long handle)
{ {
super(handle); super(handle);
} }
/** /**
* Activate a persistent communication request. * Activate a persistent communication request.
* <p>Java binding of the MPI operation {@code MPI_START}. * <p>Java binding of the MPI operation {@code MPI_START}.
* The communication is completed by using the request in * The communication is completed by using the request in
@ -70,27 +70,27 @@ protected Prequest(long handle)
* It can be reactivated by a further call to {@code Start}. * It can be reactivated by a further call to {@code Start}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void start() throws MPIException public void start() throws MPIException
{ {
handle = start(handle); handle = start(handle);
} }
private native long start(long request) throws MPIException; private native long start(long request) throws MPIException;
/** /**
* Activate a list of communication requests. * Activate a list of communication requests.
* <p>Java binding of the MPI operation {@code MPI_STARTALL}. * <p>Java binding of the MPI operation {@code MPI_STARTALL}.
* @param requests array of requests * @param requests array of requests
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static void startAll(Prequest[] requests) throws MPIException public static void startAll(Prequest[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
startAll(r); startAll(r);
setHandles(requests, r); setHandles(requests, r);
} }
private native static void startAll(long[] requests) throws MPIException; private native static void startAll(long[] requests) throws MPIException;
} // Prequest } // Prequest

Просмотреть файл

@ -16,35 +16,35 @@
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* File : Request.java * File : Request.java
* Author : Sang Lim, Xinying Li, Bryan Carpenter * Author : Sang Lim, Xinying Li, Bryan Carpenter
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
* Revision : $Revision: 1.11 $ * Revision : $Revision: 1.11 $
* Updated : $Date: 2001/08/07 16:36:25 $ * Updated : $Date: 2001/08/07 16:36:25 $
* Copyright: Northeast Parallel Architectures Center * Copyright: Northeast Parallel Architectures Center
* at Syracuse University 1998 * at Syracuse University 1998
*/ *
*
/* *
* Note: in a send request for a buffer containing objects, the primary * Note: in a send request for a buffer containing objects, the primary
* `MPI_Request' referenced by `handle' is the request to send the data. * `MPI_Request' referenced by `handle' is the request to send the data.
* The request to send the header is in the secondary field, `hdrReq'. * The request to send the header is in the secondary field, `hdrReq'.
@ -52,9 +52,9 @@
* the primary `MPI_Request' is the request to send the header. * the primary `MPI_Request' is the request to send the header.
* The receive of the data is not initiated until a `wait' or `test' * The receive of the data is not initiated until a `wait' or `test'
* operation succeeds. * operation succeeds.
*/ *
*
/* *
* Probably `Request' should be an abstract class, and there should * Probably `Request' should be an abstract class, and there should
* be several concrete subclasses. At the moment requests are created * be several concrete subclasses. At the moment requests are created
* in a few different ways, and the differently constructed requests are * in a few different ways, and the differently constructed requests are
@ -68,91 +68,91 @@ package mpi;
*/ */
public class Request implements Freeable public class Request implements Freeable
{ {
protected long handle; protected long handle;
static static
{ {
init(); init();
} }
private static native void init(); private static native void init();
protected static native long getNull(); protected static native long getNull();
protected Request(long handle) protected Request(long handle)
{ {
this.handle = handle; this.handle = handle;
} }
/** /**
* Set the request object to be void. * Set the request object to be void.
* Java binding of the MPI operation {@code MPI_REQUEST_FREE}. * Java binding of the MPI operation {@code MPI_REQUEST_FREE}.
*/ */
@Override public void free() throws MPIException @Override public void free() throws MPIException
{ {
if(!isNull()) if(!isNull())
{ {
MPI.check(); MPI.check();
handle = free(handle); handle = free(handle);
} }
} }
private native long free(long req) throws MPIException; private native long free(long req) throws MPIException;
/** /**
* Mark a pending nonblocking communication for cancellation. * Mark a pending nonblocking communication for cancellation.
* Java binding of the MPI operation {@code MPI_CANCEL}. * Java binding of the MPI operation {@code MPI_CANCEL}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final void cancel() throws MPIException public final void cancel() throws MPIException
{ {
MPI.check(); MPI.check();
cancel(handle); cancel(handle);
} }
private native void cancel(long request) throws MPIException; private native void cancel(long request) throws MPIException;
/** /**
* Test if request object is null. * Test if request object is null.
* @return true if the request object is null, false otherwise * @return true if the request object is null, false otherwise
*/ */
public final boolean isNull() public final boolean isNull()
{ {
return handle == 0 || handle == MPI.REQUEST_NULL.handle; return handle == 0 || handle == MPI.REQUEST_NULL.handle;
} }
/** /**
* Blocks until the operation identified by the request is complete. * Blocks until the operation identified by the request is complete.
* <p>Java binding of the MPI operation {@code MPI_WAIT}. * <p>Java binding of the MPI operation {@code MPI_WAIT}.
* <p>After the call returns, the request object becomes inactive. * <p>After the call returns, the request object becomes inactive.
* @return status object * @return status object
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Status waitStatus() throws MPIException public final Status waitStatus() throws MPIException
{ {
MPI.check(); MPI.check();
Status status = new Status(); Status status = new Status();
handle = waitStatus(handle, status.data); handle = waitStatus(handle, status.data);
return status; return status;
} }
private native long waitStatus(long request, long[] stat) throws MPIException; private native long waitStatus(long request, long[] stat) throws MPIException;
/** /**
* Blocks until the operation identified by the request is complete. * Blocks until the operation identified by the request is complete.
* <p>Java binding of the MPI operation {@code MPI_WAIT}. * <p>Java binding of the MPI operation {@code MPI_WAIT}.
* <p>After the call returns, the request object becomes inactive. * <p>After the call returns, the request object becomes inactive.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final void waitFor() throws MPIException public final void waitFor() throws MPIException
{ {
MPI.check(); MPI.check();
handle = waitFor(handle); handle = waitFor(handle);
} }
private native long waitFor(long request) throws MPIException; private native long waitFor(long request) throws MPIException;
/** /**
* Returns a status object if the operation identified by the request * Returns a status object if the operation identified by the request
* is complete, or a null reference otherwise. * is complete, or a null reference otherwise.
* <p>Java binding of the MPI operation {@code MPI_TEST}. * <p>Java binding of the MPI operation {@code MPI_TEST}.
@ -161,15 +161,15 @@ private native long waitFor(long request) throws MPIException;
* @return status object * @return status object
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Status testStatus() throws MPIException public final Status testStatus() throws MPIException
{ {
MPI.check(); MPI.check();
return testStatus(handle); return testStatus(handle);
} }
private native Status testStatus(long request) throws MPIException; private native Status testStatus(long request) throws MPIException;
/** /**
* Returns true if the operation identified by the request * Returns true if the operation identified by the request
* is complete, or false otherwise. * is complete, or false otherwise.
* <p>Java binding of the MPI operation {@code MPI_TEST}. * <p>Java binding of the MPI operation {@code MPI_TEST}.
@ -178,15 +178,15 @@ private native Status testStatus(long request) throws MPIException;
* @return true if the operation identified by the request, false otherwise * @return true if the operation identified by the request, false otherwise
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final boolean test() throws MPIException public final boolean test() throws MPIException
{ {
MPI.check(); MPI.check();
return test(handle); return test(handle);
} }
private native boolean test(long handle) throws MPIException; private native boolean test(long handle) throws MPIException;
/** /**
* Blocks until one of the operations associated with the active * Blocks until one of the operations associated with the active
* requests in the array has completed. * requests in the array has completed.
* <p>Java binding of the MPI operation {@code MPI_WAITANY}. * <p>Java binding of the MPI operation {@code MPI_WAITANY}.
@ -198,20 +198,20 @@ private native boolean test(long handle) throws MPIException;
* @return status object * @return status object
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Status waitAnyStatus(Request[] requests) throws MPIException public static Status waitAnyStatus(Request[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
Status status = new Status(); Status status = new Status();
waitAnyStatus(r, status.data); waitAnyStatus(r, status.data);
setHandles(requests, r); setHandles(requests, r);
return status; return status;
} }
private static native void waitAnyStatus(long[] requests, long[] status) private static native void waitAnyStatus(long[] requests, long[] status)
throws MPIException; throws MPIException;
/** /**
* Blocks until one of the operations associated with the active * Blocks until one of the operations associated with the active
* requests in the array has completed. * requests in the array has completed.
* <p>Java binding of the MPI operation {@code MPI_WAITANY}. * <p>Java binding of the MPI operation {@code MPI_WAITANY}.
@ -222,18 +222,18 @@ private static native void waitAnyStatus(long[] requests, long[] status)
* is returned as {@code MPI.UNDEFINED}. * is returned as {@code MPI.UNDEFINED}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static int waitAny(Request[] requests) throws MPIException public static int waitAny(Request[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
int index = waitAny(r); int index = waitAny(r);
setHandles(requests, r); setHandles(requests, r);
return index; return index;
} }
private static native int waitAny(long[] requests) throws MPIException; private static native int waitAny(long[] requests) throws MPIException;
/** /**
* Tests for completion of either one or none of the operations * Tests for completion of either one or none of the operations
* associated with active requests. * associated with active requests.
* <p>Java binding of the MPI operation {@code MPI_TESTANY}. * <p>Java binding of the MPI operation {@code MPI_TESTANY}.
@ -245,18 +245,18 @@ private static native int waitAny(long[] requests) throws MPIException;
* @return status object if one request completed, {@code null} otherwise. * @return status object if one request completed, {@code null} otherwise.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Status testAnyStatus(Request[] requests) throws MPIException public static Status testAnyStatus(Request[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
Status status = testAnyStatus(r); Status status = testAnyStatus(r);
setHandles(requests, r); setHandles(requests, r);
return status; return status;
} }
private static native Status testAnyStatus(long[] requests) throws MPIException; private static native Status testAnyStatus(long[] requests) throws MPIException;
/** /**
* Tests for completion of either one or none of the operations * Tests for completion of either one or none of the operations
* associated with active requests. * associated with active requests.
* <p>Java binding of the MPI operation {@code MPI_TESTANY}. * <p>Java binding of the MPI operation {@code MPI_TESTANY}.
@ -266,18 +266,18 @@ private static native Status testAnyStatus(long[] requests) throws MPIException;
* if none completed. * if none completed.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static int testAny(Request[] requests) throws MPIException public static int testAny(Request[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
int index = testAny(r); int index = testAny(r);
setHandles(requests, r); setHandles(requests, r);
return index; return index;
} }
private static native int testAny(long[] requests) throws MPIException; private static native int testAny(long[] requests) throws MPIException;
/** /**
* Blocks until all of the operations associated with the active * Blocks until all of the operations associated with the active
* requests in the array have completed. * requests in the array have completed.
* <p>Java binding of the MPI operation {@code MPI_WAITALL}. * <p>Java binding of the MPI operation {@code MPI_WAITALL}.
@ -288,36 +288,36 @@ private static native int testAny(long[] requests) throws MPIException;
* @return array of statuses * @return array of statuses
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Status[] waitAllStatus(Request[] requests) throws MPIException public static Status[] waitAllStatus(Request[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
Status[] status = waitAllStatus(r); Status[] status = waitAllStatus(r);
setHandles(requests, r); setHandles(requests, r);
return status; return status;
} }
private static native Status[] waitAllStatus(long[] requests) private static native Status[] waitAllStatus(long[] requests)
throws MPIException; throws MPIException;
/** /**
* Blocks until all of the operations associated with the active * Blocks until all of the operations associated with the active
* requests in the array have completed. * requests in the array have completed.
* <p>Java binding of the MPI operation {@code MPI_WAITALL}. * <p>Java binding of the MPI operation {@code MPI_WAITALL}.
* @param requests array of requests * @param requests array of requests
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static void waitAll(Request[] requests) throws MPIException public static void waitAll(Request[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
waitAll(r); waitAll(r);
setHandles(requests, r); setHandles(requests, r);
} }
private static native void waitAll(long[] requests) throws MPIException; private static native void waitAll(long[] requests) throws MPIException;
/** /**
* Tests for completion of <em>all</em> of the operations associated * Tests for completion of <em>all</em> of the operations associated
* with active requests. * with active requests.
* <p>Java binding of the MPI operation {@code MPI_TESTALL}. * <p>Java binding of the MPI operation {@code MPI_TESTALL}.
@ -328,19 +328,19 @@ private static native void waitAll(long[] requests) throws MPIException;
* {@code null} otherwise. * {@code null} otherwise.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Status[] testAllStatus(Request[] requests) throws MPIException public static Status[] testAllStatus(Request[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
Status[] status = testAllStatus(r); Status[] status = testAllStatus(r);
setHandles(requests, r); setHandles(requests, r);
return status; return status;
} }
private static native Status[] testAllStatus(long[] requests) private static native Status[] testAllStatus(long[] requests)
throws MPIException; throws MPIException;
/** /**
* Tests for completion of <em>all</em> of the operations associated * Tests for completion of <em>all</em> of the operations associated
* with active requests. * with active requests.
* <p>Java binding of the MPI operation {@code MPI_TESTALL}. * <p>Java binding of the MPI operation {@code MPI_TESTALL}.
@ -349,18 +349,18 @@ private static native Status[] testAllStatus(long[] requests)
* {@code false} otherwise. * {@code false} otherwise.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static boolean testAll(Request[] requests) throws MPIException public static boolean testAll(Request[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
boolean completed = testAll(r); boolean completed = testAll(r);
setHandles(requests, r); setHandles(requests, r);
return completed; return completed;
} }
private static native boolean testAll(long[] requests) throws MPIException; private static native boolean testAll(long[] requests) throws MPIException;
/** /**
* Blocks until at least one of the operations associated with the active * Blocks until at least one of the operations associated with the active
* requests in the array has completed. * requests in the array has completed.
* <p>Java binding of the MPI operation {@code MPI_WAITSOME}. * <p>Java binding of the MPI operation {@code MPI_WAITSOME}.
@ -374,19 +374,19 @@ private static native boolean testAll(long[] requests) throws MPIException;
* completed is {@code MPI_UNDEFINED}. * completed is {@code MPI_UNDEFINED}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Status[] waitSomeStatus(Request[] requests) throws MPIException public static Status[] waitSomeStatus(Request[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
Status[] status = waitSomeStatus(r); Status[] status = waitSomeStatus(r);
setHandles(requests, r); setHandles(requests, r);
return status; return status;
} }
private static native Status[] waitSomeStatus(long[] requests) private static native Status[] waitSomeStatus(long[] requests)
throws MPIException; throws MPIException;
/** /**
* Blocks until at least one of the operations associated with the active * Blocks until at least one of the operations associated with the active
* active requests in the array has completed. * active requests in the array has completed.
* <p>Java binding of the MPI operation {@code MPI_WAITSOME}. * <p>Java binding of the MPI operation {@code MPI_WAITSOME}.
@ -398,18 +398,18 @@ private static native Status[] waitSomeStatus(long[] requests)
* if the number of operations completed is {@code MPI_UNDEFINED}. * if the number of operations completed is {@code MPI_UNDEFINED}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static int[] waitSome(Request[] requests) throws MPIException public static int[] waitSome(Request[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
int[] indexes = waitSome(r); int[] indexes = waitSome(r);
setHandles(requests, r); setHandles(requests, r);
return indexes; return indexes;
} }
private static native int[] waitSome(long[] requests) throws MPIException; private static native int[] waitSome(long[] requests) throws MPIException;
/** /**
* Behaves like {@code waitSome}, except that it returns immediately. * Behaves like {@code waitSome}, except that it returns immediately.
* <p>Java binding of the MPI operation {@code MPI_TESTSOME}. * <p>Java binding of the MPI operation {@code MPI_TESTSOME}.
* <p>If no operation has completed, {@code testSome} returns an array of * <p>If no operation has completed, {@code testSome} returns an array of
@ -418,19 +418,19 @@ private static native int[] waitSome(long[] requests) throws MPIException;
* @return array of statuses * @return array of statuses
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static Status[] testSomeStatus(Request[] requests) throws MPIException public static Status[] testSomeStatus(Request[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
Status[] status = testSomeStatus(r); Status[] status = testSomeStatus(r);
setHandles(requests, r); setHandles(requests, r);
return status; return status;
} }
private static native Status[] testSomeStatus(long[] requests) private static native Status[] testSomeStatus(long[] requests)
throws MPIException; throws MPIException;
/** /**
* Behaves like {@code waitSome}, except that it returns immediately. * Behaves like {@code waitSome}, except that it returns immediately.
* <p>Java binding of the MPI operation {@code MPI_TESTSOME}. * <p>Java binding of the MPI operation {@code MPI_TESTSOME}.
* <p>If no operation has completed, {@code testSome} returns an array of * <p>If no operation has completed, {@code testSome} returns an array of
@ -439,31 +439,31 @@ private static native Status[] testSomeStatus(long[] requests)
* @return array of indexes of {@code requests} that completed. * @return array of indexes of {@code requests} that completed.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static int[] testSome(Request[] requests) throws MPIException public static int[] testSome(Request[] requests) throws MPIException
{ {
MPI.check(); MPI.check();
long[] r = getHandles(requests); long[] r = getHandles(requests);
int[] indexes = testSome(r); int[] indexes = testSome(r);
setHandles(requests, r); setHandles(requests, r);
return indexes; return indexes;
} }
private static native int[] testSome(long[] requests) throws MPIException; private static native int[] testSome(long[] requests) throws MPIException;
protected static long[] getHandles(Request[] r) protected static long[] getHandles(Request[] r)
{ {
long[] h = new long[r.length]; long[] h = new long[r.length];
for(int i = 0; i < r.length; i++) for(int i = 0; i < r.length; i++)
h[i] = r[i].handle; h[i] = r[i].handle;
return h; return h;
} }
protected static void setHandles(Request[] r, long[] h) protected static void setHandles(Request[] r, long[] h)
{ {
for(int i = 0; i < r.length; i++) for(int i = 0; i < r.length; i++)
r[i].handle = h[i]; r[i].handle = h[i];
} }
} // Request } // Request

Просмотреть файл

@ -9,31 +9,33 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : ShiftParms.java * File : ShiftParms.java
* Author : Xinying Li * Author : Xinying Li
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -50,31 +52,31 @@ package mpi;
*/ */
public final class ShiftParms public final class ShiftParms
{ {
private final int rankSource; private final int rankSource;
private final int rankDest; private final int rankDest;
protected ShiftParms(int rankSource, int rankDest) protected ShiftParms(int rankSource, int rankDest)
{ {
this.rankSource = rankSource; this.rankSource = rankSource;
this.rankDest = rankDest; this.rankDest = rankDest;
} }
/** /**
* Gets the source rank. * Gets the source rank.
* @return source rank * @return source rank
*/ */
public int getRankSource() public int getRankSource()
{ {
return rankSource; return rankSource;
} }
/** /**
* Gets the destination rank. * Gets the destination rank.
* @return destination rank * @return destination rank
*/ */
public int getRankDest() public int getRankDest()
{ {
return rankDest; return rankDest;
} }
} // ShiftParms } // ShiftParms

Просмотреть файл

@ -25,17 +25,17 @@ package mpi;
*/ */
public final class ShortInt extends Struct public final class ShortInt extends Struct
{ {
private final int sSize, iOff, iSize; private final int sSize, iOff, iSize;
/** /**
* The struct object will be created only in MPI class. * The struct object will be created only in MPI class.
* @param shortSize short size * @param shortSize short size
* @param intOff int offset * @param intOff int offset
* @param intSize int size * @param intSize int size
* @see MPI#shortInt * @see MPI#shortInt
*/ */
protected ShortInt(int shortSize, int intOff, int intSize) protected ShortInt(int shortSize, int intOff, int intSize)
{ {
sSize = shortSize; sSize = shortSize;
iSize = intSize; iSize = intSize;
int sOff; int sOff;
@ -59,22 +59,22 @@ protected ShortInt(int shortSize, int intOff, int intSize)
} }
assert(intOff == iOff); assert(intOff == iOff);
} }
/** /**
* Creates a Data object. * Creates a Data object.
* @return new Data object. * @return new Data object.
*/ */
@Override protected Data newData() @Override protected Data newData()
{ {
return new Data(); return new Data();
} }
/** /**
* Class for reading/writing data in a struct stored in a byte buffer. * Class for reading/writing data in a struct stored in a byte buffer.
*/ */
public final class Data extends Struct.Data public final class Data extends Struct.Data
{ {
/** /**
* Gets the short value. * Gets the short value.
* @return short value * @return short value
@ -132,6 +132,6 @@ public final class Data extends Struct.Data
default: throw new AssertionError(); default: throw new AssertionError();
} }
} }
} // Data } // Data
} // ShortInt } // ShortInt

Просмотреть файл

@ -16,26 +16,26 @@
* Additional copyrights may follow * Additional copyrights may follow
* *
* $HEADER$ * $HEADER$
*/ *
/* *
* This file is almost a complete re-write for Open MPI compared to the * This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below. * original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information. * See <path to ompi/mpi/java/README> for more information.
*/ *
/* *
Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
You may obtain a copy of the License at * You may obtain a copy of the License at
*
http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
*
Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
limitations under the License. * limitations under the License.
*/ *
/* *
* File : Status.java * File : Status.java
* Author : Sang Lim, Sung-Hoon Ko, Xinying Li, Bryan Carpenter * Author : Sang Lim, Sung-Hoon Ko, Xinying Li, Bryan Carpenter
* Created : Thu Apr 9 12:22:15 1998 * Created : Thu Apr 9 12:22:15 1998
@ -52,32 +52,32 @@ package mpi;
*/ */
public final class Status public final class Status
{ {
protected final long[] data; protected final long[] data;
static static
{ {
init(); init();
} }
private static native void init(); private static native void init();
/** /**
* Status objects must be created only by the MPI methods. * Status objects must be created only by the MPI methods.
*/ */
protected Status() protected Status()
{ {
data = new long[6]; data = new long[6];
} }
/** /**
* Returns the number of received entries. * Returns the number of received entries.
* <p>Java binding of the MPI operation {@code MPI_GET_COUNT}. * <p>Java binding of the MPI operation {@code MPI_GET_COUNT}.
* @param datatype datatype of each item in receive buffer * @param datatype datatype of each item in receive buffer
* @return number of received entries * @return number of received entries
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int getCount(Datatype datatype) throws MPIException public int getCount(Datatype datatype) throws MPIException
{ {
MPI.check(); MPI.check();
int i = 0; int i = 0;
int source = (int)data[i++]; int source = (int)data[i++];
@ -86,20 +86,20 @@ public int getCount(Datatype datatype) throws MPIException
int cancelled = (int)data[i++]; int cancelled = (int)data[i++];
long ucount = data[i++]; long ucount = data[i++];
return getCount(source, tag, error, cancelled, ucount, datatype.handle); return getCount(source, tag, error, cancelled, ucount, datatype.handle);
} }
private native int getCount( private native int getCount(
int source, int tag, int error, int source, int tag, int error,
int cancelled, long ucount, long datatype) throws MPIException; int cancelled, long ucount, long datatype) throws MPIException;
/** /**
* Tests if the communication was cancelled. * Tests if the communication was cancelled.
* <p>Java binding of the MPI operation {@code MPI_TEST_CANCELLED}. * <p>Java binding of the MPI operation {@code MPI_TEST_CANCELLED}.
* @return true if the operation was succesfully cancelled, false otherwise * @return true if the operation was succesfully cancelled, false otherwise
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public boolean isCancelled() throws MPIException public boolean isCancelled() throws MPIException
{ {
MPI.check(); MPI.check();
int i = 0; int i = 0;
int source = (int)data[i++]; int source = (int)data[i++];
@ -108,21 +108,21 @@ public boolean isCancelled() throws MPIException
int cancelled = (int)data[i++]; int cancelled = (int)data[i++];
long ucount = data[i++]; long ucount = data[i++];
return isCancelled(source, tag, error, cancelled, ucount); return isCancelled(source, tag, error, cancelled, ucount);
} }
private native boolean isCancelled( private native boolean isCancelled(
int source, int tag, int error, int cancelled, long ucount) int source, int tag, int error, int cancelled, long ucount)
throws MPIException; throws MPIException;
/** /**
* Retrieves the number of basic elements from status. * Retrieves the number of basic elements from status.
* <p>Java binding of the MPI operation {@code MPI_GET_ELEMENTS}. * <p>Java binding of the MPI operation {@code MPI_GET_ELEMENTS}.
* @param datatype datatype used by receive operation * @param datatype datatype used by receive operation
* @return number of received basic elements * @return number of received basic elements
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public int getElements(Datatype datatype) throws MPIException public int getElements(Datatype datatype) throws MPIException
{ {
MPI.check(); MPI.check();
int i = 0; int i = 0;
int source = (int)data[i++]; int source = (int)data[i++];
@ -131,48 +131,48 @@ public int getElements(Datatype datatype) throws MPIException
int cancelled = (int)data[i++]; int cancelled = (int)data[i++];
long ucount = data[i++]; long ucount = data[i++];
return getElements(source, tag, error, cancelled, ucount, datatype.handle); return getElements(source, tag, error, cancelled, ucount, datatype.handle);
} }
private native int getElements( private native int getElements(
int source, int tag, int error, int source, int tag, int error,
int cancelled, long ucount, long datatype) throws MPIException; int cancelled, long ucount, long datatype) throws MPIException;
/** /**
* Returns the "source" of message. * Returns the "source" of message.
* <p>Java binding of the MPI value {@code MPI_SOURCE}. * <p>Java binding of the MPI value {@code MPI_SOURCE}.
* @return source of message * @return source of message
*/ */
public int getSource() public int getSource()
{ {
return (int)data[0]; return (int)data[0];
} }
/** /**
* Returns the "tag" of message. * Returns the "tag" of message.
* <p>Java binding of the MPI value {@code MPI_TAG}. * <p>Java binding of the MPI value {@code MPI_TAG}.
* @return tag of message * @return tag of message
*/ */
public int getTag() public int getTag()
{ {
return (int)data[1]; return (int)data[1];
} }
/** /**
* Returns the {@code MPI_ERROR} of message. * Returns the {@code MPI_ERROR} of message.
* @return error of message. * @return error of message.
*/ */
public int getError() public int getError()
{ {
return (int)data[2]; return (int)data[2];
} }
/** /**
* Returns the index of message. * Returns the index of message.
* @return index of message. * @return index of message.
*/ */
public int getIndex() public int getIndex()
{ {
return (int)data[5]; return (int)data[5];
} }
} // Status } // Status

Просмотреть файл

@ -28,21 +28,21 @@ import java.util.*;
*/ */
public abstract class Struct public abstract class Struct
{ {
private int extent; private int extent;
private ArrayList<Field> fields = new ArrayList<Field>(); private ArrayList<Field> fields = new ArrayList<Field>();
private Datatype datatype, types[]; private Datatype datatype, types[];
private int offsets[], lengths[]; private int offsets[], lengths[];
private static final String typeMismatch = "Type mismatch"; private static final String typeMismatch = "Type mismatch";
private void commit() throws MPIException private void commit() throws MPIException
{ {
if(datatype == null) if(datatype == null)
createStruct(); createStruct();
} }
private void createStruct() throws MPIException private void createStruct() throws MPIException
{ {
int count = fields.size(); int count = fields.size();
types = new Datatype[count]; types = new Datatype[count];
offsets = new int[count]; offsets = new int[count];
@ -61,60 +61,60 @@ private void createStruct() throws MPIException
datatype = Datatype.createStruct(lengths, offsets, types); datatype = Datatype.createStruct(lengths, offsets, types);
datatype.commit(); datatype.commit();
extent = datatype.getExtent(); extent = datatype.getExtent();
} }
/** /**
* Returns the extent of the struct data type. * Returns the extent of the struct data type.
* @return Extent of the struct data type. * @return Extent of the struct data type.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final int getExtent() throws MPIException public final int getExtent() throws MPIException
{ {
commit(); commit();
return extent; return extent;
} }
/** /**
* Returns the data type of the struct. * Returns the data type of the struct.
* @return The data type of the struct. * @return The data type of the struct.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Datatype getType() throws MPIException public final Datatype getType() throws MPIException
{ {
commit(); commit();
return datatype; return datatype;
} }
/** /**
* Creates a Data object. * Creates a Data object.
* @return New Data object. * @return New Data object.
*/ */
protected abstract Data newData(); protected abstract Data newData();
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private <T extends Data> T newData(ByteBuffer buffer, int offset) private <T extends Data> T newData(ByteBuffer buffer, int offset)
{ {
Data d = newData(); Data d = newData();
d.buffer = buffer; d.buffer = buffer;
d.offset = offset; d.offset = offset;
return (T)d; return (T)d;
} }
@SuppressWarnings("javadoc") @SuppressWarnings("javadoc")
/** /**
* Gets a Data object in order to access to the buffer. * Gets a Data object in order to access to the buffer.
* @param buffer the Data object will read/write on this buffer. * @param buffer the Data object will read/write on this buffer.
* @return Data object * @return Data object
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final <T extends Data> T getData(ByteBuffer buffer) throws MPIException public final <T extends Data> T getData(ByteBuffer buffer) throws MPIException
{ {
commit(); commit();
return newData(buffer, 0); return newData(buffer, 0);
} }
@SuppressWarnings("javadoc") @SuppressWarnings("javadoc")
/** /**
* Gets a Data object in order to access to the struct at the * Gets a Data object in order to access to the struct at the
* specified position of a struct array stored in a Buffer. * specified position of a struct array stored in a Buffer.
* @param buffer The Data object will read/write on this buffer. * @param buffer The Data object will read/write on this buffer.
@ -122,29 +122,29 @@ public final <T extends Data> T getData(ByteBuffer buffer) throws MPIException
* @return Data object. * @return Data object.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final <T extends Data> T getData(ByteBuffer buffer, int index) public final <T extends Data> T getData(ByteBuffer buffer, int index)
throws MPIException throws MPIException
{ {
commit(); commit();
return newData(buffer, index * extent); return newData(buffer, index * extent);
} }
@SuppressWarnings("javadoc") @SuppressWarnings("javadoc")
/** /**
* Gets a Data object in order to access to the byte array. * Gets a Data object in order to access to the byte array.
* @param array The Data object will read/write on this byte array. * @param array The Data object will read/write on this byte array.
* @return Data object. * @return Data object.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final <T extends Data> T getData(byte[] array) throws MPIException public final <T extends Data> T getData(byte[] array) throws MPIException
{ {
ByteBuffer buffer = ByteBuffer.wrap(array); ByteBuffer buffer = ByteBuffer.wrap(array);
buffer.order(ByteOrder.nativeOrder()); buffer.order(ByteOrder.nativeOrder());
return getData(buffer); return getData(buffer);
} }
@SuppressWarnings("javadoc") @SuppressWarnings("javadoc")
/** /**
* Gets a Data object in order to access to the struct at the * Gets a Data object in order to access to the struct at the
* specified position of a struct array stored in a byte array. * specified position of a struct array stored in a byte array.
* @param array The Data object will read/write on this byte array. * @param array The Data object will read/write on this byte array.
@ -152,16 +152,16 @@ public final <T extends Data> T getData(byte[] array) throws MPIException
* @return Data object. * @return Data object.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final <T extends Data> T getData(byte[] array, int index) public final <T extends Data> T getData(byte[] array, int index)
throws MPIException throws MPIException
{ {
ByteBuffer buffer = ByteBuffer.wrap(array); ByteBuffer buffer = ByteBuffer.wrap(array);
buffer.order(ByteOrder.nativeOrder()); buffer.order(ByteOrder.nativeOrder());
return getData(buffer, index); return getData(buffer, index);
} }
private int addField(Object type, int typeExtent, int length) private int addField(Object type, int typeExtent, int length)
{ {
if(datatype != null) if(datatype != null)
throw new AssertionError("The struct data type was committed."); throw new AssertionError("The struct data type was committed.");
@ -169,16 +169,16 @@ private int addField(Object type, int typeExtent, int length)
extent += typeExtent * length; extent += typeExtent * length;
fields.add(new Field(type, offset, length)); fields.add(new Field(type, offset, length));
return offset; return offset;
} }
/** /**
* Sets the offset of the next field. * Sets the offset of the next field.
* <p>The offset must be greater or equal to the accumulated extent. * <p>The offset must be greater or equal to the accumulated extent.
* @param offset offset of the next field * @param offset offset of the next field
* @return this object in order to allow adding fields in a chained expression * @return this object in order to allow adding fields in a chained expression
*/ */
public final Struct setOffset(int offset) public final Struct setOffset(int offset)
{ {
if(datatype != null) if(datatype != null)
throw new AssertionError("The struct data type was committed."); throw new AssertionError("The struct data type was committed.");
@ -190,196 +190,196 @@ public final Struct setOffset(int offset)
extent = offset; extent = offset;
return this; return this;
} }
/** /**
* Adds a byte field to this struct. * Adds a byte field to this struct.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addByte() public final int addByte()
{ {
return addByte(1); return addByte(1);
} }
/** /**
* Adds a byte array to this struct. * Adds a byte array to this struct.
* @param length Length of the array. * @param length Length of the array.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addByte(int length) public final int addByte(int length)
{ {
return addField(MPI.BYTE, 1, length); return addField(MPI.BYTE, 1, length);
} }
/** /**
* Adds a char field to this struct. * Adds a char field to this struct.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addChar() public final int addChar()
{ {
return addChar(1); return addChar(1);
} }
/** /**
* Adds a char array to this struct. * Adds a char array to this struct.
* @param length Length of the array. * @param length Length of the array.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addChar(int length) public final int addChar(int length)
{ {
return addField(MPI.CHAR, 2, length); return addField(MPI.CHAR, 2, length);
} }
/** /**
* Adds a short field to this struct. * Adds a short field to this struct.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addShort() public final int addShort()
{ {
return addShort(1); return addShort(1);
} }
/** /**
* Adds a short array to this struct. * Adds a short array to this struct.
* @param length Length of the array. * @param length Length of the array.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addShort(int length) public final int addShort(int length)
{ {
return addField(MPI.SHORT, 2, length); return addField(MPI.SHORT, 2, length);
} }
/** /**
* Adds an int field to this struct. * Adds an int field to this struct.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addInt() public final int addInt()
{ {
return addInt(1); return addInt(1);
} }
/** /**
* Adds an int array to this struct. * Adds an int array to this struct.
* @param length Length of the array. * @param length Length of the array.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addInt(int length) public final int addInt(int length)
{ {
return addField(MPI.INT, 4, length); return addField(MPI.INT, 4, length);
} }
/** /**
* Adds a long field to this struct. * Adds a long field to this struct.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addLong() public final int addLong()
{ {
return addLong(1); return addLong(1);
} }
/** /**
* Adds a long array to this struct. * Adds a long array to this struct.
* @param length Length of the array. * @param length Length of the array.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addLong(int length) public final int addLong(int length)
{ {
return addField(MPI.LONG, 8, length); return addField(MPI.LONG, 8, length);
} }
/** /**
* Adds a float field to this struct. * Adds a float field to this struct.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addFloat() public final int addFloat()
{ {
return addFloat(1); return addFloat(1);
} }
/** /**
* Adds a float array to this struct. * Adds a float array to this struct.
* @param length Length of the array. * @param length Length of the array.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addFloat(int length) public final int addFloat(int length)
{ {
return addField(MPI.FLOAT, 4, length); return addField(MPI.FLOAT, 4, length);
} }
/** /**
* Adds a double field to this struct. * Adds a double field to this struct.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addDouble() public final int addDouble()
{ {
return addDouble(1); return addDouble(1);
} }
/** /**
* Adds a double array to this struct. * Adds a double array to this struct.
* @param length Length of the array. * @param length Length of the array.
* @return Offset of the new field. * @return Offset of the new field.
*/ */
public final int addDouble(int length) public final int addDouble(int length)
{ {
return addField(MPI.DOUBLE, 8, length); return addField(MPI.DOUBLE, 8, length);
} }
/** /**
* Adds a struct field to this struct. * Adds a struct field to this struct.
* @param struct Type of the field. * @param struct Type of the field.
* @return Offset of the new field. * @return Offset of the new field.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final int addStruct(Struct struct) throws MPIException public final int addStruct(Struct struct) throws MPIException
{ {
return addStruct(struct, 1); return addStruct(struct, 1);
} }
/** /**
* Adds an array of structs to this struct. * Adds an array of structs to this struct.
* @param struct Type of the array. * @param struct Type of the array.
* @param length Length of the array. * @param length Length of the array.
* @return Offset of the new field. * @return Offset of the new field.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final int addStruct(Struct struct, int length) throws MPIException public final int addStruct(Struct struct, int length) throws MPIException
{ {
struct.commit(); struct.commit();
return addField(struct, struct.extent, length); return addField(struct, struct.extent, length);
} }
/** /**
* Adds a field of the specified data type. * Adds a field of the specified data type.
* @param type Data type. * @param type Data type.
* @return Offset of the new field. * @return Offset of the new field.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final int addData(Datatype type) throws MPIException public final int addData(Datatype type) throws MPIException
{ {
return addData(type, 1); return addData(type, 1);
} }
/** /**
* Adds an array of the specified data type. * Adds an array of the specified data type.
* @param type Data type. * @param type Data type.
* @param length Length of the array. * @param length Length of the array.
* @return Offset of the new field. * @return Offset of the new field.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final int addData(Datatype type, int length) throws MPIException public final int addData(Datatype type, int length) throws MPIException
{ {
return addField(type, type.getExtent() * type.baseSize, length); return addField(type, type.getExtent() * type.baseSize, length);
} }
private boolean validType(int fieldOffset, int index, Datatype type) private boolean validType(int fieldOffset, int index, Datatype type)
{ {
int i = Arrays.binarySearch(offsets, fieldOffset); int i = Arrays.binarySearch(offsets, fieldOffset);
return index >= 0 && index < lengths[i] && type == types[i]; return index >= 0 && index < lengths[i] && type == types[i];
} }
private static class Field private static class Field
{ {
private Object type; private Object type;
private int offset, length; private int offset, length;
@ -390,13 +390,13 @@ private static class Field
this.length = length; this.length = length;
} }
} // Field } // Field
/** /**
* Base class for reading/writing data in a struct stored in a byte buffer. * Base class for reading/writing data in a struct stored in a byte buffer.
*/ */
public abstract class Data public abstract class Data
{ {
private ByteBuffer buffer; private ByteBuffer buffer;
private int offset; private int offset;
@ -797,6 +797,6 @@ public abstract class Data
return position == 0 ? buffer : MPI.slice(buffer, position); return position == 0 ? buffer : MPI.slice(buffer, position);
} }
} // Data } // Data
} // Struct } // Struct

Просмотреть файл

@ -34,7 +34,7 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
/* /*
* File : User_function.java * File : User_function.java
* Author : Xinying Li * Author : Xinying Li
@ -54,7 +54,7 @@ import java.nio.*;
*/ */
public abstract class UserFunction public abstract class UserFunction
{ {
/** /**
* User-defined function for a new {@code Op}. * User-defined function for a new {@code Op}.
* @param inVec array of values to combine with {@code inoutvec} elements * @param inVec array of values to combine with {@code inoutvec} elements
* @param inOutVec in-out array of accumulator locations * @param inOutVec in-out array of accumulator locations
@ -62,13 +62,13 @@ public abstract class UserFunction
* @param datatype type of each item * @param datatype type of each item
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void call(Object inVec, Object inOutVec, int count, Datatype datatype) public void call(Object inVec, Object inOutVec, int count, Datatype datatype)
throws MPIException throws MPIException
{ {
throw new UnsupportedOperationException("Not supported yet."); throw new UnsupportedOperationException("Not supported yet.");
} }
/** /**
* User-defined function for a new {@code Op}. * User-defined function for a new {@code Op}.
* @param in direct byte buffer to combine with {@code inOut} buffer * @param in direct byte buffer to combine with {@code inOut} buffer
* @param inOut in-out direct byte buffer of accumulator locations * @param inOut in-out direct byte buffer of accumulator locations
@ -76,9 +76,9 @@ public void call(Object inVec, Object inOutVec, int count, Datatype datatype)
* @param datatype type of each item * @param datatype type of each item
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void call(ByteBuffer in, ByteBuffer inOut, int count, Datatype datatype) public void call(ByteBuffer in, ByteBuffer inOut, int count, Datatype datatype)
throws MPIException throws MPIException
{ {
switch(datatype.baseType) switch(datatype.baseType)
{ {
case Datatype.BYTE: case Datatype.BYTE:
@ -108,11 +108,11 @@ public void call(ByteBuffer in, ByteBuffer inOut, int count, Datatype datatype)
default: default:
throw new IllegalArgumentException("Unsupported datatype."); throw new IllegalArgumentException("Unsupported datatype.");
} }
} }
private void vCall(ByteBuffer in, ByteBuffer inOut, private void vCall(ByteBuffer in, ByteBuffer inOut,
int count, Datatype datatype) throws MPIException int count, Datatype datatype) throws MPIException
{ {
int extent = datatype.getExtent(); int extent = datatype.getExtent();
byte[] inVec = new byte[count * extent], byte[] inVec = new byte[count * extent],
inOutVec = new byte[count * extent]; inOutVec = new byte[count * extent];
@ -122,11 +122,11 @@ private void vCall(ByteBuffer in, ByteBuffer inOut,
call(inVec, inOutVec, count, datatype); call(inVec, inOutVec, count, datatype);
inOut.clear(); inOut.clear();
inOut.put(inOutVec); inOut.put(inOutVec);
} }
private void vCall(CharBuffer inBuf, CharBuffer inOutBuf, private void vCall(CharBuffer inBuf, CharBuffer inOutBuf,
int count, Datatype datatype) throws MPIException int count, Datatype datatype) throws MPIException
{ {
int extent = datatype.getExtent(); int extent = datatype.getExtent();
char[] inVec = new char[count * extent], char[] inVec = new char[count * extent],
inOutVec = new char[count * extent]; inOutVec = new char[count * extent];
@ -136,11 +136,11 @@ private void vCall(CharBuffer inBuf, CharBuffer inOutBuf,
call(inVec, inOutVec, count, datatype); call(inVec, inOutVec, count, datatype);
inOutBuf.clear(); inOutBuf.clear();
inOutBuf.put(inOutVec); inOutBuf.put(inOutVec);
} }
private void vCall(ShortBuffer inBuf, ShortBuffer inOutBuf, private void vCall(ShortBuffer inBuf, ShortBuffer inOutBuf,
int count, Datatype datatype) throws MPIException int count, Datatype datatype) throws MPIException
{ {
int extent = datatype.getExtent(); int extent = datatype.getExtent();
short[] inVec = new short[count * extent], short[] inVec = new short[count * extent],
inOutVec = new short[count * extent]; inOutVec = new short[count * extent];
@ -150,11 +150,11 @@ private void vCall(ShortBuffer inBuf, ShortBuffer inOutBuf,
call(inVec, inOutVec, count, datatype); call(inVec, inOutVec, count, datatype);
inOutBuf.clear(); inOutBuf.clear();
inOutBuf.put(inOutVec); inOutBuf.put(inOutVec);
} }
private void vCall(IntBuffer inBuf, IntBuffer inOutBuf, private void vCall(IntBuffer inBuf, IntBuffer inOutBuf,
int count, Datatype datatype) throws MPIException int count, Datatype datatype) throws MPIException
{ {
int extent = datatype.getExtent(); int extent = datatype.getExtent();
int[] inVec = new int[count * extent], int[] inVec = new int[count * extent],
inOutVec = new int[count * extent]; inOutVec = new int[count * extent];
@ -164,11 +164,11 @@ private void vCall(IntBuffer inBuf, IntBuffer inOutBuf,
call(inVec, inOutVec, count, datatype); call(inVec, inOutVec, count, datatype);
inOutBuf.clear(); inOutBuf.clear();
inOutBuf.put(inOutVec); inOutBuf.put(inOutVec);
} }
private void vCall(LongBuffer inBuf, LongBuffer inOutBuf, private void vCall(LongBuffer inBuf, LongBuffer inOutBuf,
int count, Datatype datatype) throws MPIException int count, Datatype datatype) throws MPIException
{ {
int extent = datatype.getExtent(); int extent = datatype.getExtent();
long[] inVec = new long[count * extent], long[] inVec = new long[count * extent],
inOutVec = new long[count * extent]; inOutVec = new long[count * extent];
@ -178,11 +178,11 @@ private void vCall(LongBuffer inBuf, LongBuffer inOutBuf,
call(inVec, inOutVec, count, datatype); call(inVec, inOutVec, count, datatype);
inOutBuf.clear(); inOutBuf.clear();
inOutBuf.put(inOutVec); inOutBuf.put(inOutVec);
} }
private void vCall(FloatBuffer inBuf, FloatBuffer inOutBuf, private void vCall(FloatBuffer inBuf, FloatBuffer inOutBuf,
int count, Datatype datatype) throws MPIException int count, Datatype datatype) throws MPIException
{ {
int extent = datatype.getExtent(); int extent = datatype.getExtent();
float[] inVec = new float[count * extent], float[] inVec = new float[count * extent],
inOutVec = new float[count * extent]; inOutVec = new float[count * extent];
@ -192,11 +192,11 @@ private void vCall(FloatBuffer inBuf, FloatBuffer inOutBuf,
call(inVec, inOutVec, count, datatype); call(inVec, inOutVec, count, datatype);
inOutBuf.clear(); inOutBuf.clear();
inOutBuf.put(inOutVec); inOutBuf.put(inOutVec);
} }
private void vCall(DoubleBuffer inBuf, DoubleBuffer inOutBuf, private void vCall(DoubleBuffer inBuf, DoubleBuffer inOutBuf,
int count, Datatype datatype) throws MPIException int count, Datatype datatype) throws MPIException
{ {
int extent = datatype.getExtent(); int extent = datatype.getExtent();
double[] inVec = new double[count * extent], double[] inVec = new double[count * extent],
inOutVec = new double[count * extent]; inOutVec = new double[count * extent];
@ -206,6 +206,6 @@ private void vCall(DoubleBuffer inBuf, DoubleBuffer inOutBuf,
call(inVec, inOutVec, count, datatype); call(inVec, inOutVec, count, datatype);
inOutBuf.clear(); inOutBuf.clear();
inOutBuf.put(inOutVec); inOutBuf.put(inOutVec);
} }
} // UserFunction } // UserFunction

Просмотреть файл

@ -29,12 +29,12 @@ import java.nio.*;
*/ */
public final class Win implements Freeable public final class Win implements Freeable
{ {
private long handle; private long handle;
public static final int WIN_NULL = 0; public static final int WIN_NULL = 0;
public static final int FLAVOR_PRIVATE = 0; public static final int FLAVOR_PRIVATE = 0;
public static final int FLAVOR_SHARED = 1; public static final int FLAVOR_SHARED = 1;
/** /**
* Java binding of {@code MPI_WIN_CREATE}. * Java binding of {@code MPI_WIN_CREATE}.
* @param base initial address of window * @param base initial address of window
* @param size size of window (buffer elements) * @param size size of window (buffer elements)
@ -43,9 +43,9 @@ public static final int FLAVOR_SHARED = 1;
* @param comm communicator * @param comm communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Win(Buffer base, int size, int dispUnit, Info info, Comm comm) public Win(Buffer base, int size, int dispUnit, Info info, Comm comm)
throws MPIException throws MPIException
{ {
if(!base.isDirect()) if(!base.isDirect())
throw new IllegalArgumentException("The buffer must be direct."); throw new IllegalArgumentException("The buffer must be direct.");
@ -66,13 +66,13 @@ public Win(Buffer base, int size, int dispUnit, Info info, Comm comm)
dispBytes = dispUnit * baseSize; dispBytes = dispUnit * baseSize;
handle = createWin(base, sizeBytes, dispBytes, info.handle, comm.handle); handle = createWin(base, sizeBytes, dispBytes, info.handle, comm.handle);
} }
private native long createWin( private native long createWin(
Buffer base, int size, int dispUnit, long info, long comm) Buffer base, int size, int dispUnit, long info, long comm)
throws MPIException; throws MPIException;
/** /**
* Java binding of {@code MPI_WIN_ALLOCATE} and {@code MPI_WIN_ALLOCATE_SHARED}. * Java binding of {@code MPI_WIN_ALLOCATE} and {@code MPI_WIN_ALLOCATE_SHARED}.
* @param size size of window (buffer elements) * @param size size of window (buffer elements)
* @param dispUnit local unit size for displacements (buffer elements) * @param dispUnit local unit size for displacements (buffer elements)
@ -82,9 +82,9 @@ private native long createWin(
* @param flavor FLAVOR_PRIVATE or FLAVOR_SHARED * @param flavor FLAVOR_PRIVATE or FLAVOR_SHARED
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Win(int size, int dispUnit, Info info, Comm comm, Buffer base, int flavor) public Win(int size, int dispUnit, Info info, Comm comm, Buffer base, int flavor)
throws MPIException throws MPIException
{ {
if(!base.isDirect()) if(!base.isDirect())
throw new IllegalArgumentException("The buffer must be direct."); throw new IllegalArgumentException("The buffer must be direct.");
@ -109,34 +109,34 @@ public Win(int size, int dispUnit, Info info, Comm comm, Buffer base, int flavor
} else if(flavor == 1) { } else if(flavor == 1) {
handle = allocateSharedWin(sizeBytes, dispBytes, info.handle, comm.handle, base); handle = allocateSharedWin(sizeBytes, dispBytes, info.handle, comm.handle, base);
} }
} }
private native long allocateWin( private native long allocateWin(
int size, int dispUnit, long info, long comm, Buffer base) int size, int dispUnit, long info, long comm, Buffer base)
throws MPIException; throws MPIException;
private native long allocateSharedWin( private native long allocateSharedWin(
int size, int dispUnit, long info, long comm, Buffer base) int size, int dispUnit, long info, long comm, Buffer base)
throws MPIException; throws MPIException;
/** /**
* Java binding of {@code MPI_WIN_CREATE_DYNAMIC}. * Java binding of {@code MPI_WIN_CREATE_DYNAMIC}.
* @param info info object * @param info info object
* @param comm communicator * @param comm communicator
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Win(Info info, Comm comm) public Win(Info info, Comm comm)
throws MPIException throws MPIException
{ {
handle = createDynamicWin(info.handle, comm.handle); handle = createDynamicWin(info.handle, comm.handle);
} }
private native long createDynamicWin( private native long createDynamicWin(
long info, long comm) long info, long comm)
throws MPIException; throws MPIException;
private int getBaseType(Datatype orgType, Datatype targetType) private int getBaseType(Datatype orgType, Datatype targetType)
{ {
int baseType = orgType.baseType; int baseType = orgType.baseType;
if(baseType != targetType.baseType) if(baseType != targetType.baseType)
@ -147,16 +147,16 @@ private int getBaseType(Datatype orgType, Datatype targetType)
} }
return baseType; return baseType;
} }
/** /**
* Java binding of {@code MPI_WIN_ATTACH}. * Java binding of {@code MPI_WIN_ATTACH}.
* @param base initial address of window * @param base initial address of window
* @param size size of window (buffer elements) * @param size size of window (buffer elements)
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void attach(Buffer base, int size) throws MPIException public void attach(Buffer base, int size) throws MPIException
{ {
MPI.check(); MPI.check();
if(!base.isDirect()) if(!base.isDirect())
throw new IllegalArgumentException("The buffer must be direct."); throw new IllegalArgumentException("The buffer must be direct.");
@ -177,40 +177,40 @@ public void attach(Buffer base, int size) throws MPIException
int sizeBytes = size * baseSize; int sizeBytes = size * baseSize;
attach(handle, base, sizeBytes); attach(handle, base, sizeBytes);
} }
private native void attach(long win, Buffer base, int size) throws MPIException; private native void attach(long win, Buffer base, int size) throws MPIException;
/** /**
* Java binding of {@code MPI_WIN_DETACH}. * Java binding of {@code MPI_WIN_DETACH}.
* @param base initial address of window * @param base initial address of window
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void detach(Buffer base) throws MPIException public void detach(Buffer base) throws MPIException
{ {
MPI.check(); MPI.check();
if(!base.isDirect()) if(!base.isDirect())
throw new IllegalArgumentException("The buffer must be direct."); throw new IllegalArgumentException("The buffer must be direct.");
detach(handle, base); detach(handle, base);
} }
private native void detach(long win, Buffer base) throws MPIException; private native void detach(long win, Buffer base) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_GET_GROUP}. * Java binding of the MPI operation {@code MPI_GET_GROUP}.
* @return group of processes which share access to the window * @return group of processes which share access to the window
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Group getGroup() throws MPIException public Group getGroup() throws MPIException
{ {
MPI.check(); MPI.check();
return new Group(getGroup(handle)); return new Group(getGroup(handle));
} }
private native long getGroup(long win) throws MPIException; private native long getGroup(long win) throws MPIException;
/** /**
* Java binding of {@code MPI_PUT}. * Java binding of {@code MPI_PUT}.
* @param origin origin buffer * @param origin origin buffer
* @param orgCount number of entries in origin buffer * @param orgCount number of entries in origin buffer
@ -221,11 +221,11 @@ private native long getGroup(long win) throws MPIException;
* @param targetType datatype of each entry in target buffer * @param targetType datatype of each entry in target buffer
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void put(Buffer origin, int orgCount, Datatype orgType, public void put(Buffer origin, int orgCount, Datatype orgType,
int targetRank, int targetDisp, int targetCount, int targetRank, int targetDisp, int targetCount,
Datatype targetType) Datatype targetType)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
if(!origin.isDirect()) if(!origin.isDirect())
@ -234,14 +234,14 @@ public void put(Buffer origin, int orgCount, Datatype orgType,
put(handle, origin, orgCount, orgType.handle, put(handle, origin, orgCount, orgType.handle,
targetRank, targetDisp, targetCount, targetType.handle, targetRank, targetDisp, targetCount, targetType.handle,
getBaseType(orgType, targetType)); getBaseType(orgType, targetType));
} }
private native void put( private native void put(
long win, Buffer origin, int orgCount, long orgType, long win, Buffer origin, int orgCount, long orgType,
int targetRank, int targetDisp, int targetCount, long targetType, int targetRank, int targetDisp, int targetCount, long targetType,
int baseType) throws MPIException; int baseType) throws MPIException;
/** /**
* Java binding of {@code MPI_GET}. * Java binding of {@code MPI_GET}.
* @param origin origin buffer * @param origin origin buffer
* @param orgCount number of entries in origin buffer * @param orgCount number of entries in origin buffer
@ -252,11 +252,11 @@ private native void put(
* @param targetType datatype of each entry in target buffer * @param targetType datatype of each entry in target buffer
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void get(Buffer origin, int orgCount, Datatype orgType, public void get(Buffer origin, int orgCount, Datatype orgType,
int targetRank, int targetDisp, int targetCount, int targetRank, int targetDisp, int targetCount,
Datatype targetType) Datatype targetType)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
if(!origin.isDirect()) if(!origin.isDirect())
@ -265,14 +265,14 @@ public void get(Buffer origin, int orgCount, Datatype orgType,
get(handle, origin, orgCount, orgType.handle, get(handle, origin, orgCount, orgType.handle,
targetRank, targetDisp, targetCount, targetType.handle, targetRank, targetDisp, targetCount, targetType.handle,
getBaseType(orgType, targetType)); getBaseType(orgType, targetType));
} }
private native void get( private native void get(
long win, Buffer origin, int orgCount, long orgType, long win, Buffer origin, int orgCount, long orgType,
int targetRank, int targetDisp, int targetCount, long targetType, int targetRank, int targetDisp, int targetCount, long targetType,
int baseType) throws MPIException; int baseType) throws MPIException;
/** /**
* Java binding of {@code MPI_ACCUMULATE}. * Java binding of {@code MPI_ACCUMULATE}.
* @param origin origin buffer * @param origin origin buffer
* @param orgCount number of entries in origin buffer * @param orgCount number of entries in origin buffer
@ -284,11 +284,11 @@ private native void get(
* @param op reduce operation * @param op reduce operation
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void accumulate(Buffer origin, int orgCount, Datatype orgType, public void accumulate(Buffer origin, int orgCount, Datatype orgType,
int targetRank, int targetDisp, int targetCount, int targetRank, int targetDisp, int targetCount,
Datatype targetType, Op op) Datatype targetType, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
if(!origin.isDirect()) if(!origin.isDirect())
@ -297,264 +297,264 @@ public void accumulate(Buffer origin, int orgCount, Datatype orgType,
accumulate(handle, origin, orgCount, orgType.handle, accumulate(handle, origin, orgCount, orgType.handle,
targetRank, targetDisp, targetCount, targetType.handle, targetRank, targetDisp, targetCount, targetType.handle,
op, op.handle, getBaseType(orgType, targetType)); op, op.handle, getBaseType(orgType, targetType));
} }
private native void accumulate( private native void accumulate(
long win, Buffer origin, int orgCount, long orgType, long win, Buffer origin, int orgCount, long orgType,
int targetRank, int targetDisp, int targetCount, long targetType, int targetRank, int targetDisp, int targetCount, long targetType,
Op jOp, long hOp, int baseType) throws MPIException; Op jOp, long hOp, int baseType) throws MPIException;
/** /**
* Java binding of {@code MPI_WIN_FENCE}. * Java binding of {@code MPI_WIN_FENCE}.
* @param assertion program assertion * @param assertion program assertion
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void fence(int assertion) throws MPIException public void fence(int assertion) throws MPIException
{ {
MPI.check(); MPI.check();
fence(handle, assertion); fence(handle, assertion);
} }
private native void fence(long win, int assertion) throws MPIException; private native void fence(long win, int assertion) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_START}. * Java binding of the MPI operation {@code MPI_WIN_START}.
* @param group group of target processes * @param group group of target processes
* @param assertion program assertion * @param assertion program assertion
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void start(Group group, int assertion) throws MPIException public void start(Group group, int assertion) throws MPIException
{ {
MPI.check(); MPI.check();
start(handle, group.handle, assertion); start(handle, group.handle, assertion);
} }
private native void start(long win, long group, int assertion) private native void start(long win, long group, int assertion)
throws MPIException; throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_COMPLETE}. * Java binding of the MPI operation {@code MPI_WIN_COMPLETE}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void complete() throws MPIException public void complete() throws MPIException
{ {
MPI.check(); MPI.check();
complete(handle); complete(handle);
} }
private native void complete(long win) throws MPIException; private native void complete(long win) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_POST}. * Java binding of the MPI operation {@code MPI_WIN_POST}.
* @param group group of origin processes * @param group group of origin processes
* @param assertion program assertion * @param assertion program assertion
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void post(Group group, int assertion) throws MPIException public void post(Group group, int assertion) throws MPIException
{ {
MPI.check(); MPI.check();
post(handle, group.handle, assertion); post(handle, group.handle, assertion);
} }
private native void post(long win, long group, int assertion) private native void post(long win, long group, int assertion)
throws MPIException; throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_WAIT}. * Java binding of the MPI operation {@code MPI_WIN_WAIT}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void waitFor() throws MPIException public void waitFor() throws MPIException
{ {
MPI.check(); MPI.check();
waitFor(handle); waitFor(handle);
} }
private native void waitFor(long win) throws MPIException; private native void waitFor(long win) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_TEST}. * Java binding of the MPI operation {@code MPI_WIN_TEST}.
* @return true if success * @return true if success
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public boolean test() throws MPIException public boolean test() throws MPIException
{ {
MPI.check(); MPI.check();
return test(handle); return test(handle);
} }
private native boolean test(long win) throws MPIException; private native boolean test(long win) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_LOCK}. * Java binding of the MPI operation {@code MPI_WIN_LOCK}.
* @param lockType either MPI.LOCK_EXCLUSIVE or MPI.LOCK_SHARED * @param lockType either MPI.LOCK_EXCLUSIVE or MPI.LOCK_SHARED
* @param rank rank of locked window * @param rank rank of locked window
* @param assertion program assertion * @param assertion program assertion
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void lock(int lockType, int rank, int assertion) throws MPIException public void lock(int lockType, int rank, int assertion) throws MPIException
{ {
MPI.check(); MPI.check();
lock(handle, lockType, rank, assertion); lock(handle, lockType, rank, assertion);
} }
private native void lock(long win, int lockType, int rank, int assertion) private native void lock(long win, int lockType, int rank, int assertion)
throws MPIException; throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_UNLOCK}. * Java binding of the MPI operation {@code MPI_WIN_UNLOCK}.
* @param rank rank of window * @param rank rank of window
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void unlock(int rank) throws MPIException public void unlock(int rank) throws MPIException
{ {
MPI.check(); MPI.check();
unlock(handle, rank); unlock(handle, rank);
} }
private native void unlock(long win, int rank) throws MPIException; private native void unlock(long win, int rank) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_SET_ERRHANDLER}. * Java binding of the MPI operation {@code MPI_WIN_SET_ERRHANDLER}.
* @param errhandler new MPI error handler for window * @param errhandler new MPI error handler for window
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void setErrhandler(Errhandler errhandler) throws MPIException public void setErrhandler(Errhandler errhandler) throws MPIException
{ {
MPI.check(); MPI.check();
setErrhandler(handle, errhandler.handle); setErrhandler(handle, errhandler.handle);
} }
private native void setErrhandler(long win, long errhandler) private native void setErrhandler(long win, long errhandler)
throws MPIException; throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_CALL_ERRHANDLER}. * Java binding of the MPI operation {@code MPI_WIN_CALL_ERRHANDLER}.
* @param errorCode error code * @param errorCode error code
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void callErrhandler(int errorCode) throws MPIException public void callErrhandler(int errorCode) throws MPIException
{ {
callErrhandler(handle, errorCode); callErrhandler(handle, errorCode);
} }
private native void callErrhandler(long handle, int errorCode) private native void callErrhandler(long handle, int errorCode)
throws MPIException; throws MPIException;
/** /**
* Create a new attribute key. * Create a new attribute key.
* <p>Java binding of the MPI operation {@code MPI_WIN_CREATE_KEYVAL}. * <p>Java binding of the MPI operation {@code MPI_WIN_CREATE_KEYVAL}.
* @return attribute key for future access * @return attribute key for future access
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static int createKeyval() throws MPIException public static int createKeyval() throws MPIException
{ {
MPI.check(); MPI.check();
return createKeyval_jni(); return createKeyval_jni();
} }
private static native int createKeyval_jni() throws MPIException; private static native int createKeyval_jni() throws MPIException;
/** /**
* Frees an attribute key. * Frees an attribute key.
* <p>Java binding of the MPI operation {@code MPI_WIN_FREE_KEYVAL}. * <p>Java binding of the MPI operation {@code MPI_WIN_FREE_KEYVAL}.
* @param keyval attribute key * @param keyval attribute key
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public static void freeKeyval(int keyval) throws MPIException public static void freeKeyval(int keyval) throws MPIException
{ {
MPI.check(); MPI.check();
freeKeyval_jni(keyval); freeKeyval_jni(keyval);
} }
private static native void freeKeyval_jni(int keyval) throws MPIException; private static native void freeKeyval_jni(int keyval) throws MPIException;
/** /**
* Stores attribute value associated with a key. * Stores attribute value associated with a key.
* <p>Java binding of the MPI operation {@code MPI_WIN_SET_ATTR}. * <p>Java binding of the MPI operation {@code MPI_WIN_SET_ATTR}.
* @param keyval attribute key * @param keyval attribute key
* @param value attribute value * @param value attribute value
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void setAttr(int keyval, Object value) throws MPIException public void setAttr(int keyval, Object value) throws MPIException
{ {
MPI.check(); MPI.check();
setAttr(handle, keyval, MPI.attrSet(value)); setAttr(handle, keyval, MPI.attrSet(value));
} }
private native void setAttr(long win, int keyval, byte[] value) private native void setAttr(long win, int keyval, byte[] value)
throws MPIException; throws MPIException;
/** /**
* Retrieves attribute value by key. * Retrieves attribute value by key.
* <p>Java binding of the MPI operation {@code MPI_WIN_GET_ATTR}. * <p>Java binding of the MPI operation {@code MPI_WIN_GET_ATTR}.
* @param keyval attribute key * @param keyval attribute key
* @return attribute value or null if no attribute is associated with the key. * @return attribute value or null if no attribute is associated with the key.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Object getAttr(int keyval) throws MPIException public Object getAttr(int keyval) throws MPIException
{ {
MPI.check(); MPI.check();
Object obj = getAttr(handle, keyval); Object obj = getAttr(handle, keyval);
return obj instanceof byte[] ? MPI.attrGet((byte[])obj) : obj; return obj instanceof byte[] ? MPI.attrGet((byte[])obj) : obj;
} }
private native Object getAttr(long win, int keyval) throws MPIException; private native Object getAttr(long win, int keyval) throws MPIException;
/** /**
* Deletes an attribute value associated with a key. * Deletes an attribute value associated with a key.
* <p>Java binding of the MPI operation {@code MPI_WIN_DELETE_ATTR}. * <p>Java binding of the MPI operation {@code MPI_WIN_DELETE_ATTR}.
* @param keyval attribute key * @param keyval attribute key
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void deleteAttr(int keyval) throws MPIException public void deleteAttr(int keyval) throws MPIException
{ {
MPI.check(); MPI.check();
deleteAttr(handle, keyval); deleteAttr(handle, keyval);
} }
private native void deleteAttr(long win, int keyval) throws MPIException; private native void deleteAttr(long win, int keyval) throws MPIException;
/** /**
* Java binding of {@code MPI_WIN_FREE}. * Java binding of {@code MPI_WIN_FREE}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
@Override public void free() throws MPIException @Override public void free() throws MPIException
{ {
MPI.check(); MPI.check();
handle = free(handle); handle = free(handle);
} }
private native long free(long win) throws MPIException; private native long free(long win) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_GET_INFO}. * Java binding of the MPI operation {@code MPI_WIN_GET_INFO}.
* @return Info Info object associated with this window * @return Info Info object associated with this window
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Info getInfo() throws MPIException public Info getInfo() throws MPIException
{ {
MPI.check(); MPI.check();
return new Info(getInfo(handle)); return new Info(getInfo(handle));
} }
private native long getInfo(long win) private native long getInfo(long win)
throws MPIException; throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_SET_INFO}. * Java binding of the MPI operation {@code MPI_WIN_SET_INFO}.
* @param info the new info * @param info the new info
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void setInfo(Info info) throws MPIException public void setInfo(Info info) throws MPIException
{ {
MPI.check(); MPI.check();
setInfo(handle, info.handle); setInfo(handle, info.handle);
} }
private native void setInfo(long win, long info) private native void setInfo(long win, long info)
throws MPIException; throws MPIException;
/** /**
* <p>Java binding of the MPI operation {@code MPI_RPUT}. * <p>Java binding of the MPI operation {@code MPI_RPUT}.
* @param origin_addr initial address of origin buffer * @param origin_addr initial address of origin buffer
* @param origin_count number of entries in origin buffer * @param origin_count number of entries in origin buffer
@ -566,25 +566,25 @@ private native void setInfo(long win, long info)
* @return RMA request * @return RMA request
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Request rPut(Buffer origin_addr, int origin_count, public final Request rPut(Buffer origin_addr, int origin_count,
Datatype origin_datatype, int target_rank, int target_disp, Datatype origin_datatype, int target_rank, int target_disp,
int target_count, Datatype target_datatype) int target_count, Datatype target_datatype)
throws MPIException throws MPIException
{ {
if(!origin_addr.isDirect()) if(!origin_addr.isDirect())
throw new IllegalArgumentException("The origin must be direct buffer."); throw new IllegalArgumentException("The origin must be direct buffer.");
return new Request(rPut(handle, origin_addr, origin_count, return new Request(rPut(handle, origin_addr, origin_count,
origin_datatype.handle, target_rank, target_disp, origin_datatype.handle, target_rank, target_disp,
target_count, target_datatype.handle, getBaseType(origin_datatype, target_datatype))); target_count, target_datatype.handle, getBaseType(origin_datatype, target_datatype)));
} }
private native long rPut(long win, Buffer origin_addr, int origin_count, private native long rPut(long win, Buffer origin_addr, int origin_count,
long origin_datatype, int target_rank, int target_disp, long origin_datatype, int target_rank, int target_disp,
int target_count, long target_datatype, int baseType) int target_count, long target_datatype, int baseType)
throws MPIException; throws MPIException;
/** /**
* Java binding of {@code MPI_RGET}. * Java binding of {@code MPI_RGET}.
* @param origin origin buffer * @param origin origin buffer
* @param orgCount number of entries in origin buffer * @param orgCount number of entries in origin buffer
@ -596,11 +596,11 @@ private native long rPut(long win, Buffer origin_addr, int origin_count,
* @return RMA request * @return RMA request
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public final Request rGet(Buffer origin, int orgCount, Datatype orgType, public final Request rGet(Buffer origin, int orgCount, Datatype orgType,
int targetRank, int targetDisp, int targetCount, int targetRank, int targetDisp, int targetCount,
Datatype targetType) Datatype targetType)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
if(!origin.isDirect()) if(!origin.isDirect())
@ -609,14 +609,14 @@ public final Request rGet(Buffer origin, int orgCount, Datatype orgType,
return new Request(rGet(handle, origin, orgCount, orgType.handle, return new Request(rGet(handle, origin, orgCount, orgType.handle,
targetRank, targetDisp, targetCount, targetType.handle, targetRank, targetDisp, targetCount, targetType.handle,
getBaseType(orgType, targetType))); getBaseType(orgType, targetType)));
} }
private native long rGet( private native long rGet(
long win, Buffer origin, int orgCount, long orgType, long win, Buffer origin, int orgCount, long orgType,
int targetRank, int targetDisp, int targetCount, long targetType, int targetRank, int targetDisp, int targetCount, long targetType,
int baseType) throws MPIException; int baseType) throws MPIException;
/** /**
* Java binding of {@code MPI_RACCUMULATE}. * Java binding of {@code MPI_RACCUMULATE}.
* @param origin origin buffer * @param origin origin buffer
* @param orgCount number of entries in origin buffer * @param orgCount number of entries in origin buffer
@ -629,11 +629,11 @@ private native long rGet(
* @return RMA request * @return RMA request
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Request rAccumulate(Buffer origin, int orgCount, Datatype orgType, public Request rAccumulate(Buffer origin, int orgCount, Datatype orgType,
int targetRank, int targetDisp, int targetCount, int targetRank, int targetDisp, int targetCount,
Datatype targetType, Op op) Datatype targetType, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
if(!origin.isDirect()) if(!origin.isDirect())
@ -642,14 +642,14 @@ public Request rAccumulate(Buffer origin, int orgCount, Datatype orgType,
return new Request(rAccumulate(handle, origin, orgCount, orgType.handle, return new Request(rAccumulate(handle, origin, orgCount, orgType.handle,
targetRank, targetDisp, targetCount, targetType.handle, targetRank, targetDisp, targetCount, targetType.handle,
op, op.handle, getBaseType(orgType, targetType))); op, op.handle, getBaseType(orgType, targetType)));
} }
private native long rAccumulate( private native long rAccumulate(
long win, Buffer origin, int orgCount, long orgType, long win, Buffer origin, int orgCount, long orgType,
int targetRank, int targetDisp, int targetCount, long targetType, int targetRank, int targetDisp, int targetCount, long targetType,
Op jOp, long hOp, int baseType) throws MPIException; Op jOp, long hOp, int baseType) throws MPIException;
/** /**
* Java binding of {@code MPI_GET_ACCUMULATE}. * Java binding of {@code MPI_GET_ACCUMULATE}.
* @param origin origin buffer * @param origin origin buffer
* @param orgCount number of entries in origin buffer * @param orgCount number of entries in origin buffer
@ -665,12 +665,12 @@ private native long rAccumulate(
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void getAccumulate(Buffer origin, int orgCount, Datatype orgType, public void getAccumulate(Buffer origin, int orgCount, Datatype orgType,
Buffer resultAddr, int resultCount, Datatype resultType, Buffer resultAddr, int resultCount, Datatype resultType,
int targetRank, int targetDisp, int targetCount, int targetRank, int targetDisp, int targetCount,
Datatype targetType, Op op) Datatype targetType, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
if(!origin.isDirect()) if(!origin.isDirect())
@ -680,15 +680,15 @@ public void getAccumulate(Buffer origin, int orgCount, Datatype orgType,
resultAddr, resultCount, resultType.handle, resultAddr, resultCount, resultType.handle,
targetRank, targetDisp, targetCount, targetType.handle, targetRank, targetDisp, targetCount, targetType.handle,
op, op.handle, getBaseType(orgType, targetType)); op, op.handle, getBaseType(orgType, targetType));
} }
private native void getAccumulate( private native void getAccumulate(
long win, Buffer origin, int orgCount, long orgType, long win, Buffer origin, int orgCount, long orgType,
Buffer resultAddr, int resultCount, long resultType, Buffer resultAddr, int resultCount, long resultType,
int targetRank, int targetDisp, int targetCount, long targetType, int targetRank, int targetDisp, int targetCount, long targetType,
Op jOp, long hOp, int baseType) throws MPIException; Op jOp, long hOp, int baseType) throws MPIException;
/** /**
* Java binding of {@code MPI_RGET_ACCUMULATE}. * Java binding of {@code MPI_RGET_ACCUMULATE}.
* @param origin origin buffer * @param origin origin buffer
* @param orgCount number of entries in origin buffer * @param orgCount number of entries in origin buffer
@ -705,12 +705,12 @@ private native void getAccumulate(
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public Request rGetAccumulate(Buffer origin, int orgCount, Datatype orgType, public Request rGetAccumulate(Buffer origin, int orgCount, Datatype orgType,
Buffer resultAddr, int resultCount, Datatype resultType, Buffer resultAddr, int resultCount, Datatype resultType,
int targetRank, int targetDisp, int targetCount, int targetRank, int targetDisp, int targetCount,
Datatype targetType, Op op) Datatype targetType, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
if(!origin.isDirect()) if(!origin.isDirect())
@ -720,78 +720,78 @@ public Request rGetAccumulate(Buffer origin, int orgCount, Datatype orgType,
resultAddr, resultCount, resultType.handle, resultAddr, resultCount, resultType.handle,
targetRank, targetDisp, targetCount, targetType.handle, targetRank, targetDisp, targetCount, targetType.handle,
op, op.handle, getBaseType(orgType, targetType))); op, op.handle, getBaseType(orgType, targetType)));
} }
private native long rGetAccumulate( private native long rGetAccumulate(
long win, Buffer origin, int orgCount, long orgType, long win, Buffer origin, int orgCount, long orgType,
Buffer resultAddr, int resultCount, long resultType, Buffer resultAddr, int resultCount, long resultType,
int targetRank, int targetDisp, int targetCount, long targetType, int targetRank, int targetDisp, int targetCount, long targetType,
Op jOp, long hOp, int baseType) throws MPIException; Op jOp, long hOp, int baseType) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_LOCK_ALL}. * Java binding of the MPI operation {@code MPI_WIN_LOCK_ALL}.
* @param assertion program assertion * @param assertion program assertion
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void lockAll(int assertion) throws MPIException public void lockAll(int assertion) throws MPIException
{ {
MPI.check(); MPI.check();
lockAll(handle, assertion); lockAll(handle, assertion);
} }
private native void lockAll(long win, int assertion) private native void lockAll(long win, int assertion)
throws MPIException; throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_UNLOCK_ALL}. * Java binding of the MPI operation {@code MPI_WIN_UNLOCK_ALL}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void unlockAll() throws MPIException public void unlockAll() throws MPIException
{ {
MPI.check(); MPI.check();
unlockAll(handle); unlockAll(handle);
} }
private native void unlockAll(long win) throws MPIException; private native void unlockAll(long win) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_SYNC}. * Java binding of the MPI operation {@code MPI_WIN_SYNC}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void sync() throws MPIException public void sync() throws MPIException
{ {
MPI.check(); MPI.check();
sync(handle); sync(handle);
} }
private native void sync(long win) throws MPIException; private native void sync(long win) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_FLUSH}. * Java binding of the MPI operation {@code MPI_WIN_FLUSH}.
* @param targetRank rank of target window * @param targetRank rank of target window
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void flush(int targetRank) throws MPIException public void flush(int targetRank) throws MPIException
{ {
MPI.check(); MPI.check();
flush(handle, targetRank); flush(handle, targetRank);
} }
private native void flush(long win, int targetRank) throws MPIException; private native void flush(long win, int targetRank) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_FLUSH_ALL}. * Java binding of the MPI operation {@code MPI_WIN_FLUSH_ALL}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void flushAll() throws MPIException public void flushAll() throws MPIException
{ {
MPI.check(); MPI.check();
flushAll(handle); flushAll(handle);
} }
private native void flushAll(long win) throws MPIException; private native void flushAll(long win) throws MPIException;
/** /**
* Java binding of {@code MPI_COMPARE_AND_SWAP}. * Java binding of {@code MPI_COMPARE_AND_SWAP}.
* @param origin origin buffer * @param origin origin buffer
* @param compareAddr compare buffer * @param compareAddr compare buffer
@ -802,10 +802,10 @@ private native void flushAll(long win) throws MPIException;
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void compareAndSwap(Buffer origin, Buffer compareAddr, Buffer resultAddr, public void compareAndSwap(Buffer origin, Buffer compareAddr, Buffer resultAddr,
Datatype targetType, int targetRank, int targetDisp) Datatype targetType, int targetRank, int targetDisp)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
if(!origin.isDirect()) if(!origin.isDirect())
@ -813,13 +813,13 @@ public void compareAndSwap(Buffer origin, Buffer compareAddr, Buffer resultAddr,
compareAndSwap(handle, origin, compareAddr, resultAddr, compareAndSwap(handle, origin, compareAddr, resultAddr,
targetType.handle, targetRank, targetDisp); targetType.handle, targetRank, targetDisp);
} }
private native void compareAndSwap( private native void compareAndSwap(
long win, Buffer origin, Buffer compareAddr, Buffer resultAddr, long win, Buffer origin, Buffer compareAddr, Buffer resultAddr,
long targetType, int targetRank, int targetDisp) throws MPIException; long targetType, int targetRank, int targetDisp) throws MPIException;
/** /**
* Java binding of {@code MPI_FETCH_AND_OP}. * Java binding of {@code MPI_FETCH_AND_OP}.
* @param origin origin buffer * @param origin origin buffer
* @param resultAddr result buffer * @param resultAddr result buffer
@ -830,10 +830,10 @@ private native void compareAndSwap(
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void fetchAndOp(Buffer origin, Buffer resultAddr, Datatype dataType, public void fetchAndOp(Buffer origin, Buffer resultAddr, Datatype dataType,
int targetRank, int targetDisp, Op op) int targetRank, int targetDisp, Op op)
throws MPIException throws MPIException
{ {
MPI.check(); MPI.check();
if(!origin.isDirect()) if(!origin.isDirect())
@ -841,63 +841,63 @@ public void fetchAndOp(Buffer origin, Buffer resultAddr, Datatype dataType,
fetchAndOp(handle, origin, resultAddr, dataType.handle, targetRank, fetchAndOp(handle, origin, resultAddr, dataType.handle, targetRank,
targetDisp, op, op.handle, getBaseType(dataType, dataType)); targetDisp, op, op.handle, getBaseType(dataType, dataType));
} }
private native void fetchAndOp( private native void fetchAndOp(
long win, Buffer origin, Buffer resultAddr, long targetType, int targetRank, long win, Buffer origin, Buffer resultAddr, long targetType, int targetRank,
int targetDisp, Op jOp, long hOp, int baseType) throws MPIException; int targetDisp, Op jOp, long hOp, int baseType) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_FLUSH_LOCAL}. * Java binding of the MPI operation {@code MPI_WIN_FLUSH_LOCAL}.
* @param targetRank rank of target window * @param targetRank rank of target window
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void flushLocal(int targetRank) throws MPIException public void flushLocal(int targetRank) throws MPIException
{ {
MPI.check(); MPI.check();
flushLocal(handle, targetRank); flushLocal(handle, targetRank);
} }
private native void flushLocal(long win, int targetRank) throws MPIException; private native void flushLocal(long win, int targetRank) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_FLUSH_LOCAL_ALL}. * Java binding of the MPI operation {@code MPI_WIN_FLUSH_LOCAL_ALL}.
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void flushLocalAll() throws MPIException public void flushLocalAll() throws MPIException
{ {
MPI.check(); MPI.check();
flushLocalAll(handle); flushLocalAll(handle);
} }
private native void flushLocalAll(long win) throws MPIException; private native void flushLocalAll(long win) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_GET_NAME}. * Java binding of the MPI operation {@code MPI_WIN_GET_NAME}.
* @return the name associated with this window * @return the name associated with this window
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public String getName() throws MPIException public String getName() throws MPIException
{ {
MPI.check(); MPI.check();
return getName(handle); return getName(handle);
} }
private native String getName(long handle) throws MPIException; private native String getName(long handle) throws MPIException;
/** /**
* Java binding of the MPI operation {@code MPI_WIN_SET_NAME}. * Java binding of the MPI operation {@code MPI_WIN_SET_NAME}.
* @param name the name to associate with this window * @param name the name to associate with this window
* @throws MPIException Signals that an MPI exception of some sort has occurred. * @throws MPIException Signals that an MPI exception of some sort has occurred.
*/ */
public void setName(String name) throws MPIException public void setName(String name) throws MPIException
{ {
MPI.check(); MPI.check();
setName(handle, name); setName(handle, name);
} }
private native void setName(long handle, String name) throws MPIException; private native void setName(long handle, String name) throws MPIException;
} // Win } // Win