@@ -1581,6 +1581,82 @@ JNIEXPORT jlong JNICALL Java_mpi_Comm_iAllToAllv(
15811581 return (jlong )request ;
15821582}
15831583
1584+ JNIEXPORT void JNICALL Java_mpi_Comm_allToAllw (
1585+ JNIEnv * env , jobject jthis , jlong jComm ,
1586+ jobject sendBuf , jintArray sCount , jintArray sDispls , jlongArray sTypes ,
1587+ jobject recvBuf , jintArray rCount , jintArray rDispls , jlongArray rTypes )
1588+ {
1589+ MPI_Comm comm = (MPI_Comm )jComm ;
1590+
1591+ jlong * jSTypes , * jRTypes ;
1592+ MPI_Datatype * cSTypes , * cRTypes ;
1593+
1594+ ompi_java_getDatatypeArray (env , sTypes , & jSTypes , & cSTypes );
1595+ ompi_java_getDatatypeArray (env , rTypes , & jRTypes , & cRTypes );
1596+
1597+ jint * jSCount , * jRCount , * jSDispls , * jRDispls ;
1598+ int * cSCount , * cRCount , * cSDispls , * cRDispls ;
1599+ ompi_java_getIntArray (env , sCount , & jSCount , & cSCount );
1600+ ompi_java_getIntArray (env , rCount , & jRCount , & cRCount );
1601+ ompi_java_getIntArray (env , sDispls , & jSDispls , & cSDispls );
1602+ ompi_java_getIntArray (env , rDispls , & jRDispls , & cRDispls );
1603+
1604+ void * sPtr = ompi_java_getDirectBufferAddress (env , sendBuf ),
1605+ * rPtr = ompi_java_getDirectBufferAddress (env , recvBuf );
1606+
1607+ int rc = MPI_Alltoallw (
1608+ sPtr , cSCount , cSDispls , cSTypes ,
1609+ rPtr , cRCount , cRDispls , cRTypes , comm );
1610+
1611+ ompi_java_exceptionCheck (env , rc );
1612+ ompi_java_forgetIntArray (env , sCount , jSCount , cSCount );
1613+ ompi_java_forgetIntArray (env , rCount , jRCount , cRCount );
1614+ ompi_java_forgetIntArray (env , sDispls , jSDispls , cSDispls );
1615+ ompi_java_forgetIntArray (env , rDispls , jRDispls , cRDispls );
1616+ ompi_java_forgetDatatypeArray (env , sTypes , jSTypes , cSTypes );
1617+ ompi_java_forgetDatatypeArray (env , rTypes , jRTypes , cRTypes );
1618+ }
1619+
1620+ JNIEXPORT jlong JNICALL Java_mpi_Comm_iAllToAllw (
1621+ JNIEnv * env , jobject jthis , jlong jComm ,
1622+ jobject sendBuf , jintArray sCount , jintArray sDispls , jlongArray sTypes ,
1623+ jobject recvBuf , jintArray rCount , jintArray rDispls , jlongArray rTypes )
1624+ {
1625+ MPI_Comm comm = (MPI_Comm )jComm ;
1626+
1627+ jlong * jSTypes , * jRTypes ;
1628+ MPI_Datatype * cSTypes , * cRTypes ;
1629+
1630+ ompi_java_getDatatypeArray (env , sTypes , & jSTypes , & cSTypes );
1631+ ompi_java_getDatatypeArray (env , rTypes , & jRTypes , & cRTypes );
1632+
1633+ jint * jSCount , * jRCount , * jSDispls , * jRDispls ;
1634+ int * cSCount , * cRCount , * cSDispls , * cRDispls ;
1635+ ompi_java_getIntArray (env , sCount , & jSCount , & cSCount );
1636+ ompi_java_getIntArray (env , rCount , & jRCount , & cRCount );
1637+ ompi_java_getIntArray (env , sDispls , & jSDispls , & cSDispls );
1638+ ompi_java_getIntArray (env , rDispls , & jRDispls , & cRDispls );
1639+
1640+ void * sPtr = ompi_java_getDirectBufferAddress (env , sendBuf ),
1641+ * rPtr = ompi_java_getDirectBufferAddress (env , recvBuf );
1642+
1643+ MPI_Request request ;
1644+
1645+ int rc = MPI_Ialltoallw (
1646+ sPtr , cSCount , cSDispls , cSTypes ,
1647+ rPtr , cRCount , cRDispls , cRTypes , comm , & request );
1648+
1649+ ompi_java_exceptionCheck (env , rc );
1650+ ompi_java_forgetIntArray (env , sCount , jSCount , cSCount );
1651+ ompi_java_forgetIntArray (env , rCount , jRCount , cRCount );
1652+ ompi_java_forgetIntArray (env , sDispls , jSDispls , cSDispls );
1653+ ompi_java_forgetIntArray (env , rDispls , jRDispls , cRDispls );
1654+ ompi_java_forgetDatatypeArray (env , sTypes , jSTypes , cSTypes );
1655+ ompi_java_forgetDatatypeArray (env , rTypes , jRTypes , cRTypes );
1656+
1657+ return (jlong )request ;
1658+ }
1659+
15841660JNIEXPORT void JNICALL Java_mpi_Comm_neighborAllGather (
15851661 JNIEnv * env , jobject jthis , jlong jComm ,
15861662 jobject sBuf , jboolean sdb , jint sOff ,
0 commit comments