diff --git a/ompi/mpi/fortran/mpif-h/Makefile.am b/ompi/mpi/fortran/mpif-h/Makefile.am index 0ec3f8a639..5e3db4519c 100644 --- a/ompi/mpi/fortran/mpif-h/Makefile.am +++ b/ompi/mpi/fortran/mpif-h/Makefile.am @@ -358,14 +358,17 @@ libmpi_mpifh_la_SOURCES += \ win_get_group_f.c \ win_get_name_f.c \ win_lock_f.c \ + win_lock_all_f.c \ win_post_f.c \ win_set_attr_f.c \ win_set_errhandler_f.c \ win_set_name_f.c \ win_shared_query_f.c \ win_start_f.c \ + win_sync_f.c \ win_test_f.c \ win_unlock_f.c \ + win_unlock_all_f.c \ win_wait_f.c \ win_flush_f.c \ win_flush_all_f.c \ diff --git a/ompi/mpi/fortran/mpif-h/profile/Makefile.am b/ompi/mpi/fortran/mpif-h/profile/Makefile.am index 0edfd6d3b4..64cf806ae9 100644 --- a/ompi/mpi/fortran/mpif-h/profile/Makefile.am +++ b/ompi/mpi/fortran/mpif-h/profile/Makefile.am @@ -329,14 +329,17 @@ nodist_libmpi_mpifh_pmpi_la_SOURCES = \ pwin_get_group_f.c \ pwin_get_name_f.c \ pwin_lock_f.c \ + pwin_lock_all_f.c \ pwin_post_f.c \ pwin_set_attr_f.c \ pwin_set_errhandler_f.c \ pwin_set_name_f.c \ pwin_shared_query_f.c \ pwin_start_f.c \ + pwin_sync_f.c \ pwin_test_f.c \ pwin_unlock_f.c \ + pwin_unlock_all_f.c \ pwin_wait_f.c \ pwin_flush_f.c \ pwin_flush_all_f.c \ diff --git a/ompi/mpi/fortran/mpif-h/profile/defines.h b/ompi/mpi/fortran/mpif-h/profile/defines.h index 6adedaa8a3..43b21b75fa 100644 --- a/ompi/mpi/fortran/mpif-h/profile/defines.h +++ b/ompi/mpi/fortran/mpif-h/profile/defines.h @@ -364,6 +364,7 @@ #define ompi_win_get_group_f pompi_win_get_group_f #define ompi_win_get_name_f pompi_win_get_name_f #define ompi_win_lock_f pompi_win_lock_f +#define ompi_win_lock_all_f pompi_win_lock_all_f #define ompi_win_post_f pompi_win_post_f #define ompi_win_set_attr_f pompi_win_set_attr_f #define ompi_win_set_errhandler_f pompi_win_set_errhandler_f @@ -371,8 +372,10 @@ #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_sync_f pompi_win_sync_f #define ompi_win_test_f pompi_win_test_f #define ompi_win_unlock_f pompi_win_unlock_f +#define ompi_win_unlock_all_f pompi_win_unlock_all_f #define ompi_win_wait_f pompi_win_wait_f #define ompi_wtick_f pompi_wtick_f #define ompi_wtime_f pompi_wtime_f diff --git a/ompi/mpi/fortran/mpif-h/prototypes_mpi.h b/ompi/mpi/fortran/mpif-h/prototypes_mpi.h index f393bb782c..f3115c3833 100644 --- a/ompi/mpi/fortran/mpif-h/prototypes_mpi.h +++ b/ompi/mpi/fortran/mpif-h/prototypes_mpi.h @@ -421,6 +421,7 @@ PN2(void, MPI_Win_get_errhandler, mpi_win_get_errhandler, MPI_WIN_GET_ERRHANDLER PN2(void, MPI_Win_get_group, mpi_win_get_group, MPI_WIN_GET_GROUP, (MPI_Fint *win, MPI_Fint *group, MPI_Fint *ierr)); PN2(void, MPI_Win_get_name, mpi_win_get_name, MPI_WIN_GET_NAME, (MPI_Fint *win, char *win_name, MPI_Fint *resultlen, MPI_Fint *ierr, int name_len)); PN2(void, MPI_Win_lock, mpi_win_lock, MPI_WIN_LOCK, (MPI_Fint *lock_type, MPI_Fint *rank, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr)); +PN2(void, MPI_Win_lock_all, mpi_win_lock_all, MPI_WIN_LOCK_ALL, (MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr)); PN2(void, MPI_Win_post, mpi_win_post, MPI_WIN_POST, (MPI_Fint *group, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr)); PN2(void, MPI_Win_set_attr, mpi_win_set_attr, MPI_WIN_SET_ATTR, (MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr)); PN2(void, MPI_Win_set_errhandler, mpi_win_set_errhandler, MPI_WIN_SET_ERRHANDLER, (MPI_Fint *win, MPI_Fint *errhandler, MPI_Fint *ierr)); @@ -428,8 +429,10 @@ PN2(void, MPI_Win_set_name, mpi_win_set_name, MPI_WIN_SET_NAME, (MPI_Fint *win, 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_sync, mpi_win_sync, MPI_WIN_SYNC, (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)); +PN2(void, MPI_Win_unlock_all, mpi_win_unlock_all, MPI_WIN_UNLOCK_ALL, (MPI_Fint *win, MPI_Fint *ierr)); PN2(void, MPI_Win_wait, mpi_win_wait, MPI_WIN_WAIT, (MPI_Fint *win, MPI_Fint *ierr)); PN2(double, MPI_Wtick, mpi_wtick, MPI_WTICK, (void)); PN2(double, MPI_Wtime, mpi_wtime, MPI_WTIME, (void)); diff --git a/ompi/mpi/fortran/mpif-h/win_lock_all_f.c b/ompi/mpi/fortran/mpif-h/win_lock_all_f.c new file mode 100644 index 0000000000..fbe1a1b49e --- /dev/null +++ b/ompi/mpi/fortran/mpif-h/win_lock_all_f.c @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/fortran/mpif-h/bindings.h" + +#if OPAL_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER +#pragma weak PMPI_WIN_LOCK_ALL = ompi_win_lock_all_f +#pragma weak pmpi_win_lock_all = ompi_win_lock_all_f +#pragma weak pmpi_win_lock_all_ = ompi_win_lock_all_f +#pragma weak pmpi_win_lock_all__ = ompi_win_lock_all_f + +#pragma weak PMPI_Win_lock_all_f = ompi_win_lock_all_f +#pragma weak PMPI_Win_lock_all_f08 = ompi_win_lock_all_f +#elif OMPI_PROFILE_LAYER +OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_LOCK_ALL, + pmpi_win_lock_all, + pmpi_win_lock_all_, + pmpi_win_lock_all__, + pompi_win_lock_all_f, + (MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr), + (assert, win, ierr) ) +#endif + +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_WIN_LOCK_ALL = ompi_win_lock_all_f +#pragma weak mpi_win_lock_all = ompi_win_lock_all_f +#pragma weak mpi_win_lock_all_ = ompi_win_lock_all_f +#pragma weak mpi_win_lock_all__ = ompi_win_lock_all_f + +#pragma weak MPI_Win_lock_all_f = ompi_win_lock_all_f +#pragma weak MPI_Win_lock_all_f08 = ompi_win_lock_all_f +#endif + +#if ! OPAL_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER +OMPI_GENERATE_F77_BINDINGS (MPI_WIN_LOCK_ALL, + mpi_win_lock_all, + mpi_win_lock_all_, + mpi_win_lock_all__, + ompi_win_lock_all_f, + (MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr), + (assert, win, ierr) ) +#endif + + +#if OMPI_PROFILE_LAYER && ! OPAL_HAVE_WEAK_SYMBOLS +#include "ompi/mpi/fortran/mpif-h/profile/defines.h" +#endif + +void ompi_win_lock_all_f(MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr) +{ + int c_ierr; + MPI_Win c_win = MPI_Win_f2c(*win); + + c_ierr = MPI_Win_lock_all(OMPI_FINT_2_INT(*assert), + c_win); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); +} diff --git a/ompi/mpi/fortran/mpif-h/win_sync_f.c b/ompi/mpi/fortran/mpif-h/win_sync_f.c new file mode 100644 index 0000000000..e86ee2ae3b --- /dev/null +++ b/ompi/mpi/fortran/mpif-h/win_sync_f.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/fortran/mpif-h/bindings.h" + +#if OPAL_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER +#pragma weak PMPI_WIN_SYNC = ompi_win_sync_f +#pragma weak pmpi_win_sync = ompi_win_sync_f +#pragma weak pmpi_win_sync_ = ompi_win_sync_f +#pragma weak pmpi_win_sync__ = ompi_win_sync_f + +#pragma weak PMPI_Win_sync_f = ompi_win_sync_f +#pragma weak PMPI_Win_sync_f08 = ompi_win_sync_f +#elif OMPI_PROFILE_LAYER +OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_SYNC, + pmpi_win_sync, + pmpi_win_sync_, + pmpi_win_sync__, + pompi_win_sync_f, + (MPI_Fint *win, MPI_Fint *ierr), + (win, ierr) ) +#endif + +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_WIN_SYNC = ompi_win_sync_f +#pragma weak mpi_win_sync = ompi_win_sync_f +#pragma weak mpi_win_sync_ = ompi_win_sync_f +#pragma weak mpi_win_sync__ = ompi_win_sync_f + +#pragma weak MPI_Win_sync_f = ompi_win_sync_f +#pragma weak MPI_Win_sync_f08 = ompi_win_sync_f +#endif + +#if ! OPAL_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER +OMPI_GENERATE_F77_BINDINGS (MPI_WIN_SYNC, + mpi_win_sync, + mpi_win_sync_, + mpi_win_sync__, + ompi_win_sync_f, + (MPI_Fint *win, MPI_Fint *ierr), + (win, ierr) ) +#endif + + +#if OMPI_PROFILE_LAYER && ! OPAL_HAVE_WEAK_SYMBOLS +#include "ompi/mpi/fortran/mpif-h/profile/defines.h" +#endif + +void ompi_win_sync_f(MPI_Fint *win, MPI_Fint *ierr) +{ + int c_ierr; + MPI_Win c_win = MPI_Win_f2c(*win); + + c_ierr = MPI_Win_sync(c_win); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); +} diff --git a/ompi/mpi/fortran/mpif-h/win_unlock_all_f.c b/ompi/mpi/fortran/mpif-h/win_unlock_all_f.c new file mode 100644 index 0000000000..68adcf3978 --- /dev/null +++ b/ompi/mpi/fortran/mpif-h/win_unlock_all_f.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. + * Copyright (c) 2004-2005 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/fortran/mpif-h/bindings.h" + +#if OPAL_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER +#pragma weak PMPI_WIN_UNLOCK_ALL = ompi_win_unlock_all_f +#pragma weak pmpi_win_unlock_all = ompi_win_unlock_all_f +#pragma weak pmpi_win_unlock_all_ = ompi_win_unlock_all_f +#pragma weak pmpi_win_unlock_all__ = ompi_win_unlock_all_f + +#pragma weak PMPI_Win_unlock_all_f = ompi_win_unlock_all_f +#pragma weak PMPI_Win_unlock_all_f08 = ompi_win_unlock_all_f +#elif OMPI_PROFILE_LAYER +OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_UNLOCK_ALL, + pmpi_win_unlock_all, + pmpi_win_unlock_all_, + pmpi_win_unlock_all__, + pompi_win_unlock_all_f, + (MPI_Fint *win, MPI_Fint *ierr), + (win, ierr) ) +#endif + +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_WIN_UNLOCK_ALL = ompi_win_unlock_all_f +#pragma weak mpi_win_unlock_all = ompi_win_unlock_all_f +#pragma weak mpi_win_unlock_all_ = ompi_win_unlock_all_f +#pragma weak mpi_win_unlock_all__ = ompi_win_unlock_all_f + +#pragma weak MPI_Win_unlock_all_f = ompi_win_unlock_all_f +#pragma weak MPI_Win_unlock_all_f08 = ompi_win_unlock_all_f +#endif + +#if ! OPAL_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER +OMPI_GENERATE_F77_BINDINGS (MPI_WIN_UNLOCK_ALL, + mpi_win_unlock_all, + mpi_win_unlock_all_, + mpi_win_unlock_all__, + ompi_win_unlock_all_f, + (MPI_Fint *win, MPI_Fint *ierr), + (win, ierr) ) +#endif + + +#if OMPI_PROFILE_LAYER && ! OPAL_HAVE_WEAK_SYMBOLS +#include "ompi/mpi/fortran/mpif-h/profile/defines.h" +#endif + +void ompi_win_unlock_all_f(MPI_Fint *win, MPI_Fint *ierr) +{ + int c_ierr; + MPI_Win c_win = MPI_Win_f2c(*win); + + c_ierr = MPI_Win_unlock_all(c_win); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); +} diff --git a/ompi/mpi/fortran/use-mpi-f08/Makefile.am b/ompi/mpi/fortran/use-mpi-f08/Makefile.am index e084fa7b60..ef660d08c5 100644 --- a/ompi/mpi/fortran/use-mpi-f08/Makefile.am +++ b/ompi/mpi/fortran/use-mpi-f08/Makefile.am @@ -98,6 +98,7 @@ mpi_api_files = \ comm_spawn_f08.F90 \ comm_spawn_multiple_f08.F90 \ comm_split_f08.F90 \ + comm_split_type_f08.F90 \ comm_test_inter_f08.F90 \ compare_and_swap_f08.F90 \ dist_graph_create_adjacent_f08.F90 \ @@ -303,14 +304,17 @@ mpi_api_files = \ win_get_group_f08.F90 \ win_get_name_f08.F90 \ win_lock_f08.F90 \ + win_lock_all_f08.F90 \ win_post_f08.F90 \ 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_sync_f08.F90 \ win_test_f08.F90 \ win_unlock_f08.F90 \ + win_unlock_all_f08.F90 \ win_wait_f08.F90 if OMPI_PROVIDE_MPI_FILE_INTERFACE @@ -440,6 +444,7 @@ pmpi_api_files = \ profile/pcomm_spawn_f08.F90 \ profile/pcomm_spawn_multiple_f08.F90 \ profile/pcomm_split_f08.F90 \ + profile/pcomm_split_type_f08.F90 \ profile/pcomm_test_inter_f08.F90 \ profile/pcompare_and_swap_f08.F90 \ profile/pdims_create_f08.F90 \ @@ -645,14 +650,17 @@ pmpi_api_files = \ profile/pwin_get_group_f08.F90 \ profile/pwin_get_name_f08.F90 \ profile/pwin_lock_f08.F90 \ + profile/pwin_lock_all_f08.F90 \ profile/pwin_post_f08.F90 \ 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_sync_f08.F90 \ profile/pwin_test_f08.F90 \ profile/pwin_unlock_f08.F90 \ + profile/pwin_unlock_all_f08.F90 \ profile/pwin_wait_f08.F90 if OMPI_PROVIDE_MPI_FILE_INTERFACE diff --git a/ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h b/ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h index 8f506da60c..0653d131af 100644 --- a/ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h +++ b/ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h @@ -2417,6 +2417,14 @@ subroutine ompi_win_lock_f(lock_type,rank,assert,win,ierror) & INTEGER, INTENT(OUT) :: ierror end subroutine ompi_win_lock_f +subroutine ompi_win_lock_all_f(assert,win,ierror) & + BIND(C, name="ompi_win_lock_all_f") + implicit none + INTEGER, INTENT(IN) :: assert + INTEGER, INTENT(IN) :: win + INTEGER, INTENT(OUT) :: ierror +end subroutine ompi_win_lock_all_f + subroutine ompi_win_post_f(group,assert,win,ierror) & BIND(C, name="ompi_win_post_f") implicit none @@ -2447,6 +2455,13 @@ subroutine ompi_win_start_f(group,assert,win,ierror) & INTEGER, INTENT(OUT) :: ierror end subroutine ompi_win_start_f +subroutine ompi_win_sync_f(win,ierror) & + BIND(C, name="ompi_win_sync_f") + implicit none + INTEGER, INTENT(IN) :: win + INTEGER, INTENT(OUT) :: ierror +end subroutine ompi_win_sync_f + subroutine ompi_win_unlock_f(rank,win,ierror) & BIND(C, name="ompi_win_unlock_f") implicit none @@ -2455,6 +2470,13 @@ subroutine ompi_win_unlock_f(rank,win,ierror) & INTEGER, INTENT(OUT) :: ierror end subroutine ompi_win_unlock_f +subroutine ompi_win_unlock_all_f(win,ierror) & + BIND(C, name="ompi_win_unlock_all_f") + implicit none + INTEGER, INTENT(IN) :: win + INTEGER, INTENT(OUT) :: ierror +end subroutine ompi_win_unlock_all_f + subroutine ompi_win_wait_f(win,ierror) & BIND(C, name="ompi_win_wait_f") implicit none diff --git a/ompi/mpi/fortran/use-mpi-f08/mpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/mpi-f08-interfaces.F90 index 303000e3ba..d796fba117 100644 --- a/ompi/mpi/fortran/use-mpi-f08/mpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/mpi-f08-interfaces.F90 @@ -3227,6 +3227,16 @@ subroutine MPI_Win_lock_f08(lock_type,rank,assert,win,ierror) end subroutine MPI_Win_lock_f08 end interface MPI_Win_lock +interface MPI_Win_lock_all +subroutine MPI_Win_lock_all_f08(assert,win,ierror) + use :: mpi_f08_types, only : MPI_Win + implicit none + INTEGER, INTENT(IN) :: assert + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine MPI_Win_lock_all_f08 +end interface MPI_Win_lock_all + interface MPI_Win_post subroutine MPI_Win_post_f08(group,assert,win,ierror) use :: mpi_f08_types, only : MPI_Group, MPI_Win @@ -3263,6 +3273,15 @@ subroutine MPI_Win_start_f08(group,assert,win,ierror) end subroutine MPI_Win_start_f08 end interface MPI_Win_start +interface MPI_Win_sync +subroutine MPI_Win_sync_f08(win,ierror) + use :: mpi_f08_types, only : MPI_Group, MPI_Win + implicit none + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine MPI_Win_sync_f08 +end interface MPI_Win_sync + interface MPI_Win_test subroutine MPI_Win_test_f08(win,flag,ierror) use :: mpi_f08_types, only : MPI_Win @@ -3283,6 +3302,15 @@ subroutine MPI_Win_unlock_f08(rank,win,ierror) end subroutine MPI_Win_unlock_f08 end interface MPI_Win_unlock +interface MPI_Win_unlock_all +subroutine MPI_Win_unlock_all_f08(win,ierror) + use :: mpi_f08_types, only : MPI_Win + implicit none + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine MPI_Win_unlock_all_f08 +end interface MPI_Win_unlock_all + interface MPI_Win_wait subroutine MPI_Win_wait_f08(win,ierror) use :: mpi_f08_types, only : MPI_Win diff --git a/ompi/mpi/fortran/use-mpi-f08/pmpi-f-interfaces-bind.h b/ompi/mpi/fortran/use-mpi-f08/pmpi-f-interfaces-bind.h index 05cfdfba52..8964f47876 100644 --- a/ompi/mpi/fortran/use-mpi-f08/pmpi-f-interfaces-bind.h +++ b/ompi/mpi/fortran/use-mpi-f08/pmpi-f-interfaces-bind.h @@ -2254,6 +2254,14 @@ subroutine pompi_win_lock_f(lock_type,rank,assert,win,ierror) & INTEGER, INTENT(OUT) :: ierror end subroutine pompi_win_lock_f +subroutine pompi_win_lock_all_f(assert,win,ierror) & + BIND(C, name="pompi_win_lock_all_f") + implicit none + INTEGER, INTENT(IN) :: assert + INTEGER, INTENT(IN) :: win + INTEGER, INTENT(OUT) :: ierror +end subroutine pompi_win_lock_all_f + subroutine pompi_win_post_f(group,assert,win,ierror) & BIND(C, name="pompi_win_post_f") implicit none @@ -2284,6 +2292,13 @@ subroutine pompi_win_start_f(group,assert,win,ierror) & INTEGER, INTENT(OUT) :: ierror end subroutine pompi_win_start_f +subroutine pompi_win_sync_f(win,ierror) & + BIND(C, name="pompi_win_sync_f") + implicit none + INTEGER, INTENT(IN) :: win + INTEGER, INTENT(OUT) :: ierror +end subroutine pompi_win_sync_f + subroutine pompi_win_unlock_f(rank,win,ierror) & BIND(C, name="pompi_win_unlock_f") implicit none @@ -2292,6 +2307,13 @@ subroutine pompi_win_unlock_f(rank,win,ierror) & INTEGER, INTENT(OUT) :: ierror end subroutine pompi_win_unlock_f +subroutine pompi_win_unlock_all_f(win,ierror) & + BIND(C, name="pompi_win_unlock_all_f") + implicit none + INTEGER, INTENT(IN) :: win + INTEGER, INTENT(OUT) :: ierror +end subroutine pompi_win_unlock_all_f + subroutine pompi_win_wait_f(win,ierror) & BIND(C, name="pompi_win_wait_f") implicit none diff --git a/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 index 8e8d5cc631..4e9606a2b8 100644 --- a/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 @@ -3213,6 +3213,16 @@ subroutine PMPI_Win_lock_f08(lock_type,rank,assert,win,ierror) end subroutine PMPI_Win_lock_f08 end interface PMPI_Win_lock +interface PMPI_Win_lock_all +subroutine PMPI_Win_lock_all_f08(assert,win,ierror) + use :: mpi_f08_types, only : MPI_Win + implicit none + INTEGER, INTENT(IN) :: assert + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine PMPI_Win_lock_all_f08 +end interface PMPI_Win_lock_all + interface PMPI_Win_post subroutine PMPI_Win_post_f08(group,assert,win,ierror) use :: mpi_f08_types, only : MPI_Group, MPI_Win @@ -3235,6 +3245,15 @@ subroutine PMPI_Win_start_f08(group,assert,win,ierror) end subroutine PMPI_Win_start_f08 end interface PMPI_Win_start +interface PMPI_Win_sync +subroutine PMPI_Win_sync_f08(win,ierror) + use :: mpi_f08_types, only : MPI_Group, MPI_Win + implicit none + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine PMPI_Win_sync_f08 +end interface PMPI_Win_sync + interface PMPI_Win_test subroutine PMPI_Win_test_f08(win,flag,ierror) use :: mpi_f08_types, only : MPI_Win @@ -3255,6 +3274,15 @@ subroutine PMPI_Win_unlock_f08(rank,win,ierror) end subroutine PMPI_Win_unlock_f08 end interface PMPI_Win_unlock +interface PMPI_Win_unlock_all +subroutine PMPI_Win_unlock_all_f08(win,ierror) + use :: mpi_f08_types, only : MPI_Win + implicit none + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine PMPI_Win_unlock_all_f08 +end interface PMPI_Win_unlock_all + interface PMPI_Win_wait subroutine PMPI_Win_wait_f08(win,ierror) use :: mpi_f08_types, only : MPI_Win diff --git a/ompi/mpi/fortran/use-mpi-f08/profile/pwin_lock_all_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/profile/pwin_lock_all_f08.F90 new file mode 100644 index 0000000000..cf5ed33eab --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/profile/pwin_lock_all_f08.F90 @@ -0,0 +1,20 @@ +! -*- f90 -*- +! +! Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2009-2012 Los Alamos National Security, LLC. +! All Rights reserved. +! $COPYRIGHT$ + +subroutine PMPI_Win_lock_all_f08(assert,win,ierror) + use :: mpi_f08_types, only : MPI_Win + use :: mpi_f08, only : ompi_win_lock_all_f + implicit none + INTEGER, INTENT(IN) :: assert + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_win_lock_all_f(assert,win%MPI_VAL,c_ierror) + if (present(ierror)) ierror = c_ierror + +end subroutine PMPI_Win_lock_all_f08 diff --git a/ompi/mpi/fortran/use-mpi-f08/profile/pwin_sync_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/profile/pwin_sync_f08.F90 new file mode 100644 index 0000000000..99164715c4 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/profile/pwin_sync_f08.F90 @@ -0,0 +1,19 @@ +! -*- f90 -*- +! +! Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2009-2012 Los Alamos National Security, LLC. +! All Rights reserved. +! $COPYRIGHT$ + +subroutine PMPI_Win_sync_f08(win,ierror) + use :: mpi_f08_types, only : MPI_Win + use :: mpi_f08, only : ompi_win_sync_f + implicit none + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_win_sync_f(win%MPI_VAL,c_ierror) + if (present(ierror)) ierror = c_ierror + + end subroutine PMPI_Win_sync_f08 diff --git a/ompi/mpi/fortran/use-mpi-f08/profile/pwin_unlock_all_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/profile/pwin_unlock_all_f08.F90 new file mode 100644 index 0000000000..4c028b09bb --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/profile/pwin_unlock_all_f08.F90 @@ -0,0 +1,19 @@ +! -*- f90 -*- +! +! Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2009-2012 Los Alamos National Security, LLC. +! All Rights reserved. +! $COPYRIGHT$ + +subroutine PMPI_Win_unlock_all_f08(win,ierror) + use :: mpi_f08_types, only : MPI_Win + use :: mpi_f08, only : ompi_win_unlock_all_f + implicit none + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_win_unlock_all_f(win%MPI_VAL,c_ierror) + if (present(ierror)) ierror = c_ierror + +end subroutine PMPI_Win_unlock_all_f08 diff --git a/ompi/mpi/fortran/use-mpi-f08/win_lock_all_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/win_lock_all_f08.F90 new file mode 100644 index 0000000000..0ebe9b84af --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/win_lock_all_f08.F90 @@ -0,0 +1,20 @@ +! -*- f90 -*- +! +! Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2009-2012 Los Alamos National Security, LLC. +! All Rights reserved. +! $COPYRIGHT$ + +subroutine MPI_Win_lock_all_f08(assert,win,ierror) + use :: mpi_f08_types, only : MPI_Win + use :: mpi_f08, only : ompi_win_lock_all_f + implicit none + INTEGER, INTENT(IN) :: assert + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_win_lock_all_f(assert,win%MPI_VAL,c_ierror) + if (present(ierror)) ierror = c_ierror + +end subroutine MPI_Win_lock_all_f08 diff --git a/ompi/mpi/fortran/use-mpi-f08/win_sync_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/win_sync_f08.F90 new file mode 100644 index 0000000000..932ccd11f4 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/win_sync_f08.F90 @@ -0,0 +1,19 @@ +! -*- f90 -*- +! +! Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2009-2012 Los Alamos National Security, LLC. +! All Rights reserved. +! $COPYRIGHT$ + +subroutine MPI_Win_sync_f08(win,ierror) + use :: mpi_f08_types, only : MPI_Win + use :: mpi_f08, only : ompi_win_sync_f + implicit none + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_win_sync_f(win%MPI_VAL,c_ierror) + if (present(ierror)) ierror = c_ierror + + end subroutine MPI_Win_sync_f08 diff --git a/ompi/mpi/fortran/use-mpi-f08/win_unlock_all_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/win_unlock_all_f08.F90 new file mode 100644 index 0000000000..979581fe5d --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/win_unlock_all_f08.F90 @@ -0,0 +1,19 @@ +! -*- f90 -*- +! +! Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2009-2012 Los Alamos National Security, LLC. +! All Rights reserved. +! $COPYRIGHT$ + +subroutine MPI_Win_unlock_all_f08(win,ierror) + use :: mpi_f08_types, only : MPI_Win + use :: mpi_f08, only : ompi_win_unlock_all_f + implicit none + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_win_unlock_all_f(win%MPI_VAL,c_ierror) + if (present(ierror)) ierror = c_ierror + +end subroutine MPI_Win_unlock_all_f08