Merge pull request #822 from nrgraham23/java_garbage_collection_bugfix
Java garbage collection bugfix
Этот коммит содержится в:
Коммит
eb25c006eb
@ -162,8 +162,8 @@ public class Comm implements Freeable, Cloneable
|
|||||||
*/
|
*/
|
||||||
public Comm dupWithInfo(Info info) throws MPIException
|
public Comm dupWithInfo(Info info) throws MPIException
|
||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
return new Comm(dupWithInfo(handle, info.handle));
|
return new Comm(dupWithInfo(handle, info.handle));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final native long dupWithInfo(long comm, long info) throws MPIException;
|
protected final native long dupWithInfo(long comm, long info) throws MPIException;
|
||||||
@ -641,7 +641,9 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(iSend(handle, buf, count, type.handle, dest, tag));
|
Request req = new Request(iSend(handle, buf, count, type.handle, dest, tag));
|
||||||
|
req.addSendBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iSend(
|
private native long iSend(
|
||||||
@ -666,7 +668,9 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(ibSend(handle, buf, count, type.handle, dest, tag));
|
Request req = new Request(ibSend(handle, buf, count, type.handle, dest, tag));
|
||||||
|
req.addSendBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long ibSend(
|
private native long ibSend(
|
||||||
@ -691,7 +695,9 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(isSend(handle, buf, count, type.handle, dest, tag));
|
Request req = new Request(isSend(handle, buf, count, type.handle, dest, tag));
|
||||||
|
req.addSendBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long isSend(
|
private native long isSend(
|
||||||
@ -716,7 +722,9 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(irSend(handle, buf, count, type.handle, dest, tag));
|
Request req = new Request(irSend(handle, buf, count, type.handle, dest, tag));
|
||||||
|
req.addSendBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long irSend(
|
private native long irSend(
|
||||||
@ -741,7 +749,9 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(iRecv(handle, buf, count, type.handle, source, tag));
|
Request req = new Request(iRecv(handle, buf, count, type.handle, source, tag));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iRecv(
|
private native long iRecv(
|
||||||
@ -769,7 +779,9 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Prequest(sendInit(handle, buf, count, type.handle, dest, tag));
|
Prequest preq = new Prequest(sendInit(handle, buf, count, type.handle, dest, tag));
|
||||||
|
preq.addSendBufRef(buf);
|
||||||
|
return preq;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long sendInit(
|
private native long sendInit(
|
||||||
@ -794,7 +806,9 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Prequest(bSendInit(handle, buf, count, type.handle, dest, tag));
|
Prequest preq = new Prequest(bSendInit(handle, buf, count, type.handle, dest, tag));
|
||||||
|
preq.addSendBufRef(buf);
|
||||||
|
return preq;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long bSendInit(
|
private native long bSendInit(
|
||||||
@ -819,7 +833,9 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Prequest(sSendInit(handle, buf, count, type.handle, dest, tag));
|
Prequest preq = new Prequest(sSendInit(handle, buf, count, type.handle, dest, tag));
|
||||||
|
preq.addSendBufRef(buf);
|
||||||
|
return preq;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long sSendInit(
|
private native long sSendInit(
|
||||||
@ -844,7 +860,9 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Prequest(rSendInit(handle, buf, count, type.handle, dest, tag));
|
Prequest preq = new Prequest(rSendInit(handle, buf, count, type.handle, dest, tag));
|
||||||
|
preq.addSendBufRef(buf);
|
||||||
|
return preq;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long rSendInit(
|
private native long rSendInit(
|
||||||
@ -869,7 +887,9 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Prequest(recvInit(handle, buf, count, type.handle, source, tag));
|
Prequest preq = new Prequest(recvInit(handle, buf, count, type.handle, source, tag));
|
||||||
|
preq.addRecvBufRef(buf);
|
||||||
|
return preq;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long recvInit(
|
private native long recvInit(
|
||||||
@ -1252,7 +1272,9 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(iBcast(handle, buf, count, type.handle, root));
|
Request req = new Request(iBcast(handle, buf, count, type.handle, root));
|
||||||
|
req.addSendBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iBcast(
|
private native long iBcast(
|
||||||
@ -1358,9 +1380,11 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iGather(handle, sendbuf, sendcount, sendtype.handle,
|
||||||
return new Request(iGather(handle, sendbuf, sendcount, sendtype.handle,
|
|
||||||
recvbuf, recvcount, recvtype.handle, root));
|
recvbuf, recvcount, recvtype.handle, root));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1381,9 +1405,10 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
|
Request req = new Request(iGather(handle, null, 0, 0,
|
||||||
return new Request(iGather(handle, null, 0, 0,
|
|
||||||
buf, count, type.handle, root));
|
buf, count, type.handle, root));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iGather(
|
private native long iGather(
|
||||||
@ -1527,10 +1552,11 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iGatherv(
|
||||||
return new Request(iGatherv(
|
|
||||||
handle, sendbuf, sendcount, sendtype.handle,
|
handle, sendbuf, sendcount, sendtype.handle,
|
||||||
recvbuf, recvcount, displs, recvtype.handle, root));
|
recvbuf, recvcount, displs, recvtype.handle, root));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1553,9 +1579,10 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(recvbuf);
|
assertDirectBuffer(recvbuf);
|
||||||
|
Request req = new Request(iGatherv(handle, null, 0, 0,
|
||||||
return new Request(iGatherv(handle, null, 0, 0,
|
|
||||||
recvbuf, recvcount, displs, recvtype.handle, root));
|
recvbuf, recvcount, displs, recvtype.handle, root));
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1577,9 +1604,10 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf);
|
assertDirectBuffer(sendbuf);
|
||||||
|
Request req = new Request(iGatherv(handle, sendbuf, sendcount, sendtype.handle,
|
||||||
return new Request(iGatherv(handle, sendbuf, sendcount, sendtype.handle,
|
|
||||||
null, null, null, 0, root));
|
null, null, null, 0, root));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iGatherv(
|
private native long iGatherv(
|
||||||
@ -1686,9 +1714,11 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iScatter(handle, sendbuf, sendcount, sendtype.handle,
|
||||||
return new Request(iScatter(handle, sendbuf, sendcount, sendtype.handle,
|
|
||||||
recvbuf, recvcount, recvtype.handle, root));
|
recvbuf, recvcount, recvtype.handle, root));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1709,9 +1739,10 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
|
Request req = new Request(iScatter(handle, buf, count, type.handle,
|
||||||
return new Request(iScatter(handle, buf, count, type.handle,
|
|
||||||
null, 0, 0, root));
|
null, 0, 0, root));
|
||||||
|
req.addSendBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iScatter(
|
private native long iScatter(
|
||||||
@ -1852,10 +1883,12 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iScatterv(
|
||||||
return new Request(iScatterv(
|
|
||||||
handle, sendbuf, sendcount, displs, sendtype.handle,
|
handle, sendbuf, sendcount, displs, sendtype.handle,
|
||||||
recvbuf, recvcount, recvtype.handle, root));
|
recvbuf, recvcount, recvtype.handle, root));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1877,9 +1910,10 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf);
|
assertDirectBuffer(sendbuf);
|
||||||
|
Request req = new Request(iScatterv(handle, sendbuf, sendcount, displs,
|
||||||
return new Request(iScatterv(handle, sendbuf, sendcount, displs,
|
|
||||||
sendtype.handle, null, 0, 0, root));
|
sendtype.handle, null, 0, 0, root));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1900,9 +1934,10 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(recvbuf);
|
assertDirectBuffer(recvbuf);
|
||||||
|
Request req = new Request(iScatterv(handle, null, null, null, 0,
|
||||||
return new Request(iScatterv(handle, null, null, null, 0,
|
|
||||||
recvbuf, recvcount, recvtype.handle, root));
|
recvbuf, recvcount, recvtype.handle, root));
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iScatterv(
|
private native long iScatterv(
|
||||||
@ -2002,9 +2037,11 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iAllGather(handle, sendbuf, sendcount, sendtype.handle,
|
||||||
return new Request(iAllGather(handle, sendbuf, sendcount, sendtype.handle,
|
|
||||||
recvbuf, recvcount, recvtype.handle));
|
recvbuf, recvcount, recvtype.handle));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2022,7 +2059,9 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(iAllGather(handle, null, 0, 0, buf, count, type.handle));
|
Request req = new Request(iAllGather(handle, null, 0, 0, buf, count, type.handle));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iAllGather(
|
private native long iAllGather(
|
||||||
@ -2127,10 +2166,12 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iAllGatherv(
|
||||||
return new Request(iAllGatherv(
|
|
||||||
handle, sendbuf, sendcount, sendtype.handle,
|
handle, sendbuf, sendcount, sendtype.handle,
|
||||||
recvbuf, recvcount, displs, recvtype.handle));
|
recvbuf, recvcount, displs, recvtype.handle));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2150,9 +2191,10 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
|
Request req = new Request(iAllGatherv(
|
||||||
return new Request(iAllGatherv(
|
|
||||||
handle, null, 0, 0, buf, count, displs, type.handle));
|
handle, null, 0, 0, buf, count, displs, type.handle));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iAllGatherv(
|
private native long iAllGatherv(
|
||||||
@ -2227,9 +2269,11 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iAllToAll(handle, sendbuf, sendcount, sendtype.handle,
|
||||||
return new Request(iAllToAll(handle, sendbuf, sendcount, sendtype.handle,
|
|
||||||
recvbuf, recvcount, recvtype.handle));
|
recvbuf, recvcount, recvtype.handle));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iAllToAll(
|
private native long iAllToAll(
|
||||||
@ -2312,10 +2356,12 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iAllToAllv(
|
||||||
return new Request(iAllToAllv(
|
|
||||||
handle, sendbuf, sendcount, sdispls, sendtype.handle,
|
handle, sendbuf, sendcount, sdispls, sendtype.handle,
|
||||||
recvbuf, recvcount, rdispls, recvtype.handle));
|
recvbuf, recvcount, rdispls, recvtype.handle));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iAllToAllv(long comm,
|
private native long iAllToAllv(long comm,
|
||||||
@ -2385,10 +2431,12 @@ public class Comm implements Freeable, Cloneable
|
|||||||
|
|
||||||
long[] sendHandles = convertTypeArray(sendTypes);
|
long[] sendHandles = convertTypeArray(sendTypes);
|
||||||
long[] recvHandles = convertTypeArray(recvTypes);
|
long[] recvHandles = convertTypeArray(recvTypes);
|
||||||
|
Request req = new Request(iAllToAllw(
|
||||||
return new Request(iAllToAllw(
|
|
||||||
handle, sendBuf, sendCount, sDispls, sendHandles,
|
handle, sendBuf, sendCount, sDispls, sendHandles,
|
||||||
recvBuf, recvCount, rDispls, recvHandles));
|
recvBuf, recvCount, rDispls, recvHandles));
|
||||||
|
req.addSendBufRef(sendBuf);
|
||||||
|
req.addRecvBufRef(recvBuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iAllToAllw(long comm,
|
private native long iAllToAllw(long comm,
|
||||||
@ -2462,10 +2510,12 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iNeighborAllGather(
|
||||||
return new Request(iNeighborAllGather(
|
|
||||||
handle, sendbuf, sendcount, sendtype.handle,
|
handle, sendbuf, sendcount, sendtype.handle,
|
||||||
recvbuf, recvcount, recvtype.handle));
|
recvbuf, recvcount, recvtype.handle));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iNeighborAllGather(
|
private native long iNeighborAllGather(
|
||||||
@ -2540,10 +2590,12 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iNeighborAllGatherv(
|
||||||
return new Request(iNeighborAllGatherv(
|
|
||||||
handle, sendbuf, sendcount, sendtype.handle,
|
handle, sendbuf, sendcount, sendtype.handle,
|
||||||
recvbuf, recvcount, displs, recvtype.handle));
|
recvbuf, recvcount, displs, recvtype.handle));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iNeighborAllGatherv(
|
private native long iNeighborAllGatherv(
|
||||||
@ -2617,10 +2669,12 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iNeighborAllToAll(
|
||||||
return new Request(iNeighborAllToAll(
|
|
||||||
handle, sendbuf, sendcount, sendtype.handle,
|
handle, sendbuf, sendcount, sendtype.handle,
|
||||||
recvbuf, recvcount, recvtype.handle));
|
recvbuf, recvcount, recvtype.handle));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iNeighborAllToAll(
|
private native long iNeighborAllToAll(
|
||||||
@ -2698,10 +2752,12 @@ public class Comm implements Freeable, Cloneable
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iNeighborAllToAllv(
|
||||||
return new Request(iNeighborAllToAllv(
|
|
||||||
handle, sendbuf, sendcount, sdispls, sendtype.handle,
|
handle, sendbuf, sendcount, sdispls, sendtype.handle,
|
||||||
recvbuf, recvcount, rdispls, recvtype.handle));
|
recvbuf, recvcount, rdispls, recvtype.handle));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iNeighborAllToAllv(
|
private native long iNeighborAllToAllv(
|
||||||
@ -2815,10 +2871,12 @@ public class Comm implements Freeable, Cloneable
|
|||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
op.setDatatype(type);
|
op.setDatatype(type);
|
||||||
|
Request req = new Request(iReduce(
|
||||||
return new Request(iReduce(
|
|
||||||
handle, sendbuf, recvbuf, count,
|
handle, sendbuf, recvbuf, count,
|
||||||
type.handle, type.baseType, op, op.handle, root));
|
type.handle, type.baseType, op, op.handle, root));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2842,10 +2900,11 @@ public class Comm implements Freeable, Cloneable
|
|||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
op.setDatatype(type);
|
op.setDatatype(type);
|
||||||
|
Request req = new Request(iReduce(
|
||||||
return new Request(iReduce(
|
|
||||||
handle, null, buf, count,
|
handle, null, buf, count,
|
||||||
type.handle, type.baseType, op, op.handle, root));
|
type.handle, type.baseType, op, op.handle, root));
|
||||||
|
req.addSendBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iReduce(
|
private native long iReduce(
|
||||||
@ -2946,9 +3005,11 @@ public class Comm implements Freeable, Cloneable
|
|||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
op.setDatatype(type);
|
op.setDatatype(type);
|
||||||
|
Request req = new Request(iAllReduce(handle, sendbuf, recvbuf, count,
|
||||||
return new Request(iAllReduce(handle, sendbuf, recvbuf, count,
|
|
||||||
type.handle, type.baseType, op, op.handle));
|
type.handle, type.baseType, op, op.handle));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2969,10 +3030,11 @@ public class Comm implements Freeable, Cloneable
|
|||||||
MPI.check();
|
MPI.check();
|
||||||
op.setDatatype(type);
|
op.setDatatype(type);
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
|
Request req = new Request(iAllReduce(
|
||||||
return new Request(iAllReduce(
|
|
||||||
handle, null, buf, count,
|
handle, null, buf, count,
|
||||||
type.handle, type.baseType, op, op.handle));
|
type.handle, type.baseType, op, op.handle));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iAllReduce(
|
private native long iAllReduce(
|
||||||
@ -3075,10 +3137,12 @@ public class Comm implements Freeable, Cloneable
|
|||||||
MPI.check();
|
MPI.check();
|
||||||
op.setDatatype(type);
|
op.setDatatype(type);
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iReduceScatter(
|
||||||
return new Request(iReduceScatter(
|
|
||||||
handle, sendbuf, recvbuf, recvcounts,
|
handle, sendbuf, recvbuf, recvcounts,
|
||||||
type.handle, type.baseType, op, op.handle));
|
type.handle, type.baseType, op, op.handle));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3101,10 +3165,11 @@ public class Comm implements Freeable, Cloneable
|
|||||||
MPI.check();
|
MPI.check();
|
||||||
op.setDatatype(type);
|
op.setDatatype(type);
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
|
Request req = new Request(iReduceScatter(
|
||||||
return new Request(iReduceScatter(
|
|
||||||
handle, null, buf, counts,
|
handle, null, buf, counts,
|
||||||
type.handle, type.baseType, op, op.handle));
|
type.handle, type.baseType, op, op.handle));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iReduceScatter(
|
private native long iReduceScatter(
|
||||||
@ -3202,10 +3267,12 @@ public class Comm implements Freeable, Cloneable
|
|||||||
MPI.check();
|
MPI.check();
|
||||||
op.setDatatype(type);
|
op.setDatatype(type);
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = new Request(iReduceScatterBlock(
|
||||||
return new Request(iReduceScatterBlock(
|
|
||||||
handle, sendbuf, recvbuf, recvcount,
|
handle, sendbuf, recvbuf, recvcount,
|
||||||
type.handle, type.baseType, op, op.handle));
|
type.handle, type.baseType, op, op.handle));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3226,10 +3293,11 @@ public class Comm implements Freeable, Cloneable
|
|||||||
MPI.check();
|
MPI.check();
|
||||||
op.setDatatype(type);
|
op.setDatatype(type);
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
|
Request req = new Request(iReduceScatterBlock(
|
||||||
return new Request(iReduceScatterBlock(
|
|
||||||
handle, null, buf, count, type.handle,
|
handle, null, buf, count, type.handle,
|
||||||
type.baseType, op, op.handle));
|
type.baseType, op, op.handle));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iReduceScatterBlock(
|
private native long iReduceScatterBlock(
|
||||||
|
@ -396,7 +396,9 @@ public final class File
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(iReadAt(handle, offset, buf, count, type.handle));
|
Request req = new Request(iReadAt(handle, offset, buf, count, type.handle));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iReadAt(
|
private native long iReadAt(
|
||||||
@ -417,7 +419,9 @@ public final class File
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(iWriteAt(handle, offset, buf, count, type.handle));
|
Request req = new Request(iWriteAt(handle, offset, buf, count, type.handle));
|
||||||
|
req.addSendBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iWriteAt(
|
private native long iWriteAt(
|
||||||
@ -552,7 +556,9 @@ public final class File
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(iRead(handle, buf, count, type.handle));
|
Request req = new Request(iRead(handle, buf, count, type.handle));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iRead(long fh, Buffer buf, int count, long type)
|
private native long iRead(long fh, Buffer buf, int count, long type)
|
||||||
@ -570,7 +576,9 @@ public final class File
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(iWrite(handle, buf, count, type.handle));
|
Request req = new Request(iWrite(handle, buf, count, type.handle));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iWrite(long fh, Buffer buf, int count, long type)
|
private native long iWrite(long fh, Buffer buf, int count, long type)
|
||||||
@ -694,7 +702,9 @@ public final class File
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(iReadShared(handle, buf, count, type.handle));
|
Request req = new Request(iReadShared(handle, buf, count, type.handle));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iReadShared(long fh, Buffer buf, int count, long type)
|
private native long iReadShared(long fh, Buffer buf, int count, long type)
|
||||||
@ -713,7 +723,9 @@ public final class File
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(iWriteShared(handle, buf, count, type.handle));
|
Request req = new Request(iWriteShared(handle, buf, count, type.handle));
|
||||||
|
req.addSendBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iWriteShared(long fh, Buffer buf, int count, long type)
|
private native long iWriteShared(long fh, Buffer buf, int count, long type)
|
||||||
|
@ -468,9 +468,11 @@ public class Intracomm extends Comm
|
|||||||
MPI.check();
|
MPI.check();
|
||||||
op.setDatatype(type);
|
op.setDatatype(type);
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = 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));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -490,10 +492,11 @@ public class Intracomm extends Comm
|
|||||||
MPI.check();
|
MPI.check();
|
||||||
op.setDatatype(type);
|
op.setDatatype(type);
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
|
Request req = 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));
|
||||||
|
req.addSendBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iScan(
|
private native long iScan(
|
||||||
@ -592,9 +595,11 @@ public class Intracomm extends Comm
|
|||||||
MPI.check();
|
MPI.check();
|
||||||
op.setDatatype(type);
|
op.setDatatype(type);
|
||||||
assertDirectBuffer(sendbuf, recvbuf);
|
assertDirectBuffer(sendbuf, recvbuf);
|
||||||
|
Request req = 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));
|
||||||
|
req.addSendBufRef(sendbuf);
|
||||||
|
req.addRecvBufRef(recvbuf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -614,10 +619,11 @@ public class Intracomm extends Comm
|
|||||||
MPI.check();
|
MPI.check();
|
||||||
op.setDatatype(type);
|
op.setDatatype(type);
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
|
Request req = 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));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long iExScan(
|
private native long iExScan(
|
||||||
|
@ -152,7 +152,9 @@ public final class Message
|
|||||||
{
|
{
|
||||||
MPI.check();
|
MPI.check();
|
||||||
assertDirectBuffer(buf);
|
assertDirectBuffer(buf);
|
||||||
return new Request(imRecv(handle, buf, count, type.handle));
|
Request req = new Request(imRecv(handle, buf, count, type.handle));
|
||||||
|
req.addRecvBufRef(buf);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long imRecv(long message, Object buf, int count, long type)
|
private native long imRecv(long message, Object buf, int count, long type)
|
||||||
|
@ -63,12 +63,16 @@
|
|||||||
|
|
||||||
package mpi;
|
package mpi;
|
||||||
|
|
||||||
|
import java.nio.Buffer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Request object.
|
* Request object.
|
||||||
*/
|
*/
|
||||||
public class Request implements Freeable
|
public class Request implements Freeable
|
||||||
{
|
{
|
||||||
protected long handle;
|
protected long handle;
|
||||||
|
protected Buffer sendBuf;
|
||||||
|
protected Buffer recvBuf;
|
||||||
|
|
||||||
static
|
static
|
||||||
{
|
{
|
||||||
@ -112,6 +116,32 @@ public class Request implements Freeable
|
|||||||
|
|
||||||
private native void cancel(long request) throws MPIException;
|
private native void cancel(long request) throws MPIException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a receive buffer to this Request object. This method
|
||||||
|
* should be called by the internal api whenever a persistent
|
||||||
|
* request is created and any time a request object, that has
|
||||||
|
* an associated buffer, is returned from an opperation to protect
|
||||||
|
* the buffer from getting prematurely garbage collected.
|
||||||
|
* @param buf buffer to add to the array list
|
||||||
|
*/
|
||||||
|
protected final void addRecvBufRef(Buffer buf)
|
||||||
|
{
|
||||||
|
this.recvBuf = buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a send buffer to this Request object. This method
|
||||||
|
* should be called by the internal api whenever a persistent
|
||||||
|
* request is created and any time a request object, that has
|
||||||
|
* an associated buffer, is returned from an opperation to protect
|
||||||
|
* the buffer from getting prematurely garbage collected.
|
||||||
|
* @param buf buffer to add to the array list
|
||||||
|
*/
|
||||||
|
protected final void addSendBufRef(Buffer buf)
|
||||||
|
{
|
||||||
|
this.sendBuf = buf;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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
|
||||||
|
@ -573,10 +573,11 @@ public final class Win implements Freeable
|
|||||||
{
|
{
|
||||||
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.");
|
||||||
|
Request req = 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)));
|
||||||
|
req.addSendBufRef(origin_addr);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long rPut(long win, Buffer origin_addr, int origin_count,
|
private native long rPut(long win, Buffer origin_addr, int origin_count,
|
||||||
@ -605,10 +606,11 @@ public final class Win implements Freeable
|
|||||||
|
|
||||||
if(!origin.isDirect())
|
if(!origin.isDirect())
|
||||||
throw new IllegalArgumentException("The origin must be direct buffer.");
|
throw new IllegalArgumentException("The origin must be direct buffer.");
|
||||||
|
Request req = 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)));
|
||||||
|
req.addRecvBufRef(origin);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long rGet(
|
private native long rGet(
|
||||||
@ -638,10 +640,11 @@ public final class Win implements Freeable
|
|||||||
|
|
||||||
if(!origin.isDirect())
|
if(!origin.isDirect())
|
||||||
throw new IllegalArgumentException("The origin must be direct buffer.");
|
throw new IllegalArgumentException("The origin must be direct buffer.");
|
||||||
|
Request req = 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)));
|
||||||
|
req.addSendBufRef(origin);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long rAccumulate(
|
private native long rAccumulate(
|
||||||
@ -715,11 +718,12 @@ public final class Win implements Freeable
|
|||||||
|
|
||||||
if(!origin.isDirect())
|
if(!origin.isDirect())
|
||||||
throw new IllegalArgumentException("The origin must be direct buffer.");
|
throw new IllegalArgumentException("The origin must be direct buffer.");
|
||||||
|
Request req = new Request(rGetAccumulate(handle, origin, orgCount, orgType.handle,
|
||||||
return new Request(rGetAccumulate(handle, origin, orgCount, orgType.handle,
|
|
||||||
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)));
|
||||||
|
req.addRecvBufRef(origin);
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
private native long rGetAccumulate(
|
private native long rGetAccumulate(
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user