fortran: fix MPI_Win_allocate_shared and MPI_Win_shared_query
Several problems with MPI_Win_allocate_shared and MPI_Win_shared_query were discovered in a code review. This commit fixes them: * Add _cptr versions of both subroutines in mpif-h, use-mpi-tkr, and use-mpi-ignore-tkr directories * Fix case of PMPI weak symbols for both C implementations * Add MPI and PMPI f08 implementations of both subroutines (there is no _cptr version in the mpi_f08 module) * Fixed _f08 suffix on the f08 module of both subroutines cmr=v1.8.2:ticket=trac:4736 This commit was SVN r32162. The following Trac tickets were found above: Ticket 4736 --> https://svn.open-mpi.org/trac/ompi/ticket/4736
Этот коммит содержится в:
родитель
1eb6ac5e80
Коммит
5081f958a6
@ -345,6 +345,7 @@
|
||||
#define ompi_wait_f pompi_wait_f
|
||||
#define ompi_waitsome_f pompi_waitsome_f
|
||||
#define ompi_win_allocate_shared_f pompi_win_allocate_shared_f
|
||||
#define ompi_win_allocate_shared_cptr_f pompi_win_allocate_shared_cptr_f
|
||||
#define ompi_win_call_errhandler_f pompi_win_call_errhandler_f
|
||||
#define ompi_win_complete_f pompi_win_complete_f
|
||||
#define ompi_win_create_f pompi_win_create_f
|
||||
@ -368,6 +369,7 @@
|
||||
#define ompi_win_set_errhandler_f pompi_win_set_errhandler_f
|
||||
#define ompi_win_set_name_f pompi_win_set_name_f
|
||||
#define ompi_win_shared_query_f pompi_win_shared_query_f
|
||||
#define ompi_win_shared_query_cptr_f pompi_win_shared_query_cptr_f
|
||||
#define ompi_win_start_f pompi_win_start_f
|
||||
#define ompi_win_test_f pompi_win_test_f
|
||||
#define ompi_win_unlock_f pompi_win_unlock_f
|
||||
|
@ -402,6 +402,7 @@ PN2(void, MPI_Waitany, mpi_waitany, MPI_WAITANY, (MPI_Fint *count, MPI_Fint *arr
|
||||
PN2(void, MPI_Wait, mpi_wait, MPI_WAIT, (MPI_Fint *request, MPI_Fint *status, MPI_Fint *ierr));
|
||||
PN2(void, MPI_Waitsome, mpi_waitsome, MPI_WAITSOME, (MPI_Fint *incount, MPI_Fint *array_of_requests, MPI_Fint *outcount, MPI_Fint *array_of_indices, MPI_Fint *array_of_statuses, MPI_Fint *ierr));
|
||||
PN2(void, MPI_Win_allocate_shared, mpi_win_allocate_shared, MPI_WIN_ALLOCATE_SHARED, (MPI_Aint *size, MPI_Fint *disp_unit, MPI_Fint *info, MPI_Fint *comm, char *baseptr, MPI_Fint *win, MPI_Fint *ierr));
|
||||
PN2(void, MPI_Win_allocate_shared_cptr, mpi_win_allocate_shared_cptr, MPI_WIN_ALLOCATE_SHARED_CPTR, (MPI_Aint *size, MPI_Fint *disp_unit, MPI_Fint *info, MPI_Fint *comm, char *baseptr, MPI_Fint *win, MPI_Fint *ierr));
|
||||
PN2(void, MPI_Win_call_errhandler, mpi_win_call_errhandler, MPI_WIN_CALL_ERRHANDLER, (MPI_Fint *win, MPI_Fint *errorcode, MPI_Fint *ierr));
|
||||
PN2(void, MPI_Win_complete, mpi_win_complete, MPI_WIN_COMPLETE, (MPI_Fint *win, MPI_Fint *ierr));
|
||||
PN2(void, MPI_Win_create, mpi_win_create, MPI_WIN_CREATE, (char *base, MPI_Aint *size, MPI_Fint *disp_unit, MPI_Fint *info, MPI_Fint *comm, MPI_Fint *win, MPI_Fint *ierr));
|
||||
@ -425,6 +426,7 @@ PN2(void, MPI_Win_set_attr, mpi_win_set_attr, MPI_WIN_SET_ATTR, (MPI_Fint *win,
|
||||
PN2(void, MPI_Win_set_errhandler, mpi_win_set_errhandler, MPI_WIN_SET_ERRHANDLER, (MPI_Fint *win, MPI_Fint *errhandler, MPI_Fint *ierr));
|
||||
PN2(void, MPI_Win_set_name, mpi_win_set_name, MPI_WIN_SET_NAME, (MPI_Fint *win, char *win_name, MPI_Fint *ierr, int name_len));
|
||||
PN2(void, MPI_Win_shared_query, mpi_win_shared_query, MPI_WIN_SHARED_QUERY, (MPI_Fint *win, MPI_Fint *rank, MPI_Aint *size, MPI_Fint *disp_unit, char *baseptr, MPI_Fint *ierr));
|
||||
PN2(void, MPI_Win_shared_query_cptr, mpi_win_shared_query_cptr, MPI_WIN_SHARED_QUERY_CPTR, (MPI_Fint *win, MPI_Fint *rank, MPI_Aint *size, MPI_Fint *disp_unit, char *baseptr, MPI_Fint *ierr));
|
||||
PN2(void, MPI_Win_start, mpi_win_start, MPI_WIN_START, (MPI_Fint *group, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr));
|
||||
PN2(void, MPI_Win_test, mpi_win_test, MPI_WIN_TEST, (MPI_Fint *win, ompi_fortran_logical_t *flag, MPI_Fint *ierr));
|
||||
PN2(void, MPI_Win_unlock, mpi_win_unlock, MPI_WIN_UNLOCK, (MPI_Fint *rank, MPI_Fint *win, MPI_Fint *ierr));
|
||||
|
@ -27,8 +27,16 @@
|
||||
#pragma weak pmpi_win_allocate_shared_ = ompi_win_allocate_shared_f
|
||||
#pragma weak pmpi_win_allocate_shared__ = ompi_win_allocate_shared_f
|
||||
|
||||
#pragma weak Pmpi_win_allocate_shared_f = ompi_win_allocate_shared_f
|
||||
#pragma weak Pmpi_win_allocate_shared_f08 = ompi_win_allocate_shared_f
|
||||
#pragma weak PMPI_Win_allocate_shared_f = ompi_win_allocate_shared_f
|
||||
#pragma weak PMPI_Win_allocate_shared_f08 = ompi_win_allocate_shared_f
|
||||
|
||||
#pragma weak PMPI_WIN_ALLOCATE_SHARED_CPTR = ompi_win_allocate_shared_f
|
||||
#pragma weak pmpi_win_allocate_shared_cptr = ompi_win_allocate_shared_f
|
||||
#pragma weak pmpi_win_allocate_shared_cptr_ = ompi_win_allocate_shared_f
|
||||
#pragma weak pmpi_win_allocate_shared_cptr__ = ompi_win_allocate_shared_f
|
||||
|
||||
#pragma weak PMPI_Win_allocate_shared_cptr_f = ompi_win_allocate_shared_f
|
||||
#pragma weak PMPI_Win_allocate_shared_cptr_f08 = ompi_win_allocate_shared_f
|
||||
#elif OMPI_PROFILE_LAYER
|
||||
OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_ALLOCATE_SHARED,
|
||||
pmpi_win_allocate_shared,
|
||||
@ -39,6 +47,16 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_ALLOCATE_SHARED,
|
||||
MPI_Fint *info, MPI_Fint *comm, char *baseptr,
|
||||
MPI_Fint *win, MPI_Fint *ierr),
|
||||
(size, disp_unit, info, comm, baseptr, win, ierr) )
|
||||
|
||||
OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_ALLOCATE_SHARED_CPTR,
|
||||
pmpi_win_allocate_shared_cptr,
|
||||
pmpi_win_allocate_shared_cptr_,
|
||||
pmpi_win_allocate_shared_cptr__,
|
||||
pompi_win_allocate_shared_cptr_f,
|
||||
(MPI_Aint *size, MPI_Fint *disp_unit,
|
||||
MPI_Fint *info, MPI_Fint *comm, char *baseptr,
|
||||
MPI_Fint *win, MPI_Fint *ierr),
|
||||
(size, disp_unit, info, comm, baseptr, win, ierr) )
|
||||
#endif
|
||||
|
||||
#if OPAL_HAVE_WEAK_SYMBOLS
|
||||
@ -47,8 +65,16 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_ALLOCATE_SHARED,
|
||||
#pragma weak mpi_win_allocate_shared_ = ompi_win_allocate_shared_f
|
||||
#pragma weak mpi_win_allocate_shared__ = ompi_win_allocate_shared_f
|
||||
|
||||
#pragma weak mpi_win_allocate_shared_f = ompi_win_allocate_shared_f
|
||||
#pragma weak mpi_win_allocate_shared_f08 = ompi_win_allocate_shared_f
|
||||
#pragma weak MPI_Win_allocate_shared_f = ompi_win_allocate_shared_f
|
||||
#pragma weak MPI_Win_allocate_shared_f08 = ompi_win_allocate_shared_f
|
||||
|
||||
#pragma weak MPI_WIN_ALLOCATE_SHARED_CPTR = ompi_win_allocate_shared_f
|
||||
#pragma weak mpi_win_allocate_shared_cptr = ompi_win_allocate_shared_f
|
||||
#pragma weak mpi_win_allocate_shared_cptr_ = ompi_win_allocate_shared_f
|
||||
#pragma weak mpi_win_allocate_shared_cptr__ = ompi_win_allocate_shared_f
|
||||
|
||||
#pragma weak MPI_Win_allocate_shared_cptr_f = ompi_win_allocate_shared_f
|
||||
#pragma weak MPI_Win_allocate_shared_cptr_f08 = ompi_win_allocate_shared_f
|
||||
#endif
|
||||
|
||||
#if ! OPAL_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER
|
||||
@ -61,6 +87,16 @@ OMPI_GENERATE_F77_BINDINGS (MPI_WIN_ALLOCATE_SHARED,
|
||||
MPI_Fint *info, MPI_Fint *comm, char *baseptr,
|
||||
MPI_Fint *win, MPI_Fint *ierr),
|
||||
(size, disp_unit, info, comm, baseptr, win, ierr) )
|
||||
|
||||
OMPI_GENERATE_F77_BINDINGS (MPI_WIN_ALLOCATE_SHARED_CPTR,
|
||||
mpi_win_allocate_shared_cptr,
|
||||
mpi_win_allocate_shared_cptr_,
|
||||
mpi_win_allocate_shared_cptr__,
|
||||
ompi_win_allocate_shared_cptr_f,
|
||||
(MPI_Aint *size, MPI_Fint *disp_unit,
|
||||
MPI_Fint *info, MPI_Fint *comm, char *baseptr,
|
||||
MPI_Fint *win, MPI_Fint *ierr),
|
||||
(size, disp_unit, info, comm, baseptr, win, ierr) )
|
||||
#endif
|
||||
|
||||
|
||||
@ -86,3 +122,16 @@ void ompi_win_allocate_shared_f(MPI_Aint *size, MPI_Fint *disp_unit,
|
||||
*win = MPI_Win_c2f(c_win);
|
||||
if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
|
||||
}
|
||||
|
||||
/*
|
||||
* Note that MPI-3 mandates a second form of the
|
||||
* MPI_Win_allocate_shared interface -- one that has a "_cptr" suffix.
|
||||
*/
|
||||
void ompi_win_allocate_shared_cptr_f(MPI_Aint *size, MPI_Fint *disp_unit,
|
||||
MPI_Fint *info, MPI_Fint *comm,
|
||||
char *baseptr,
|
||||
MPI_Fint *win, MPI_Fint *ierr)
|
||||
{
|
||||
ompi_win_allocate_shared_f(size, disp_unit, info, comm, baseptr,
|
||||
win, ierr);
|
||||
}
|
||||
|
@ -27,8 +27,16 @@
|
||||
#pragma weak pmpi_win_shared_query_ = ompi_win_shared_query_f
|
||||
#pragma weak pmpi_win_shared_query__ = ompi_win_shared_query_f
|
||||
|
||||
#pragma weak Pmpi_win_shared_query_f = ompi_win_shared_query_f
|
||||
#pragma weak Pmpi_win_shared_query_f08 = ompi_win_shared_query_f
|
||||
#pragma weak PMPI_Win_shared_query_f = ompi_win_shared_query_f
|
||||
#pragma weak PMPI_Win_shared_query_f08 = ompi_win_shared_query_f
|
||||
|
||||
#pragma weak PMPI_WIN_SHARED_QUERY_CPTR = ompi_win_shared_query_f
|
||||
#pragma weak pmpi_win_shared_query_cptr = ompi_win_shared_query_f
|
||||
#pragma weak pmpi_win_shared_query_cptr_ = ompi_win_shared_query_f
|
||||
#pragma weak pmpi_win_shared_query_cptr__ = ompi_win_shared_query_f
|
||||
|
||||
#pragma weak PMPI_Win_shared_query_cptr_f = ompi_win_shared_query_f
|
||||
#pragma weak PMPI_Win_shared_query_cptr_f08 = ompi_win_shared_query_f
|
||||
#elif OMPI_PROFILE_LAYER
|
||||
OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_SHARED_QUERY,
|
||||
pmpi_win_shared_query,
|
||||
@ -39,6 +47,16 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_SHARED_QUERY,
|
||||
MPI_Fint *disp_unit, char *baseptr,
|
||||
MPI_Fint *ierr),
|
||||
(win, rank, size, disp_unit, baseptr, ierr) )
|
||||
|
||||
OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_SHARED_QUERY_CPTR,
|
||||
pmpi_win_shared_query_cptr,
|
||||
pmpi_win_shared_query_cptr_,
|
||||
pmpi_win_shared_query_cptr__,
|
||||
pompi_win_shared_query_cptr_f,
|
||||
(MPI_Fint *win, MPI_Fint *rank, MPI_Aint *size,
|
||||
MPI_Fint *disp_unit, char *baseptr,
|
||||
MPI_Fint *ierr),
|
||||
(win, rank, size, disp_unit, baseptr, ierr) )
|
||||
#endif
|
||||
|
||||
#if OPAL_HAVE_WEAK_SYMBOLS
|
||||
@ -47,8 +65,16 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_SHARED_QUERY,
|
||||
#pragma weak mpi_win_shared_query_ = ompi_win_shared_query_f
|
||||
#pragma weak mpi_win_shared_query__ = ompi_win_shared_query_f
|
||||
|
||||
#pragma weak mpi_win_shared_query_f = ompi_win_shared_query_f
|
||||
#pragma weak mpi_win_shared_query_f08 = ompi_win_shared_query_f
|
||||
#pragma weak MPI_Win_shared_query_f = ompi_win_shared_query_f
|
||||
#pragma weak MPI_Win_shared_query_f08 = ompi_win_shared_query_f
|
||||
|
||||
#pragma weak MPI_WIN_SHARED_QUERY_CPTR = ompi_win_shared_query_f
|
||||
#pragma weak mpi_win_shared_query_cptr = ompi_win_shared_query_f
|
||||
#pragma weak mpi_win_shared_query_cptr_ = ompi_win_shared_query_f
|
||||
#pragma weak mpi_win_shared_query_cptr__ = ompi_win_shared_query_f
|
||||
|
||||
#pragma weak MPI_Win_shared_query_cptr_f = ompi_win_shared_query_f
|
||||
#pragma weak MPI_Win_shared_query_cptr_f08 = ompi_win_shared_query_f
|
||||
#endif
|
||||
|
||||
#if ! OPAL_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER
|
||||
@ -61,6 +87,16 @@ OMPI_GENERATE_F77_BINDINGS (MPI_WIN_SHARED_QUERY,
|
||||
MPI_Fint *disp_unit, char *baseptr,
|
||||
MPI_Fint *ierr),
|
||||
(win, rank, size, disp_unit, baseptr, ierr) )
|
||||
|
||||
OMPI_GENERATE_F77_BINDINGS (MPI_WIN_SHARED_QUERY_CPTR,
|
||||
mpi_win_shared_query_cptr,
|
||||
mpi_win_shared_query_cptr_,
|
||||
mpi_win_shared_query_cptr__,
|
||||
ompi_win_shared_query_cptr_f,
|
||||
(MPI_Fint *win, MPI_Fint *rank, MPI_Aint *size,
|
||||
MPI_Fint *disp_unit, char *baseptr,
|
||||
MPI_Fint *ierr),
|
||||
(win, rank, size, disp_unit, baseptr, ierr) )
|
||||
#endif
|
||||
|
||||
|
||||
@ -81,3 +117,15 @@ void ompi_win_shared_query_f(MPI_Fint *win, MPI_Fint *rank, MPI_Aint *size,
|
||||
OMPI_FINT_2_INT(disp_unit), baseptr);
|
||||
if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
|
||||
}
|
||||
|
||||
/*
|
||||
* Note that MPI-3 mandates a second form of the MPI_Win_shared_query
|
||||
* interface -- one that has a "_cptr" suffix.
|
||||
*/
|
||||
void ompi_win_shared_query_cptr_f(MPI_Fint *win, MPI_Fint *rank, MPI_Aint *size,
|
||||
MPI_Fint *disp_unit, char *baseptr,
|
||||
MPI_Fint *ierr)
|
||||
{
|
||||
ompi_win_shared_query_f(win, rank, size, disp_unit, baseptr, ierr);
|
||||
}
|
||||
|
||||
|
@ -282,6 +282,7 @@ mpi_api_files = \
|
||||
waitany_f08.F90 \
|
||||
wait_f08.F90 \
|
||||
waitsome_f08.F90 \
|
||||
win_allocate_shared_f08.F90 \
|
||||
win_call_errhandler_f08.F90 \
|
||||
win_complete_f08.F90 \
|
||||
win_create_errhandler_f08.F90 \
|
||||
@ -304,6 +305,7 @@ mpi_api_files = \
|
||||
win_set_attr_f08.F90 \
|
||||
win_set_errhandler_f08.F90 \
|
||||
win_set_name_f08.F90 \
|
||||
win_shared_query_f08.F90 \
|
||||
win_start_f08.F90 \
|
||||
win_test_f08.F90 \
|
||||
win_unlock_f08.F90 \
|
||||
@ -622,6 +624,7 @@ pmpi_api_files = \
|
||||
profile/pwaitany_f08.F90 \
|
||||
profile/pwait_f08.F90 \
|
||||
profile/pwaitsome_f08.F90 \
|
||||
profile/pwin_allocate_shared_f08.F90 \
|
||||
profile/pwin_call_errhandler_f08.F90 \
|
||||
profile/pwin_complete_f08.F90 \
|
||||
profile/pwin_create_errhandler_f08.F90 \
|
||||
@ -644,6 +647,7 @@ pmpi_api_files = \
|
||||
profile/pwin_set_attr_f08.F90 \
|
||||
profile/pwin_set_errhandler_f08.F90 \
|
||||
profile/pwin_set_name_f08.F90 \
|
||||
profile/pwin_shared_query_f08.F90 \
|
||||
profile/pwin_start_f08.F90 \
|
||||
profile/pwin_test_f08.F90 \
|
||||
profile/pwin_unlock_f08.F90 \
|
||||
|
@ -1573,6 +1573,19 @@ subroutine ompi_type_set_name_f(type,type_name,ierror,type_name_len) &
|
||||
INTEGER, VALUE, INTENT(IN) :: type_name_len
|
||||
end subroutine ompi_type_set_name_f
|
||||
|
||||
subroutine ompi_win_allocate_shared_f(size, disp_unit, info, comm, &
|
||||
baseptr, win, ierror) BIND(C, name="ompi_win_allocate_shared_f")
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||
use :: mpi_f08_types, only : MPI_ADDRESS_KIND
|
||||
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size
|
||||
INTEGER, INTENT(IN) :: disp_unit
|
||||
INTEGER, INTENT(IN) :: info
|
||||
INTEGER, INTENT(IN) :: comm
|
||||
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||
INTEGER, INTENT(OUT) :: win
|
||||
INTEGER, INTENT(OUT) :: ierror
|
||||
end subroutine ompi_win_allocate_shared_f
|
||||
|
||||
subroutine ompi_win_create_keyval_f(win_copy_attr_fn,win_delete_attr_fn, &
|
||||
win_keyval,extra_state,ierror) &
|
||||
BIND(C, name="ompi_win_create_keyval_f")
|
||||
@ -2413,6 +2426,18 @@ subroutine ompi_win_post_f(group,assert,win,ierror) &
|
||||
INTEGER, INTENT(OUT) :: ierror
|
||||
end subroutine ompi_win_post_f
|
||||
|
||||
subroutine ompi_win_shared_query_f(win, rank, size, disp_unit, baseptr,&
|
||||
ierror) BIND(C, name="ompi_win_shared_query_f")
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||
use :: mpi_f08_types, only : MPI_ADDRESS_KIND
|
||||
INTEGER, INTENT(IN) :: win
|
||||
INTEGER, INTENT(IN) :: rank
|
||||
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(OUT) :: size
|
||||
INTEGER, INTENT(OUT) :: disp_unit
|
||||
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||
end subroutine ompi_win_shared_query_f
|
||||
|
||||
subroutine ompi_win_start_f(group,assert,win,ierror) &
|
||||
BIND(C, name="ompi_win_start_f")
|
||||
implicit none
|
||||
|
@ -2104,7 +2104,7 @@ end subroutine MPI_Type_set_name_f08
|
||||
end interface MPI_Type_set_name
|
||||
|
||||
interface MPI_Win_allocate_shared
|
||||
subroutine MPI_Win_allocate_shared(size, disp_unit, info, comm, &
|
||||
subroutine MPI_Win_allocate_shared_f08(size, disp_unit, info, comm, &
|
||||
baseptr, win, ierror)
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||
use :: mpi_f08_types, only : MPI_Info, MPI_Comm, MPI_Win, MPI_ADDRESS_KIND
|
||||
@ -2115,7 +2115,7 @@ subroutine MPI_Win_allocate_shared(size, disp_unit, info, comm, &
|
||||
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||
TYPE(MPI_Win), INTENT(OUT) :: win
|
||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||
end subroutine MPI_Win_allocate_shared
|
||||
end subroutine MPI_Win_allocate_shared_f08
|
||||
end interface
|
||||
|
||||
interface MPI_Win_create_keyval
|
||||
@ -3239,7 +3239,7 @@ end subroutine MPI_Win_post_f08
|
||||
end interface MPI_Win_post
|
||||
|
||||
interface MPI_Win_shared_query
|
||||
subroutine MPI_Win_shared_query(win, rank, size, disp_unit, baseptr,&
|
||||
subroutine MPI_Win_shared_query_f08(win, rank, size, disp_unit, baseptr,&
|
||||
ierror)
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||
use :: mpi_f08_types, only : MPI_Win, MPI_ADDRESS_KIND
|
||||
@ -3249,7 +3249,7 @@ subroutine MPI_Win_shared_query(win, rank, size, disp_unit, baseptr,&
|
||||
INTEGER, INTENT(OUT) :: disp_unit
|
||||
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||
end subroutine MPI_Win_shared_query
|
||||
end subroutine MPI_Win_shared_query_f08
|
||||
end interface
|
||||
|
||||
interface MPI_Win_start
|
||||
|
@ -1407,6 +1407,19 @@ subroutine pompi_type_set_name_f(type,type_name,ierror,type_name_len) &
|
||||
INTEGER, VALUE, INTENT(IN) :: type_name_len
|
||||
end subroutine pompi_type_set_name_f
|
||||
|
||||
subroutine pompi_win_allocate_shared_f(size, disp_unit, info, comm, &
|
||||
baseptr, win, ierror) BIND(C, name="ompi_win_allocate_shared_f")
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||
use :: mpi_f08_types, only : MPI_ADDRESS_KIND
|
||||
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size
|
||||
INTEGER, INTENT(IN) :: disp_unit
|
||||
INTEGER, INTENT(IN) :: info
|
||||
INTEGER, INTENT(IN) :: comm
|
||||
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||
INTEGER, INTENT(OUT) :: win
|
||||
INTEGER, INTENT(OUT) :: ierror
|
||||
end subroutine pompi_win_allocate_shared_f
|
||||
|
||||
subroutine pompi_win_create_keyval_f(win_copy_attr_fn,win_delete_attr_fn, &
|
||||
win_keyval,extra_state,ierror) &
|
||||
BIND(C, name="pompi_win_create_keyval_f")
|
||||
@ -2250,6 +2263,18 @@ subroutine pompi_win_post_f(group,assert,win,ierror) &
|
||||
INTEGER, INTENT(OUT) :: ierror
|
||||
end subroutine pompi_win_post_f
|
||||
|
||||
subroutine pompi_win_shared_query_f(win, rank, size, disp_unit, baseptr,&
|
||||
ierror) BIND(C, name="ompi_win_shared_query_f")
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||
use :: mpi_f08_types, only : MPI_ADDRESS_KIND
|
||||
INTEGER, INTENT(IN) :: win
|
||||
INTEGER, INTENT(IN) :: rank
|
||||
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(OUT) :: size
|
||||
INTEGER, INTENT(OUT) :: disp_unit
|
||||
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||
end subroutine pompi_win_shared_query_f
|
||||
|
||||
subroutine pompi_win_start_f(group,assert,win,ierror) &
|
||||
BIND(C, name="pompi_win_start_f")
|
||||
implicit none
|
||||
|
@ -0,0 +1,26 @@
|
||||
! -*- f90 -*-
|
||||
!
|
||||
! Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved.
|
||||
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||||
! All Rights reserved.
|
||||
! $COPYRIGHT$
|
||||
|
||||
subroutine PMPI_Win_allocate_shared_f08(size, disp_unit, info, comm, &
|
||||
baseptr, win, ierror)
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||
use :: mpi_f08_types, only : MPI_Info, MPI_Comm, MPI_Win, MPI_ADDRESS_KIND
|
||||
use :: mpi_f08, only : ompi_win_allocate_shared_f
|
||||
implicit none
|
||||
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size
|
||||
INTEGER, INTENT(IN) :: disp_unit
|
||||
TYPE(MPI_Info), INTENT(IN) :: info
|
||||
TYPE(MPI_Comm), INTENT(IN) :: comm
|
||||
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||
TYPE(MPI_Win), INTENT(OUT) :: win
|
||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||
integer :: c_ierror
|
||||
|
||||
call ompi_win_allocate_shared_f(size, disp_unit, info%MPI_VAL, comm%MPI_VAL, baseptr, win%MPI_VAL, c_ierror)
|
||||
if (present(ierror)) ierror = c_ierror
|
||||
|
||||
end subroutine PMPI_Win_allocate_shared_f08
|
25
ompi/mpi/fortran/use-mpi-f08/profile/pwin_shared_query_f08.F90
Обычный файл
25
ompi/mpi/fortran/use-mpi-f08/profile/pwin_shared_query_f08.F90
Обычный файл
@ -0,0 +1,25 @@
|
||||
! -*- f90 -*-
|
||||
!
|
||||
! Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved.
|
||||
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||||
! All Rights reserved.
|
||||
! $COPYRIGHT$
|
||||
|
||||
subroutine PMPI_Win_shared_query_f08(win, rank, size, disp_unit, baseptr,&
|
||||
ierror)
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||
use :: mpi_f08_types, only : MPI_Win, MPI_ADDRESS_KIND
|
||||
use :: mpi_f08, only : ompi_win_shared_query_f
|
||||
implicit none
|
||||
TYPE(MPI_Win), INTENT(IN) :: win
|
||||
INTEGER, INTENT(IN) :: rank
|
||||
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(OUT) :: size
|
||||
INTEGER, INTENT(OUT) :: disp_unit
|
||||
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||
integer :: c_ierror
|
||||
|
||||
call ompi_win_shared_query_f(win%MPI_VAL, rank, size, disp_unit, baseptr, c_ierror)
|
||||
if (present(ierror)) ierror = c_ierror
|
||||
|
||||
end subroutine PMPI_Win_shared_query_f08
|
26
ompi/mpi/fortran/use-mpi-f08/win_allocate_shared_f08.F90
Обычный файл
26
ompi/mpi/fortran/use-mpi-f08/win_allocate_shared_f08.F90
Обычный файл
@ -0,0 +1,26 @@
|
||||
! -*- f90 -*-
|
||||
!
|
||||
! Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved.
|
||||
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||||
! All Rights reserved.
|
||||
! $COPYRIGHT$
|
||||
|
||||
subroutine MPI_Win_allocate_shared_f08(size, disp_unit, info, comm, &
|
||||
baseptr, win, ierror)
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||
use :: mpi_f08_types, only : MPI_Info, MPI_Comm, MPI_Win, MPI_ADDRESS_KIND
|
||||
use :: mpi_f08, only : ompi_win_allocate_shared_f
|
||||
implicit none
|
||||
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size
|
||||
INTEGER, INTENT(IN) :: disp_unit
|
||||
TYPE(MPI_Info), INTENT(IN) :: info
|
||||
TYPE(MPI_Comm), INTENT(IN) :: comm
|
||||
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||
TYPE(MPI_Win), INTENT(OUT) :: win
|
||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||
integer :: c_ierror
|
||||
|
||||
call ompi_win_allocate_shared_f(size, disp_unit, info%MPI_VAL, comm%MPI_VAL, baseptr, win%MPI_VAL, c_ierror)
|
||||
if (present(ierror)) ierror = c_ierror
|
||||
|
||||
end subroutine MPI_Win_allocate_shared_f08
|
25
ompi/mpi/fortran/use-mpi-f08/win_shared_query_f08.F90
Обычный файл
25
ompi/mpi/fortran/use-mpi-f08/win_shared_query_f08.F90
Обычный файл
@ -0,0 +1,25 @@
|
||||
! -*- f90 -*-
|
||||
!
|
||||
! Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved.
|
||||
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||||
! All Rights reserved.
|
||||
! $COPYRIGHT$
|
||||
|
||||
subroutine MPI_Win_shared_query_f08(win, rank, size, disp_unit, baseptr,&
|
||||
ierror)
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||
use :: mpi_f08_types, only : MPI_Win, MPI_ADDRESS_KIND
|
||||
use :: mpi_f08, only : ompi_win_shared_query_f
|
||||
implicit none
|
||||
TYPE(MPI_Win), INTENT(IN) :: win
|
||||
INTEGER, INTENT(IN) :: rank
|
||||
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(OUT) :: size
|
||||
INTEGER, INTENT(OUT) :: disp_unit
|
||||
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||
integer :: c_ierror
|
||||
|
||||
call ompi_win_shared_query_f(win%MPI_VAL, rank, size, disp_unit, baseptr, c_ierror)
|
||||
if (present(ierror)) ierror = c_ierror
|
||||
|
||||
end subroutine MPI_Win_shared_query_f08
|
@ -8486,6 +8486,18 @@ subroutine MPI_Win_shared_query(win, rank, size, disp_unit, baseptr,&
|
||||
integer, intent(out) :: ierror
|
||||
end subroutine MPI_Win_shared_query
|
||||
|
||||
subroutine MPI_Win_shared_query_cptr(win, rank, size, disp_unit, baseptr,&
|
||||
ierror)
|
||||
use, intrinsic :: iso_c_binding, only : c_ptr
|
||||
include 'mpif-config.h'
|
||||
integer, intent(in) :: win
|
||||
integer, intent(in) :: rank
|
||||
integer(KIND=MPI_ADDRESS_KIND), intent(out) :: size
|
||||
integer, intent(out) :: disp_unit
|
||||
type(C_PTR), intent(out) :: baseptr
|
||||
integer, intent(out) :: ierror
|
||||
end subroutine MPI_Win_shared_query_cptr
|
||||
|
||||
end interface
|
||||
|
||||
|
||||
|
@ -2895,6 +2895,15 @@ subroutine MPI_Win_allocate_shared(size, disp_unit, info, comm, &
|
||||
integer, intent(out) :: ierror
|
||||
end subroutine MPI_Win_allocate_shared
|
||||
|
||||
subroutine MPI_Win_allocate_shared_cptr(size, disp_unit, info, comm, &
|
||||
baseptr, win, ierror)
|
||||
use, intrinsic :: iso_c_binding, only : c_ptr
|
||||
include 'mpif-config.h'
|
||||
integer :: disp_unit, info, comm, win, ierror
|
||||
integer(KIND=MPI_ADDRESS_KIND) :: size
|
||||
type(C_PTR) :: baseptr
|
||||
end subroutine MPI_Win_allocate_shared_cptr
|
||||
|
||||
end interface
|
||||
|
||||
|
||||
@ -3107,6 +3116,18 @@ subroutine MPI_Win_shared_query(win, rank, size, disp_unit, baseptr,&
|
||||
integer, intent(out) :: ierror
|
||||
end subroutine MPI_Win_shared_query
|
||||
|
||||
subroutine MPI_Win_shared_query_cptr(win, rank, size, disp_unit, baseptr,&
|
||||
ierror)
|
||||
use, intrinsic :: iso_c_binding, only : c_ptr
|
||||
include 'mpif-config.h'
|
||||
integer, intent(in) :: win
|
||||
integer, intent(in) :: rank
|
||||
integer(KIND=MPI_ADDRESS_KIND), intent(out) :: size
|
||||
integer, intent(out) :: disp_unit
|
||||
type(C_PTR), intent(out) :: baseptr
|
||||
integer, intent(out) :: ierror
|
||||
end subroutine MPI_Win_shared_query_cptr
|
||||
|
||||
end interface
|
||||
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user