|  | 
| 11 | 11 |  *                         All rights reserved. | 
| 12 | 12 |  * Copyright (c) 2015      Research Organization for Information Science | 
| 13 | 13 |  *                         and Technology (RIST). All rights reserved. | 
|  | 14 | + * Copyright (c) 2015      Los Alamos National Security, LLC. All rights | 
|  | 15 | + *                         reserved. | 
| 14 | 16 |  * $COPYRIGHT$ | 
| 15 | 17 |  * | 
| 16 | 18 |  * Additional copyrights may follow | 
| @@ -329,3 +331,106 @@ JNIEXPORT jlong JNICALL Java_mpi_Win_rGet(JNIEnv *env, jobject jthis, jlong win, | 
| 329 | 331 |     return (jlong)request; | 
| 330 | 332 | } | 
| 331 | 333 | 
 | 
|  | 334 | +JNIEXPORT jlong JNICALL Java_mpi_Win_rAccumulate(JNIEnv *env, jobject jthis, jlong win, | 
|  | 335 | +    jobject origin, jint orgCount, jlong orgType, jint targetRank, jint targetDisp, | 
|  | 336 | +    jint targetCount, jlong targetType, jobject jOp, jlong hOp, jint baseType) | 
|  | 337 | +{ | 
|  | 338 | +    void *orgPtr = (*env)->GetDirectBufferAddress(env, origin); | 
|  | 339 | +    MPI_Op op = ompi_java_op_getHandle(env, jOp, hOp, baseType); | 
|  | 340 | +    MPI_Request request; | 
|  | 341 | +     | 
|  | 342 | +    int rc = MPI_Raccumulate(orgPtr, orgCount, (MPI_Datatype)orgType, | 
|  | 343 | +                            targetRank, (MPI_Aint)targetDisp, targetCount, | 
|  | 344 | +                            (MPI_Datatype)targetType, op, (MPI_Win)win, &request); | 
|  | 345 | +     | 
|  | 346 | +    ompi_java_exceptionCheck(env, rc); | 
|  | 347 | +    return (jlong)request; | 
|  | 348 | +} | 
|  | 349 | + | 
|  | 350 | +JNIEXPORT void JNICALL Java_mpi_Win_getAccumulate(JNIEnv *env, jobject jthis, jlong win, | 
|  | 351 | +                            jobject origin, jint orgCount, jlong orgType, jobject resultBuff, jint resultCount, | 
|  | 352 | +                                                  jlong resultType, jint targetRank, jint targetDisp, jint targetCount, jlong targetType, | 
|  | 353 | +                                                  jobject jOp, jlong hOp, jint baseType) | 
|  | 354 | +{ | 
|  | 355 | +    void *orgPtr = (*env)->GetDirectBufferAddress(env, origin); | 
|  | 356 | +    void *resultPtr = (*env)->GetDirectBufferAddress(env, resultBuff); | 
|  | 357 | +    MPI_Op op = ompi_java_op_getHandle(env, jOp, hOp, baseType); | 
|  | 358 | +     | 
|  | 359 | +    int rc = MPI_Get_accumulate(orgPtr, orgCount, (MPI_Datatype)orgType, | 
|  | 360 | +                                resultPtr, resultCount, (MPI_Datatype)resultType, | 
|  | 361 | +                                targetRank, (MPI_Aint)targetDisp, targetCount, | 
|  | 362 | +                                (MPI_Datatype)targetType, op, (MPI_Win)win); | 
|  | 363 | +     | 
|  | 364 | +    ompi_java_exceptionCheck(env, rc); | 
|  | 365 | +} | 
|  | 366 | + | 
|  | 367 | +JNIEXPORT jlong JNICALL Java_mpi_Win_rGetAccumulate(JNIEnv *env, jobject jthis, jlong win, | 
|  | 368 | +                                                    jobject origin, jint orgCount, jlong orgType, jobject resultBuff, jint resultCount, | 
|  | 369 | +                                                    jlong resultType, jint targetRank, jint targetDisp, jint targetCount, jlong targetType, | 
|  | 370 | +                                                    jobject jOp, jlong hOp, jint baseType) | 
|  | 371 | +{ | 
|  | 372 | +    void *orgPtr = (*env)->GetDirectBufferAddress(env, origin); | 
|  | 373 | +    void *resultPtr = (*env)->GetDirectBufferAddress(env, resultBuff); | 
|  | 374 | +    MPI_Op op = ompi_java_op_getHandle(env, jOp, hOp, baseType); | 
|  | 375 | +    MPI_Request request; | 
|  | 376 | +     | 
|  | 377 | +    int rc = MPI_Rget_accumulate(orgPtr, orgCount, (MPI_Datatype)orgType, | 
|  | 378 | +                                 resultPtr, resultCount, (MPI_Datatype)resultType, | 
|  | 379 | +                                 targetRank, (MPI_Aint)targetDisp, targetCount, | 
|  | 380 | +                                 (MPI_Datatype)targetType, op, (MPI_Win)win, &request); | 
|  | 381 | +     | 
|  | 382 | +    ompi_java_exceptionCheck(env, rc); | 
|  | 383 | +    return (jlong)request; | 
|  | 384 | +} | 
|  | 385 | + | 
|  | 386 | +JNIEXPORT void JNICALL Java_mpi_Win_lockAll(JNIEnv *env, jobject jthis, jlong win, jint assertion) | 
|  | 387 | +{ | 
|  | 388 | +    int rc = MPI_Win_lock_all(assertion, (MPI_Win)win); | 
|  | 389 | +    ompi_java_exceptionCheck(env, rc); | 
|  | 390 | +} | 
|  | 391 | + | 
|  | 392 | +JNIEXPORT void JNICALL Java_mpi_Win_unlockAll(JNIEnv *env, jobject jthis, jlong win) | 
|  | 393 | +{ | 
|  | 394 | +    int rc = MPI_Win_unlock_all((MPI_Win)win); | 
|  | 395 | +    ompi_java_exceptionCheck(env, rc); | 
|  | 396 | +} | 
|  | 397 | + | 
|  | 398 | +JNIEXPORT void JNICALL Java_mpi_Win_sync(JNIEnv *env, jobject jthis, jlong win) | 
|  | 399 | +{ | 
|  | 400 | +    int rc = MPI_Win_sync((MPI_Win)win); | 
|  | 401 | +    ompi_java_exceptionCheck(env, rc); | 
|  | 402 | +} | 
|  | 403 | + | 
|  | 404 | +JNIEXPORT void JNICALL Java_mpi_Win_flush(JNIEnv *env, jobject jthis, jlong win, jint targetRank) | 
|  | 405 | +{ | 
|  | 406 | +    int rc = MPI_Win_flush(targetRank, (MPI_Win)win); | 
|  | 407 | +    ompi_java_exceptionCheck(env, rc); | 
|  | 408 | +} | 
|  | 409 | + | 
|  | 410 | +JNIEXPORT void JNICALL Java_mpi_Win_flushAll(JNIEnv *env, jobject jthis, jlong win) | 
|  | 411 | +{ | 
|  | 412 | +    int rc = MPI_Win_flush_all((MPI_Win)win); | 
|  | 413 | +    ompi_java_exceptionCheck(env, rc); | 
|  | 414 | +} | 
|  | 415 | + | 
|  | 416 | +JNIEXPORT void JNICALL Java_mpi_Win_compareAndSwap (JNIEnv *env, jobject jthis, jlong win, jobject origin, | 
|  | 417 | +                                                    jobject compareAddr, jobject resultAddr, jlong dataType, jint targetRank, jint targetDisp) | 
|  | 418 | +{ | 
|  | 419 | +    void *orgPtr = (*env)->GetDirectBufferAddress(env, origin); | 
|  | 420 | +    void *compPtr = (*env)->GetDirectBufferAddress(env, compareAddr); | 
|  | 421 | +    void *resultPtr = (*env)->GetDirectBufferAddress(env, resultAddr); | 
|  | 422 | +     | 
|  | 423 | +    int rc = MPI_Compare_and_swap(orgPtr, compPtr, resultPtr, dataType, targetRank, targetDisp, (MPI_Win)win); | 
|  | 424 | +    ompi_java_exceptionCheck(env, rc); | 
|  | 425 | +} | 
|  | 426 | + | 
|  | 427 | +JNIEXPORT void JNICALL Java_mpi_Win_fetchAndOp(JNIEnv *env, jobject jthis, jlong win, jobject origin, | 
|  | 428 | +                                               jobject resultAddr, jlong dataType, jint targetRank, jint targetDisp, jobject jOp, jlong hOp, jint baseType) | 
|  | 429 | +{ | 
|  | 430 | +    void *orgPtr = (*env)->GetDirectBufferAddress(env, origin); | 
|  | 431 | +    void *resultPtr = (*env)->GetDirectBufferAddress(env, resultAddr); | 
|  | 432 | +    MPI_Op op = ompi_java_op_getHandle(env, jOp, hOp, baseType); | 
|  | 433 | +     | 
|  | 434 | +    int rc = MPI_Fetch_and_op(orgPtr, resultPtr, dataType, targetRank, targetDisp, op, (MPI_Win)win); | 
|  | 435 | +    ompi_java_exceptionCheck(env, rc); | 
|  | 436 | +} | 
0 commit comments