A couple of Window related error handling cleanups:
* Always invoke the error handler on MPI_COMM_WORLD for invalid windows (except in win_create, which should instead be on the given communicator). * Allow get_errhandler in addition to set_errhandler on MPI_WIN_NULL Refs trac:647 This commit was SVN r12718. The following Trac tickets were found above: Ticket 647 --> https://svn.open-mpi.org/trac/ompi/ticket/647
Этот коммит содержится в:
родитель
2a09fa2d9d
Коммит
657168a74c
@ -40,9 +40,9 @@ MPI_Fint MPI_Win_c2f(MPI_Win win)
|
|||||||
if ( MPI_PARAM_CHECK) {
|
if ( MPI_PARAM_CHECK) {
|
||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
/* Note that ompi_comm_invalid() explicitly checks for
|
/* Note that ompi_win_invalid() explicitly checks for
|
||||||
MPI_WIN_NULL, but MPI_WIN_C2F is supposed to treat
|
MPI_WIN_NULL, but MPI_WIN_C2F is supposed to treat
|
||||||
MPI_WIN_NULL as a valid communicator (and therefore return
|
MPI_WIN_NULL as a valid window (and therefore return
|
||||||
a valid Fortran handle for it). Hence, this function
|
a valid Fortran handle for it). Hence, this function
|
||||||
should not return an error if MPI_WIN_NULL is passed in.
|
should not return an error if MPI_WIN_NULL is passed in.
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ int MPI_Win_complete(MPI_Win win)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
} else if (0 == (ompi_win_get_mode(win) & OMPI_WIN_STARTED)) {
|
} else if (0 == (ompi_win_get_mode(win) & OMPI_WIN_STARTED)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_RMA_SYNC, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_RMA_SYNC, FUNC_NAME);
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ int MPI_Win_delete_attr(MPI_Win win, int win_keyval)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ int MPI_Win_fence(int assert, MPI_Win win)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
} else if (0 != (assert & ~(MPI_MODE_NOSTORE | MPI_MODE_NOPUT |
|
} else if (0 != (assert & ~(MPI_MODE_NOSTORE | MPI_MODE_NOPUT |
|
||||||
MPI_MODE_NOPRECEDE | MPI_MODE_NOSUCCEED))) {
|
MPI_MODE_NOPRECEDE | MPI_MODE_NOSUCCEED))) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ASSERT, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ASSERT, FUNC_NAME);
|
||||||
|
@ -36,11 +36,11 @@ int MPI_Win_get_errhandler(MPI_Win win, MPI_Errhandler *errhandler)
|
|||||||
{
|
{
|
||||||
if (MPI_PARAM_CHECK) {
|
if (MPI_PARAM_CHECK) {
|
||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win) && win != MPI_WIN_NULL) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG,
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG,
|
||||||
FUNC_NAME);
|
FUNC_NAME);
|
||||||
} else if (NULL == errhandler) {
|
} else if (NULL == errhandler) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG,
|
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ARG,
|
||||||
FUNC_NAME);
|
FUNC_NAME);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ int MPI_Win_get_group(MPI_Win win, MPI_Group *group)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
} else if (NULL == group) {
|
} else if (NULL == group) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ARG, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ARG, FUNC_NAME);
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ int MPI_Win_get_name(MPI_Win win, char *win_name, int *resultlen)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
} else if (NULL == win_name || NULL == resultlen) {
|
} else if (NULL == win_name || NULL == resultlen) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ARG, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ARG, FUNC_NAME);
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ int MPI_Win_lock(int lock_type, int rank, int assert, MPI_Win win)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
} else if (lock_type != MPI_LOCK_EXCLUSIVE &&
|
} else if (lock_type != MPI_LOCK_EXCLUSIVE &&
|
||||||
lock_type != MPI_LOCK_SHARED) {
|
lock_type != MPI_LOCK_SHARED) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_LOCKTYPE, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_LOCKTYPE, FUNC_NAME);
|
||||||
|
@ -41,7 +41,7 @@ int MPI_Win_post(MPI_Group group, int assert, MPI_Win win)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
} else if (0 != (assert & ~(MPI_MODE_NOCHECK | MPI_MODE_NOSTORE |
|
} else if (0 != (assert & ~(MPI_MODE_NOCHECK | MPI_MODE_NOSTORE |
|
||||||
MPI_MODE_NOPUT))) {
|
MPI_MODE_NOPUT))) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ASSERT, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ASSERT, FUNC_NAME);
|
||||||
|
@ -41,7 +41,7 @@ int MPI_Win_set_attr(MPI_Win win, int win_keyval, void *attribute_val)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ int MPI_Win_set_name(MPI_Win win, char *win_name)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
} else if (NULL == win_name) {
|
} else if (NULL == win_name) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ARG, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ARG, FUNC_NAME);
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ int MPI_Win_start(MPI_Group group, int assert, MPI_Win win)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
} else if (0 != (assert & ~(MPI_MODE_NOCHECK))) {
|
} else if (0 != (assert & ~(MPI_MODE_NOCHECK))) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ASSERT, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ASSERT, FUNC_NAME);
|
||||||
} else if (0 != (ompi_win_get_mode(win) & OMPI_WIN_ACCESS_EPOCH)) {
|
} else if (0 != (ompi_win_get_mode(win) & OMPI_WIN_ACCESS_EPOCH)) {
|
||||||
|
@ -41,7 +41,7 @@ int MPI_Win_test(MPI_Win win, int *flag)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(MPI_WIN_NULL, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
} else if (0 == (ompi_win_get_mode(win) & OMPI_WIN_POSTED)) {
|
} else if (0 == (ompi_win_get_mode(win) & OMPI_WIN_POSTED)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_RMA_SYNC, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_RMA_SYNC, FUNC_NAME);
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ int MPI_Win_unlock(int rank, MPI_Win win)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
} else if (ompi_win_peer_invalid(win, rank)) {
|
} else if (ompi_win_peer_invalid(win, rank)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_RANK, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_RANK, FUNC_NAME);
|
||||||
} else if (0 == (ompi_win_get_mode(win) & OMPI_WIN_LOCK_ACCESS)) {
|
} else if (0 == (ompi_win_get_mode(win) & OMPI_WIN_LOCK_ACCESS)) {
|
||||||
|
@ -41,7 +41,7 @@ int MPI_Win_wait(MPI_Win win)
|
|||||||
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
|
||||||
|
|
||||||
if (ompi_win_invalid(win)) {
|
if (ompi_win_invalid(win)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_WIN, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME);
|
||||||
} else if (0 == (ompi_win_get_mode(win) & OMPI_WIN_POSTED)) {
|
} else if (0 == (ompi_win_get_mode(win) & OMPI_WIN_POSTED)) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_RMA_SYNC, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_RMA_SYNC, FUNC_NAME);
|
||||||
}
|
}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user