From 4aa91e1ffb178debf79d9bbd61784bed46b9f917 Mon Sep 17 00:00:00 2001 From: Geoffrey Paulsen Date: Thu, 29 Nov 2018 09:15:39 -0600 Subject: [PATCH] Return MPI1 function implementations to build list Adding the implementations of the functions that were removed from the MPI standard to the build list, regardless of the state of the OMPI_ENABLE_MPI1_COMPAT. According to the README, we want the OMPI_ENABLE_MPI1_COMPAT configure flag to control which MPI prototypes are exposed in mpi.h, NOT, which are built into the mpi library. Those will remain in the mpi library until a future major release (5.0?) NOTE: for the Fortran implementations, we instead define OMPI_OMIT_MPI1_COMPAT_DECLS to 0 instead of OMPI_ENABLE_MPI1_COMPAT to 1. I'm not sure why, but this seems to work correctly. Also changing the removed MPI_Errhandler_create implementation to use the non removed MPI_Comm_errhandler_function prototype (prototype remains unchanged from MPI_Comm_errhandler_fn) NOTE: This commit is *NOT* a cherry-pick from master, because on master, we are no longer building those symbols by default, but on v4.0.x we _ARE_ still building these symbols by default. This is because the v4.0.x branch is to remain backwards compatible with v3.0.x, while at the same time removing the "removed" symbols from mpi.h (unless the user configures with --enable-mpi1-compatibility) Signed-off-by: Geoffrey Paulsen --- ompi/include/mpi.h.in | 6 +++--- ompi/mpi/c/Makefile.am | 4 ++-- ompi/mpi/c/address.c | 11 +++++++++++ ompi/mpi/c/errhandler_create.c | 6 +++++- ompi/mpi/c/errhandler_get.c | 4 ++++ ompi/mpi/c/errhandler_set.c | 4 ++++ ompi/mpi/c/profile/Makefile.am | 4 ++-- ompi/mpi/c/type_extent.c | 4 ++++ ompi/mpi/c/type_hindexed.c | 4 ++++ ompi/mpi/c/type_hvector.c | 4 ++++ ompi/mpi/c/type_lb.c | 4 ++++ ompi/mpi/c/type_struct.c | 4 ++++ ompi/mpi/c/type_ub.c | 4 ++++ ompi/mpi/fortran/mpif-h/Makefile.am | 5 ++--- ompi/mpi/fortran/mpif-h/address_f.c | 1 + ompi/mpi/fortran/mpif-h/errhandler_create_f.c | 1 + ompi/mpi/fortran/mpif-h/errhandler_get_f.c | 1 + ompi/mpi/fortran/mpif-h/errhandler_set_f.c | 1 + ompi/mpi/fortran/mpif-h/profile/Makefile.am | 4 ++-- ompi/mpi/fortran/mpif-h/type_extent_f.c | 1 + ompi/mpi/fortran/mpif-h/type_hindexed_f.c | 1 + ompi/mpi/fortran/mpif-h/type_hvector_f.c | 1 + ompi/mpi/fortran/mpif-h/type_lb_f.c | 1 + ompi/mpi/fortran/mpif-h/type_struct_f.c | 1 + ompi/mpi/fortran/mpif-h/type_ub_f.c | 1 + 25 files changed, 69 insertions(+), 13 deletions(-) diff --git a/ompi/include/mpi.h.in b/ompi/include/mpi.h.in index 0cf5c1f94f7..4168e6fcb79 100644 --- a/ompi/include/mpi.h.in +++ b/ompi/include/mpi.h.in @@ -279,7 +279,7 @@ # define __mpi_interface_deprecated__(msg) __attribute__((__deprecated__)) # endif # endif -# if OMPI_ENABLE_MPI1_COMPAT +# if (OMPI_ENABLE_MPI1_COMPAT && !OMPI_BUILDING) # define __mpi_interface_removed__(msg) __mpi_interface_deprecated__(msg) # define OMPI_OMIT_MPI1_COMPAT_DECLS 0 # endif @@ -1001,7 +1001,7 @@ OMPI_DECLSPEC extern struct ompi_predefined_info_t ompi_mpi_info_env; OMPI_DECLSPEC extern MPI_Fint *MPI_F_STATUS_IGNORE; OMPI_DECLSPEC extern MPI_Fint *MPI_F_STATUSES_IGNORE; -#if !OMPI_OMIT_MPI1_COMPAT_DECLS +#if (!OMPI_OMIT_MPI1_COMPAT_DECLS || OMPI_BUILDING) /* * Removed datatypes. These datatypes are only available if Open MPI * was configured with --enable-mpi1-compatibility. @@ -2662,7 +2662,7 @@ OMPI_DECLSPEC int OMPI_C_MPI_NULL_DELETE_FN( MPI_Comm comm, int comm_keyval, void* extra_state ) __mpi_interface_deprecated__("MPI_NULL_DELETE_FN was deprecated in MPI-2.0; use MPI_COMM_NULL_DELETE_FN instead."); -#if !OMPI_OMIT_MPI1_COMPAT_DECLS +#if (!OMPI_OMIT_MPI1_COMPAT_DECLS || OMPI_BUILDING) /* * Removed typedefs. These typedefs are only available if Open MPI * was configured with --enable-mpi1-compatibility. diff --git a/ompi/mpi/c/Makefile.am b/ompi/mpi/c/Makefile.am index d4c822beba2..25b32809aeb 100644 --- a/ompi/mpi/c/Makefile.am +++ b/ompi/mpi/c/Makefile.am @@ -437,7 +437,8 @@ libmpi_c_mpi_la_SOURCES = \ win_wait.c -if OMPI_ENABLE_MPI1_COMPAT +# include all of the removed MPI functions in library +# for v4.0.x regardless of state of OMPI_ENABLE_MPI1_COMPAT libmpi_c_mpi_la_SOURCES += \ address.c \ errhandler_create.c \ @@ -449,7 +450,6 @@ libmpi_c_mpi_la_SOURCES += \ type_lb.c \ type_struct.c \ type_ub.c -endif # Conditionally install the header files diff --git a/ompi/mpi/c/address.c b/ompi/mpi/c/address.c index 67b27bef58e..bb864a6b2ab 100644 --- a/ompi/mpi/c/address.c +++ b/ompi/mpi/c/address.c @@ -21,6 +21,17 @@ #include "ompi_config.h" #include +/* This implementation has been removed from the MPI 3.1 standard. + * Open MPI v4.0.x is keeping the implementation in the library, but + * removing the prototypes from the headers, unless the user configures + * with --enable-mpi1-compatibility. + * + * To prevent having to port these implementations of removed functions + * to the newer MPI calls, we are defining ENABLE_MPI1_COMPAT to 1 + * before including the c bindings. + */ +#define ENABLE_MPI1_COMPAT 1 + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" diff --git a/ompi/mpi/c/errhandler_create.c b/ompi/mpi/c/errhandler_create.c index cae93f98f40..3af43d57446 100644 --- a/ompi/mpi/c/errhandler_create.c +++ b/ompi/mpi/c/errhandler_create.c @@ -20,6 +20,10 @@ #include "ompi_config.h" +/* defining ENABLE_MPI1_COMPAT to 1 for removed implementations here. + * see comments in address.c for more information. */ +#define ENABLE_MPI1_COMPAT 1 + #include "ompi/mpi/c/bindings.h" #include "ompi/communicator/communicator.h" #include "ompi/errhandler/errhandler.h" @@ -31,7 +35,7 @@ #define MPI_Errhandler_create PMPI_Errhandler_create #endif -int MPI_Errhandler_create(MPI_Handler_function *function, +int MPI_Errhandler_create(MPI_Comm_errhandler_function *function, MPI_Errhandler *errhandler) { diff --git a/ompi/mpi/c/errhandler_get.c b/ompi/mpi/c/errhandler_get.c index 7125506b7ed..e5caf07c3bb 100644 --- a/ompi/mpi/c/errhandler_get.c +++ b/ompi/mpi/c/errhandler_get.c @@ -20,6 +20,10 @@ #include "ompi_config.h" +/* defining ENABLE_MPI1_COMPAT to 1 for removed implementations here. + * see comments in address.c for more information. */ +#define ENABLE_MPI1_COMPAT 1 + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" diff --git a/ompi/mpi/c/errhandler_set.c b/ompi/mpi/c/errhandler_set.c index c861b058903..686f97f1648 100644 --- a/ompi/mpi/c/errhandler_set.c +++ b/ompi/mpi/c/errhandler_set.c @@ -20,6 +20,10 @@ #include "ompi_config.h" +/* defining ENABLE_MPI1_COMPAT to 1 for removed implementations here. + * see comments in address.c for more information. */ +#define ENABLE_MPI1_COMPAT 1 + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" diff --git a/ompi/mpi/c/profile/Makefile.am b/ompi/mpi/c/profile/Makefile.am index 5330752db5c..4a239d7e2ab 100644 --- a/ompi/mpi/c/profile/Makefile.am +++ b/ompi/mpi/c/profile/Makefile.am @@ -416,7 +416,8 @@ nodist_libmpi_c_pmpi_la_SOURCES = \ pwin_unlock_all.c \ pwin_wait.c -if OMPI_ENABLE_MPI1_COMPAT +# include all of the removed MPI functions in library +# for v4.0.x regardless of state of OMPI_ENABLE_MPI1_COMPAT nodist_libmpi_c_pmpi_la_SOURCES += \ paddress.c \ perrhandler_create.c \ @@ -428,7 +429,6 @@ nodist_libmpi_c_pmpi_la_SOURCES += \ ptype_lb.c \ ptype_struct.c \ ptype_ub.c -endif # # Sym link in the sources from the real MPI directory diff --git a/ompi/mpi/c/type_extent.c b/ompi/mpi/c/type_extent.c index 4c4a4a5f59e..8984b467bb4 100644 --- a/ompi/mpi/c/type_extent.c +++ b/ompi/mpi/c/type_extent.c @@ -20,6 +20,10 @@ #include "ompi_config.h" +/* defining ENABLE_MPI1_COMPAT to 1 for removed implementations here. + * see comments in address.c for more information. */ +#define ENABLE_MPI1_COMPAT 1 + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" diff --git a/ompi/mpi/c/type_hindexed.c b/ompi/mpi/c/type_hindexed.c index 89d3b46bdd3..ad071fd5a15 100644 --- a/ompi/mpi/c/type_hindexed.c +++ b/ompi/mpi/c/type_hindexed.c @@ -20,6 +20,10 @@ #include "ompi_config.h" +/* defining ENABLE_MPI1_COMPAT to 1 for removed implementations here. + * see comments in address.c for more information. */ +#define ENABLE_MPI1_COMPAT 1 + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" diff --git a/ompi/mpi/c/type_hvector.c b/ompi/mpi/c/type_hvector.c index 2c1517b565a..469aba75d55 100644 --- a/ompi/mpi/c/type_hvector.c +++ b/ompi/mpi/c/type_hvector.c @@ -20,6 +20,10 @@ #include "ompi_config.h" +/* defining ENABLE_MPI1_COMPAT to 1 for removed implementations here. + * see comments in address.c for more information. */ +#define ENABLE_MPI1_COMPAT 1 + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" diff --git a/ompi/mpi/c/type_lb.c b/ompi/mpi/c/type_lb.c index 269f7bd245a..b8ba200c874 100644 --- a/ompi/mpi/c/type_lb.c +++ b/ompi/mpi/c/type_lb.c @@ -20,6 +20,10 @@ #include "ompi_config.h" +/* defining ENABLE_MPI1_COMPAT to 1 for removed implementations here. + * see comments in address.c for more information. */ +#define ENABLE_MPI1_COMPAT 1 + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" diff --git a/ompi/mpi/c/type_struct.c b/ompi/mpi/c/type_struct.c index 575e26453f7..13572552ce0 100644 --- a/ompi/mpi/c/type_struct.c +++ b/ompi/mpi/c/type_struct.c @@ -20,6 +20,10 @@ #include "ompi_config.h" +/* defining ENABLE_MPI1_COMPAT to 1 for removed implementations here. + * see comments in address.c for more information. */ +#define ENABLE_MPI1_COMPAT 1 + #include "ompi/mpi/c/bindings.h" #if OMPI_BUILD_MPI_PROFILING diff --git a/ompi/mpi/c/type_ub.c b/ompi/mpi/c/type_ub.c index a7d16909d66..1544116a6f9 100644 --- a/ompi/mpi/c/type_ub.c +++ b/ompi/mpi/c/type_ub.c @@ -20,6 +20,10 @@ #include "ompi_config.h" +/* defining ENABLE_MPI1_COMPAT to 1 for removed implementations here. + * see comments in address.c for more information. */ +#define ENABLE_MPI1_COMPAT 1 + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" diff --git a/ompi/mpi/fortran/mpif-h/Makefile.am b/ompi/mpi/fortran/mpif-h/Makefile.am index e44b770977b..2c0a6c050f0 100644 --- a/ompi/mpi/fortran/mpif-h/Makefile.am +++ b/ompi/mpi/fortran/mpif-h/Makefile.am @@ -481,8 +481,8 @@ lib@OMPI_LIBMPI_NAME@_mpifh_la_SOURCES += \ win_flush_local_f.c \ win_flush_local_all_f.c - -if OMPI_ENABLE_MPI1_COMPAT +# include all of the removed MPI functions in library +# for v4.0.x regardless of state of OMPI_ENABLE_MPI1_COMPAT lib@OMPI_LIBMPI_NAME@_mpifh_la_SOURCES += \ address_f.c \ errhandler_create_f.c \ @@ -495,7 +495,6 @@ lib@OMPI_LIBMPI_NAME@_mpifh_la_SOURCES += \ type_struct_f.c \ type_ub_f.c endif -endif # # Conditionally install the header files diff --git a/ompi/mpi/fortran/mpif-h/address_f.c b/ompi/mpi/fortran/mpif-h/address_f.c index 85d1369ae2d..1abdf8cfb18 100644 --- a/ompi/mpi/fortran/mpif-h/address_f.c +++ b/ompi/mpi/fortran/mpif-h/address_f.c @@ -12,6 +12,7 @@ * Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2018 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow diff --git a/ompi/mpi/fortran/mpif-h/errhandler_create_f.c b/ompi/mpi/fortran/mpif-h/errhandler_create_f.c index 9805f652806..41a59bcc1df 100644 --- a/ompi/mpi/fortran/mpif-h/errhandler_create_f.c +++ b/ompi/mpi/fortran/mpif-h/errhandler_create_f.c @@ -12,6 +12,7 @@ * Copyright (c) 2008-2012 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2018 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow diff --git a/ompi/mpi/fortran/mpif-h/errhandler_get_f.c b/ompi/mpi/fortran/mpif-h/errhandler_get_f.c index 5ca661aa10d..313dafd8df0 100644 --- a/ompi/mpi/fortran/mpif-h/errhandler_get_f.c +++ b/ompi/mpi/fortran/mpif-h/errhandler_get_f.c @@ -12,6 +12,7 @@ * Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2018 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow diff --git a/ompi/mpi/fortran/mpif-h/errhandler_set_f.c b/ompi/mpi/fortran/mpif-h/errhandler_set_f.c index d6ea8a94b32..713c35f7374 100644 --- a/ompi/mpi/fortran/mpif-h/errhandler_set_f.c +++ b/ompi/mpi/fortran/mpif-h/errhandler_set_f.c @@ -12,6 +12,7 @@ * Copyright (c) 2008-2012 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2018 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow diff --git a/ompi/mpi/fortran/mpif-h/profile/Makefile.am b/ompi/mpi/fortran/mpif-h/profile/Makefile.am index 5566b85b28a..7c1e6afe08d 100644 --- a/ompi/mpi/fortran/mpif-h/profile/Makefile.am +++ b/ompi/mpi/fortran/mpif-h/profile/Makefile.am @@ -397,7 +397,8 @@ linked_files = \ pwin_flush_local_f.c \ pwin_flush_local_all_f.c -if OMPI_ENABLE_MPI1_COMPAT +# include all of the removed MPI functions in library +# for v4.0.x regardless of state of OMPI_ENABLE_MPI1_COMPAT linked_files += \ paddress_f.c \ perrhandler_create_f.c \ @@ -409,7 +410,6 @@ linked_files += \ ptype_lb_f.c \ ptype_struct_f.c \ ptype_ub_f.c -endif # # Sym link in the sources from the real MPI directory diff --git a/ompi/mpi/fortran/mpif-h/type_extent_f.c b/ompi/mpi/fortran/mpif-h/type_extent_f.c index a2baf215a6b..cbc7384fd23 100644 --- a/ompi/mpi/fortran/mpif-h/type_extent_f.c +++ b/ompi/mpi/fortran/mpif-h/type_extent_f.c @@ -12,6 +12,7 @@ * Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2018 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow diff --git a/ompi/mpi/fortran/mpif-h/type_hindexed_f.c b/ompi/mpi/fortran/mpif-h/type_hindexed_f.c index 3b48ec31cef..e33ff79c76f 100644 --- a/ompi/mpi/fortran/mpif-h/type_hindexed_f.c +++ b/ompi/mpi/fortran/mpif-h/type_hindexed_f.c @@ -12,6 +12,7 @@ * Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2018 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow diff --git a/ompi/mpi/fortran/mpif-h/type_hvector_f.c b/ompi/mpi/fortran/mpif-h/type_hvector_f.c index 1bc5720e9bb..5380a006ddd 100644 --- a/ompi/mpi/fortran/mpif-h/type_hvector_f.c +++ b/ompi/mpi/fortran/mpif-h/type_hvector_f.c @@ -12,6 +12,7 @@ * Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2018 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow diff --git a/ompi/mpi/fortran/mpif-h/type_lb_f.c b/ompi/mpi/fortran/mpif-h/type_lb_f.c index 3867c35ad29..f442b1a2ef9 100644 --- a/ompi/mpi/fortran/mpif-h/type_lb_f.c +++ b/ompi/mpi/fortran/mpif-h/type_lb_f.c @@ -12,6 +12,7 @@ * Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2018 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow diff --git a/ompi/mpi/fortran/mpif-h/type_struct_f.c b/ompi/mpi/fortran/mpif-h/type_struct_f.c index 03a05d9a548..bb6b10a1fd4 100644 --- a/ompi/mpi/fortran/mpif-h/type_struct_f.c +++ b/ompi/mpi/fortran/mpif-h/type_struct_f.c @@ -12,6 +12,7 @@ * Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2018 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow diff --git a/ompi/mpi/fortran/mpif-h/type_ub_f.c b/ompi/mpi/fortran/mpif-h/type_ub_f.c index 17a468a6343..dbfd000d231 100644 --- a/ompi/mpi/fortran/mpif-h/type_ub_f.c +++ b/ompi/mpi/fortran/mpif-h/type_ub_f.c @@ -12,6 +12,7 @@ * Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2018 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow