void csetmpiwin_( MPI_Fint *fwin, MPI_Fint *fkey, MPI_Aint *val, MPI_Fint *errs ) { MPI_Win win = MPI_Win_f2c( *fwin ); MPI_Win_set_attr( win, *fkey, (void *)*val ); }
/* * Class: mpi_Win * Method: setAttr_jni * Signature: (JI[B)V */ JNIEXPORT void JNICALL Java_mpi_Win_setAttr( JNIEnv *env, jobject jthis, jlong win, jint keyval, jbyteArray jval) { void *cval = ompi_java_attrSet(env, jval); int rc = MPI_Win_set_attr((MPI_Win)win, keyval, cval); ompi_java_exceptionCheck(env, rc); }
int main(int argc, char *argv[]) { int comm_keyval, win_keyval, type_keyval; int comm_aval; int err, errs = 0; int buf, flag; MPI_Win win; void *rval; MPI_Datatype dtype; MTest_Init(&argc, &argv); MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN, MPI_COMM_NULL_DELETE_FN, &comm_keyval, 0); MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN, MPI_WIN_NULL_DELETE_FN, &win_keyval, 0); MPI_Type_create_keyval(MPI_TYPE_NULL_COPY_FN, MPI_TYPE_NULL_DELETE_FN, &type_keyval, 0); MPI_Type_contiguous(4, MPI_DOUBLE, &dtype); MPI_Win_create(&buf, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Comm_set_attr(MPI_COMM_WORLD, win_keyval, &comm_aval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_set_attr accepted win keyval\n"); } err = MPI_Comm_set_attr(MPI_COMM_WORLD, type_keyval, &comm_aval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_set_attr accepted type keyval\n"); } err = MPI_Type_set_attr(dtype, win_keyval, &comm_aval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Type_set_attr accepted win keyval\n"); } err = MPI_Type_set_attr(dtype, comm_keyval, &comm_aval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_set_attr accepted type keyval\n"); } err = MPI_Win_set_attr(win, comm_keyval, &comm_aval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Win_set_attr accepted comm keyval\n"); } err = MPI_Win_set_attr(win, type_keyval, &comm_aval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Win_set_attr accepted type keyval\n"); } err = MPI_Comm_get_attr(MPI_COMM_WORLD, win_keyval, &rval, &flag); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_get_attr accepted win keyval\n"); } err = MPI_Comm_get_attr(MPI_COMM_WORLD, type_keyval, &rval, &flag); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_get_attr accepted type keyval\n"); } err = MPI_Comm_free_keyval(&win_keyval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_free_keyval accepted win keyval\n"); } err = MPI_Comm_free_keyval(&type_keyval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_free_keyval accepted type keyval\n"); } if (win_keyval != MPI_KEYVAL_INVALID) { err = MPI_Type_free_keyval(&win_keyval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Type_free_keyval accepted win keyval\n"); } } err = MPI_Type_free_keyval(&comm_keyval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Type_free_keyval accepted comm keyval\n"); } if (type_keyval != MPI_KEYVAL_INVALID) { err = MPI_Win_free_keyval(&type_keyval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Win_free_keyval accepted type keyval\n"); } } if (comm_keyval != MPI_KEYVAL_INVALID) { err = MPI_Win_free_keyval(&comm_keyval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Win_free_keyval accepted comm keyval\n"); } } /* Now, free for real */ if (comm_keyval != MPI_KEYVAL_INVALID) { err = MPI_Comm_free_keyval(&comm_keyval); if (err != MPI_SUCCESS) { errs++; fprintf(stderr, "Could not free comm keyval\n"); } } if (type_keyval != MPI_KEYVAL_INVALID) { err = MPI_Type_free_keyval(&type_keyval); if (err != MPI_SUCCESS) { errs++; fprintf(stderr, "Could not free type keyval\n"); } } if (win_keyval != MPI_KEYVAL_INVALID) { err = MPI_Win_free_keyval(&win_keyval); if (err != MPI_SUCCESS) { errs++; fprintf(stderr, "Could not free win keyval\n"); } } MPI_Win_free(&win); MPI_Type_free(&dtype); MTest_Finalize(errs); return MTestReturnValue(errs); }
int MTestGetWin(MPI_Win * win, int mustBePassive) { static char actbuf[1024]; static char *pasbuf; char *buf; int n, rank, merr; MPI_Info info; if (mem_keyval == MPI_KEYVAL_INVALID) { /* Create the keyval */ merr = MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN, MPI_WIN_NULL_DELETE_FN, &mem_keyval, 0); if (merr) MTestPrintError(merr); } switch (win_index) { case 0: /* Active target window */ merr = MPI_Win_create(actbuf, 1024, 1, MPI_INFO_NULL, MPI_COMM_WORLD, win); if (merr) MTestPrintError(merr); winName = "active-window"; merr = MPI_Win_set_attr(*win, mem_keyval, (void *) 0); if (merr) MTestPrintError(merr); break; case 1: /* Passive target window */ merr = MPI_Alloc_mem(1024, MPI_INFO_NULL, &pasbuf); if (merr) MTestPrintError(merr); merr = MPI_Win_create(pasbuf, 1024, 1, MPI_INFO_NULL, MPI_COMM_WORLD, win); if (merr) MTestPrintError(merr); winName = "passive-window"; merr = MPI_Win_set_attr(*win, mem_keyval, (void *) 2); if (merr) MTestPrintError(merr); break; case 2: /* Active target; all windows different sizes */ merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); n = rank * 64; if (n) buf = (char *) malloc(n); else buf = 0; merr = MPI_Win_create(buf, n, 1, MPI_INFO_NULL, MPI_COMM_WORLD, win); if (merr) MTestPrintError(merr); winName = "active-all-different-win"; merr = MPI_Win_set_attr(*win, mem_keyval, (void *) 1); if (merr) MTestPrintError(merr); break; case 3: /* Active target, no locks set */ merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); n = rank * 64; if (n) buf = (char *) malloc(n); else buf = 0; merr = MPI_Info_create(&info); if (merr) MTestPrintError(merr); merr = MPI_Info_set(info, (char *) "nolocks", (char *) "true"); if (merr) MTestPrintError(merr); merr = MPI_Win_create(buf, n, 1, info, MPI_COMM_WORLD, win); if (merr) MTestPrintError(merr); merr = MPI_Info_free(&info); if (merr) MTestPrintError(merr); winName = "active-nolocks-all-different-win"; merr = MPI_Win_set_attr(*win, mem_keyval, (void *) 1); if (merr) MTestPrintError(merr); break; default: win_index = -1; } win_index++; return win_index; }