From 3136a1706cdacb3f7530937da1dcfe15d2febc79 Mon Sep 17 00:00:00 2001 From: Geoffrey Paulsen Date: Fri, 15 Feb 2019 14:19:07 -0600 Subject: [PATCH 1/2] mpi.h.in: Revamp MPI-1 removed function warnings Refs https://github.com/open-mpi/ompi/issues/6278. This commit is intended to be cherry-picked to v4.0.x and the following commit will ammend to this functionality for master's removal. Changes the prototypes for MPI removed functions in the following ways: There are 4 cases: 1) User wants MPI-1 compatibility (--enable-mpi1-compatibility) MPI_Address (and friends) are declared in mpi.h with deprecation notice 2) User does not want MPI-1 compatibility, and has a C11-capable compiler Declare an MPI_Address (etc.) macro in mpi.h, which will cause a compile-time error using _Static_assert C11 feature 3) User does not want MPI-1 compatibility, and does not have a C11-capable compiler, but the compiler supports error function attributes. Declare an MPI_Address (etc.) macro in mpi.h, which will cause a compile-time error using error function attribute. 4) User does not want MPI-1 compatibility, and does not have a C11-capable compiler, or a compiler that supports error function attributes. Do not declare MPI_Address (etc.) in mpi.h at all. Unless the user is compiling with something like -Werror, this will allow the user's code to compile. We are choosing this because it seems like a losing battle to make some kind of compile time error that is friendly to the user (and doesn't make it look like mpi.h itself is broken). On v4.0.x, this will allow the user code to both compile (albeit with a warning) and link (because the MPI_Address will be in the MPI library because we are preserving ABI back to 3.0.x). On master/v5.0.x, this will allow the user code to compile, but it will fail to link (because the MPI_Address symbol will not be in the MPI library). Signed-off-by: Geoffrey Paulsen --- ompi/include/mpi.h.in | 139 +++++++++++++++++++++++++-------- ompi/mpi/c/address.c | 11 +++ ompi/mpi/c/errhandler_create.c | 11 +++ ompi/mpi/c/errhandler_get.c | 11 +++ ompi/mpi/c/errhandler_set.c | 11 +++ ompi/mpi/c/type_extent.c | 11 +++ ompi/mpi/c/type_hindexed.c | 11 +++ ompi/mpi/c/type_hvector.c | 11 +++ ompi/mpi/c/type_lb.c | 11 +++ ompi/mpi/c/type_struct.c | 11 +++ ompi/mpi/c/type_ub.c | 11 +++ 11 files changed, 215 insertions(+), 34 deletions(-) diff --git a/ompi/include/mpi.h.in b/ompi/include/mpi.h.in index 864b0e726b..55b81c1442 100644 --- a/ompi/include/mpi.h.in +++ b/ompi/include/mpi.h.in @@ -19,7 +19,7 @@ * Copyright (c) 2015 University of Houston. All rights reserved. * Copyright (c) 2015-2018 Research Organization for Information Science * and Technology (RIST). All rights reserved. - * Copyright (c) 2017-2018 IBM Corporation. All rights reserved. + * Copyright (c) 2017-2019 IBM Corporation. All rights reserved. * Copyright (c) 2018 FUJITSU LIMITED. All rights reserved. * $COPYRIGHT$ * @@ -280,10 +280,50 @@ # define __mpi_interface_deprecated__(msg) __attribute__((__deprecated__)) # endif # endif -# if OMPI_ENABLE_MPI1_COMPAT -# define __mpi_interface_removed__(msg) __mpi_interface_deprecated__(msg) -# define OMPI_OMIT_MPI1_COMPAT_DECLS 0 -# endif +# endif + + /* For MPI removed APIs, there is no generally portable way to cause + * the C compiler to error with a nice message, on the _usage_ of + * one of these symbols. We've gone with tiered appraoch: + * + * If the user configured with --enable-mpi1-compatibility, + * just emit a compiletime warning (via the deprecation function + * attribute) that they're using an MPI1 removed function. + * + * Otherwise, we'd like to issue a fatal error directing the user + * that they've used an MPI1 removed function. If the user's + * compiler supports C11 _Static_assert feature, we #define + * the MPI routines to instead be a call to _Static_assert + * with an appropreate message suggesting the new MPI3 equivalent. + * + * Otherwise, if the user's compiler supports the error function + * attribute, define the MPI routines with that error attribute. + * This is supported by most modern GNU compilers. + * + * Finally if the compiler doesn't support any of those, just + * Don't declare those MPI routines at all in mpi.h + * + * Don't do MACRO magic for building Profiling library as it + * interferes with the above. + */ +# if (OMPI_ENABLE_MPI1_COMPAT || OMPI_BUILDING) +# define OMPI_OMIT_MPI1_COMPAT_DECLS 0 +# define OMPI_REMOVED_USE_STATIC_ASSERT 0 +# define __mpi_interface_removed__(func, newfunc) __mpi_interface_deprecated__(#func " was removed in MPI-3.0. Use " #newfunc " instead. continuing...") +# elif (__STDC_VERSION__ >= 201112L) +# define OMPI_OMIT_MPI1_COMPAT_DECLS 1 +# define OMPI_REMOVED_USE_STATIC_ASSERT 1 +// This macro definition may show up in compiler output. So we both +// outdent it back to column 0 and give it a user-friendly name to +// help users grok what we are trying to tell them here. +#define THIS_SYMBOL_WAS_REMOVED_IN_MPI30(func, newfunc) _Static_assert(0, #func " was removed in MPI-3.0. Use " #newfunc " instead.") +# elif OPAL_HAVE_ATTRIBUTE_ERROR +# define OMPI_OMIT_MPI1_COMPAT_DECLS 0 +# define OMPI_REMOVED_USE_STATIC_ASSERT 0 +# define __mpi_interface_removed__(func, newfunc) __attribute__((__error__(#func " was removed in MPI-3.0. Use " #newfunc " instead."))) +# else +# define OMPI_OMIT_MPI1_COMPAT_DECLS 1 +# define OMPI_REMOVED_USE_STATIC_ASSERT 0 # endif # endif #endif @@ -298,7 +338,15 @@ #endif #if !defined(__mpi_interface_removed__) -# define __mpi_interface_removed__(msg) +# define __mpi_interface_removed__(A,B) +#endif + +#if !defined(THIS_SYMBOL_WAS_REMOVED_IN_MPI30) +# define THIS_SYMBOL_WAS_REMOVED_IN_MPI30(func, newfunc) +#endif + +#if !defined(OMPI_REMOVED_USE_STATIC_ASSERT) +# define OMPI_REMOVED_USE_STATIC_ASSERT 0 #endif #if !defined(OMPI_OMIT_MPI1_COMPAT_DECLS) @@ -1005,7 +1053,6 @@ 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 /* * Removed datatypes. These datatypes are only available if Open MPI * was configured with --enable-mpi1-compatibility. @@ -1013,14 +1060,25 @@ OMPI_DECLSPEC extern MPI_Fint *MPI_F_STATUSES_IGNORE; * These datatypes were formally removed from the MPI specification * and should no longer be used in MPI applications. */ -#define MPI_UB OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_ub) -#define MPI_LB OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_lb) +#if (OMPI_ENABLE_MPI1_COMPAT || OMPI_BUILDING) +# define MPI_UB OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_ub) +# define MPI_LB OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_lb) + +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_lb; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ub; + +#else +/* If not building or configured --enable-mpi1-compatibility, then + * we don't want these datatypes, instead we define MPI_UB and + * MPI_LB to our Static Assert message if the compiler supports + * that staticly assert with a nice message. + */ +# if (OMPI_REMOVED_USE_STATIC_ASSERT) +# define MPI_UB THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_UB, MPI_Type_create_resized); +# define MPI_LB THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_LB, MPI_Type_create_resized); +# endif /* OMPI_REMOVED_USE_STATIC_ASSERT */ +#endif /* Removed datatypes */ -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_lb - __mpi_interface_removed__("MPI_LB was removed in MPI-3.0; use MPI_Type_create_resized instead."); -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ub - __mpi_interface_removed__("MPI_UB was removed in MPI-3.0; use MPI_Type_create_resized instead."); -#endif /* !OMPI_OMIT_MPI1_COMPAT_DECLS */ /* * MPI predefined handles @@ -2696,61 +2754,74 @@ typedef void (MPI_Handler_function)(MPI_Comm *, int *, ...); * and should no longer be used in MPI applications. */ OMPI_DECLSPEC int MPI_Address(void *location, MPI_Aint *address) - __mpi_interface_removed__("MPI_Address was removed in MPI-3.0; use MPI_Get_address instead."); + __mpi_interface_removed__(MPI_Address, MPI_Get_address); OMPI_DECLSPEC int PMPI_Address(void *location, MPI_Aint *address) - __mpi_interface_removed__("PMPI_Address was removed in MPI-3.0; use MPI_Get_address instead."); + __mpi_interface_removed__(PMPI_Address, PMPI_Get_address); OMPI_DECLSPEC int MPI_Errhandler_create(MPI_Handler_function *function, MPI_Errhandler *errhandler) - __mpi_interface_removed__("MPI_Errhandler_create was removed in MPI-3.0; use MPI_Comm_create_errhandler instead."); + __mpi_interface_removed__(MPI_Errhandler_create, MPI_Comm_create_errhandler); OMPI_DECLSPEC int PMPI_Errhandler_create(MPI_Handler_function *function, MPI_Errhandler *errhandler) - __mpi_interface_removed__("PMPI_Errhandler_create was removed in MPI-3.0; use PMPI_Comm_create_errhandler instead."); + __mpi_interface_removed__(PMPI_Errhandler_create, PMPI_Comm_create_errhandler); OMPI_DECLSPEC int MPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler) - __mpi_interface_removed__("MPI_Errhandler_get was removed in MPI-3.0; use MPI_Comm_get_errhandler instead."); + __mpi_interface_removed__(MPI_Errhandler_get, MPI_Comm_get_errhandler); OMPI_DECLSPEC int PMPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler) - __mpi_interface_removed__("PMPI_Errhandler_get was removed in MPI-3.0; use PMPI_Comm_get_errhandler instead."); + __mpi_interface_removed__(PMPI_Errhandler_get, PMPI_Comm_get_errhandler); OMPI_DECLSPEC int MPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler) - __mpi_interface_removed__("MPI_Errhandler_set was removed in MPI-3.0; use MPI_Comm_set_errhandler instead."); + __mpi_interface_removed__(MPI_Errhandler_set, MPI_Comm_set_errhandler); OMPI_DECLSPEC int PMPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler) - __mpi_interface_removed__("PMPI_Errhandler_set was removed in MPI-3.0; use PMPI_Comm_set_errhandler instead."); + __mpi_interface_removed__(PMPI_Errhandler_set, PMPI_Comm_set_errhandler); OMPI_DECLSPEC int MPI_Type_extent(MPI_Datatype type, MPI_Aint *extent) - __mpi_interface_removed__("MPI_Type_extent was removed in MPI-3.0; use MPI_Type_get_extent instead."); + __mpi_interface_removed__(MPI_Type_extent, MPI_Type_get_extent); OMPI_DECLSPEC int PMPI_Type_extent(MPI_Datatype type, MPI_Aint *extent) - __mpi_interface_removed__("PMPI_Type_extent was removed in MPI-3.0; use PMPI_Type_get_extent instead."); + __mpi_interface_removed__(PMPI_Type_extent, PMPI_Type_get_extent); OMPI_DECLSPEC int MPI_Type_hindexed(int count, int array_of_blocklengths[], MPI_Aint array_of_displacements[], MPI_Datatype oldtype, MPI_Datatype *newtype) - __mpi_interface_removed__("MPI_Type_hindexed was removed in MPI-3.0; use MPI_Type_create_hindexed instead."); + __mpi_interface_removed__(MPI_Type_hindexed, MPI_Type_create_hindexed); OMPI_DECLSPEC int PMPI_Type_hindexed(int count, int array_of_blocklengths[], MPI_Aint array_of_displacements[], MPI_Datatype oldtype, MPI_Datatype *newtype) - __mpi_interface_removed__("PMPI_Type_hindexed was removed in MPI-3.0; use PMPI_Type_create_hindexed instead."); + __mpi_interface_removed__(PMPI_Type_hindexed, PMPI_Type_create_hindexed); OMPI_DECLSPEC int MPI_Type_hvector(int count, int blocklength, MPI_Aint stride, MPI_Datatype oldtype, MPI_Datatype *newtype) - __mpi_interface_removed__("MPI_Type_hvector was removed in MPI-3.0; use MPI_Type_create_hvector instead."); + __mpi_interface_removed__(MPI_Type_hvector, MPI_Type_create_hvector); OMPI_DECLSPEC int PMPI_Type_hvector(int count, int blocklength, MPI_Aint stride, MPI_Datatype oldtype, MPI_Datatype *newtype) - __mpi_interface_removed__("PMPI_Type_hvector was removed in MPI-3.0; use PMPI_Type_create_hvector instead."); + __mpi_interface_removed__(PMPI_Type_hvector, PMPI_Type_create_hvector); OMPI_DECLSPEC int MPI_Type_lb(MPI_Datatype type, MPI_Aint *lb) - __mpi_interface_removed__("MPI_Type_lb has been removed in MPI-3.0; use MPI_Type_get_extent instead."); + __mpi_interface_removed__(MPI_Type_lb, MPI_Type_get_extent); OMPI_DECLSPEC int PMPI_Type_lb(MPI_Datatype type, MPI_Aint *lb) - __mpi_interface_removed__("PMPI_Type_lb has been removed in MPI-3.0; use PMPI_Type_get_extent instead."); + __mpi_interface_removed__(PMPI_Type_lb, PMPI_Type_get_extent); OMPI_DECLSPEC int MPI_Type_struct(int count, int array_of_blocklengths[], MPI_Aint array_of_displacements[], MPI_Datatype array_of_types[], MPI_Datatype *newtype) - __mpi_interface_removed__("MPI_Type_struct was removed in MPI-3.0; use MPI_Type_create_struct instead."); + __mpi_interface_removed__(MPI_Type_struct, MPI_Type_create_struct); OMPI_DECLSPEC int PMPI_Type_struct(int count, int array_of_blocklengths[], MPI_Aint array_of_displacements[], MPI_Datatype array_of_types[], MPI_Datatype *newtype) - __mpi_interface_removed__("PMPI_Type_struct was removed in MPI-3.0; use PMPI_Type_create_struct instead."); + __mpi_interface_removed__(PMPI_Type_struct, PMPI_Type_create_struct); OMPI_DECLSPEC int MPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub) - __mpi_interface_removed__("MPI_Type_ub has been removed in MPI-3.0; use MPI_Type_get_extent instead."); + __mpi_interface_removed__(MPI_Type_ub, MPI_Type_get_extent); OMPI_DECLSPEC int PMPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub) - __mpi_interface_removed__("PMPI_Type_ub has been removed in MPI-3.0; use PMPI_Type_get_extent instead."); + __mpi_interface_removed__(PMPI_Type_ub, PMPI_Type_get_extent); #endif /* !OMPI_OMIT_MPI1_COMPAT_DECLS */ +#if OMPI_REMOVED_USE_STATIC_ASSERT +#define MPI_Address(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Address, MPI_Get_address) +#define MPI_Errhandler_create(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Errhandler_create, MPI_Comm_create_errhandler) +#define MPI_Errhandler_get(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Errhandler_get, MPI_Comm_get_errhandler) +#define MPI_Errhandler_set(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Errhandler_set, MPI_Comm_set_errhandler) +#define MPI_Type_extent(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Type_extent, MPI_Type_get_extent) +#define MPI_Type_hindexed(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Type_hindexed, MPI_Type_create_hindexed) +#define MPI_Type_hvector(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Type_hvector, MPI_Type_create_hvector) +#define MPI_Type_lb(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Type_lb, MPI_Type_get_extent) +#define MPI_Type_struct(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Type_struct, MPI_Type_create_struct) +#define MPI_Type_ub(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Type_ub, MPI_Type_get_extent) +#endif + #if defined(c_plusplus) || defined(__cplusplus) } #endif diff --git a/ompi/mpi/c/address.c b/ompi/mpi/c/address.c index 67b27bef58..0eead1faae 100644 --- a/ompi/mpi/c/address.c +++ b/ompi/mpi/c/address.c @@ -11,6 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2019 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -21,6 +22,12 @@ #include "ompi_config.h" #include +/* This implementation has been removed from the MPI 3.0 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. + */ + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" @@ -30,6 +37,10 @@ #if OPAL_HAVE_WEAK_SYMBOLS #pragma weak MPI_Address = PMPI_Address #endif +/* undef before defining, to prevent possible redefinition when + * using _Static_assert to error on usage of removed functions. + */ +#undef MPI_Address #define MPI_Address PMPI_Address #endif diff --git a/ompi/mpi/c/errhandler_create.c b/ompi/mpi/c/errhandler_create.c index cae93f98f4..44ad84b6e1 100644 --- a/ompi/mpi/c/errhandler_create.c +++ b/ompi/mpi/c/errhandler_create.c @@ -11,6 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2019 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -20,6 +21,12 @@ #include "ompi_config.h" +/* This implementation has been removed from the MPI 3.0 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. + */ + #include "ompi/mpi/c/bindings.h" #include "ompi/communicator/communicator.h" #include "ompi/errhandler/errhandler.h" @@ -28,6 +35,10 @@ #if OPAL_HAVE_WEAK_SYMBOLS #pragma weak MPI_Errhandler_create = PMPI_Errhandler_create #endif +/* undef before defining, to prevent possible redefinition when + * using _Static_assert to error on usage of removed functions. + */ +#undef MPI_Errhandler_create #define MPI_Errhandler_create PMPI_Errhandler_create #endif diff --git a/ompi/mpi/c/errhandler_get.c b/ompi/mpi/c/errhandler_get.c index 7125506b7e..a8f0ed6949 100644 --- a/ompi/mpi/c/errhandler_get.c +++ b/ompi/mpi/c/errhandler_get.c @@ -11,6 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2019 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -20,6 +21,12 @@ #include "ompi_config.h" +/* This implementation has been removed from the MPI 3.0 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. + */ + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" @@ -30,6 +37,10 @@ #if OPAL_HAVE_WEAK_SYMBOLS #pragma weak MPI_Errhandler_get = PMPI_Errhandler_get #endif +/* undef before defining, to prevent possible redefinition when + * using _Static_assert to error on usage of removed functions. + */ +#undef MPI_Errhandler_get #define MPI_Errhandler_get PMPI_Errhandler_get #endif diff --git a/ompi/mpi/c/errhandler_set.c b/ompi/mpi/c/errhandler_set.c index c861b05890..71501fc123 100644 --- a/ompi/mpi/c/errhandler_set.c +++ b/ompi/mpi/c/errhandler_set.c @@ -11,6 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2019 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -20,6 +21,12 @@ #include "ompi_config.h" +/* This implementation has been removed from the MPI 3.0 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. + */ + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" @@ -30,6 +37,10 @@ #if OPAL_HAVE_WEAK_SYMBOLS #pragma weak MPI_Errhandler_set = PMPI_Errhandler_set #endif +/* undef before defining, to prevent possible redefinition when + * using _Static_assert to error on usage of removed functions. + */ +#undef MPI_Errhandler_set #define MPI_Errhandler_set PMPI_Errhandler_set #endif diff --git a/ompi/mpi/c/type_extent.c b/ompi/mpi/c/type_extent.c index 4c4a4a5f59..ecf86f1417 100644 --- a/ompi/mpi/c/type_extent.c +++ b/ompi/mpi/c/type_extent.c @@ -11,6 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2019 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -20,6 +21,12 @@ #include "ompi_config.h" +/* This implementation has been removed from the MPI 3.0 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. + */ + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" @@ -31,6 +38,10 @@ #if OPAL_HAVE_WEAK_SYMBOLS #pragma weak MPI_Type_extent = PMPI_Type_extent #endif +/* undef before defining, to prevent possible redefinition when + * using _Static_assert to error on usage of removed functions. + */ +#undef MPI_Type_extent #define MPI_Type_extent PMPI_Type_extent #endif diff --git a/ompi/mpi/c/type_hindexed.c b/ompi/mpi/c/type_hindexed.c index 89d3b46bdd..ca12f4bb32 100644 --- a/ompi/mpi/c/type_hindexed.c +++ b/ompi/mpi/c/type_hindexed.c @@ -11,6 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2019 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -20,6 +21,12 @@ #include "ompi_config.h" +/* This implementation has been removed from the MPI 3.0 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. + */ + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" @@ -30,6 +37,10 @@ #if OPAL_HAVE_WEAK_SYMBOLS #pragma weak MPI_Type_hindexed = PMPI_Type_hindexed #endif +/* undef before defining, to prevent possible redefinition when + * using _Static_assert to error on usage of removed functions. + */ +#undef MPI_Type_hindexed #define MPI_Type_hindexed PMPI_Type_hindexed #endif diff --git a/ompi/mpi/c/type_hvector.c b/ompi/mpi/c/type_hvector.c index 2c1517b565..4117a64cc7 100644 --- a/ompi/mpi/c/type_hvector.c +++ b/ompi/mpi/c/type_hvector.c @@ -11,6 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2019 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -20,6 +21,12 @@ #include "ompi_config.h" +/* This implementation has been removed from the MPI 3.0 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. + */ + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" @@ -30,6 +37,10 @@ #if OPAL_HAVE_WEAK_SYMBOLS #pragma weak MPI_Type_hvector = PMPI_Type_hvector #endif +/* undef before defining, to prevent possible redefinition when + * using _Static_assert to error on usage of removed functions. + */ +#undef MPI_Type_hvector #define MPI_Type_hvector PMPI_Type_hvector #endif diff --git a/ompi/mpi/c/type_lb.c b/ompi/mpi/c/type_lb.c index 269f7bd245..07b8385d0d 100644 --- a/ompi/mpi/c/type_lb.c +++ b/ompi/mpi/c/type_lb.c @@ -11,6 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2019 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -20,6 +21,12 @@ #include "ompi_config.h" +/* This implementation has been removed from the MPI 3.0 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. + */ + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" @@ -31,6 +38,10 @@ #if OPAL_HAVE_WEAK_SYMBOLS #pragma weak MPI_Type_lb = PMPI_Type_lb #endif +/* undef before defining, to prevent possible redefinition when + * using _Static_assert to error on usage of removed functions. + */ +#undef MPI_Type_lb #define MPI_Type_lb PMPI_Type_lb #endif diff --git a/ompi/mpi/c/type_struct.c b/ompi/mpi/c/type_struct.c index 575e26453f..0151b99ac4 100644 --- a/ompi/mpi/c/type_struct.c +++ b/ompi/mpi/c/type_struct.c @@ -11,6 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2019 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -20,12 +21,22 @@ #include "ompi_config.h" +/* This implementation has been removed from the MPI 3.0 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. + */ + #include "ompi/mpi/c/bindings.h" #if OMPI_BUILD_MPI_PROFILING #if OPAL_HAVE_WEAK_SYMBOLS #pragma weak MPI_Type_struct = PMPI_Type_struct #endif +/* undef before defining, to prevent possible redefinition when + * using _Static_assert to error on usage of removed functions. + */ +#undef MPI_Type_struct #define MPI_Type_struct PMPI_Type_struct #endif diff --git a/ompi/mpi/c/type_ub.c b/ompi/mpi/c/type_ub.c index a7d16909d6..90755774d9 100644 --- a/ompi/mpi/c/type_ub.c +++ b/ompi/mpi/c/type_ub.c @@ -11,6 +11,7 @@ * All rights reserved. * Copyright (c) 2015 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2019 IBM Corporation. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -20,6 +21,12 @@ #include "ompi_config.h" +/* This implementation has been removed from the MPI 3.0 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. + */ + #include "ompi/mpi/c/bindings.h" #include "ompi/runtime/params.h" #include "ompi/communicator/communicator.h" @@ -31,6 +38,10 @@ #if OPAL_HAVE_WEAK_SYMBOLS #pragma weak MPI_Type_ub = PMPI_Type_ub #endif +/* undef before defining, to prevent possible redefinition when + * using _Static_assert to error on usage of removed functions. + */ +#undef MPI_Type_ub #define MPI_Type_ub PMPI_Type_ub #endif From a6d6be2853488cfb20128f97b381b3c94a921cd7 Mon Sep 17 00:00:00 2001 From: Geoffrey Paulsen Date: Fri, 15 Feb 2019 17:39:34 -0600 Subject: [PATCH 2/2] mpi.h.in: delete removed MPI1 functions/datatypes (API change!) This commit DELETES the removed MPI1 functions and datatypes from both the mpi.h header and from the library (they were deleted from the MPI standard in MPI-3.0). WARNING: This changes the MPI API in a non-backwards compatible way. This also removes the configure option that was added in Open MPI v4.0.x, requiring users to change their apps if they are using any of these almost 20 year old APIs. This commit removes the following MPI1 removed functions and datatypes: MPI_Address MPI_Errhandler_create MPI_Errhandler_get MPI_Errhandler_set MPI_Type_extent MPI_Type_hindexed MPI_Type_hvector MPI_Type_struct MPI_Type_UB MPI_Type_LB Signed-off-by: Geoffrey Paulsen --- config/ompi_config_files.m4 | 1 - ompi/datatype/ompi_datatype_args.c | 28 ++- ompi/include/mpi.h.in | 182 ------------------ ompi/mpi/c/Makefile.am | 14 -- ompi/mpi/c/address.c | 64 ------ ompi/mpi/c/errhandler_create.c | 53 ----- ompi/mpi/c/errhandler_get.c | 66 ------- ompi/mpi/c/errhandler_set.c | 66 ------- ompi/mpi/c/profile/Makefile.am | 14 -- ompi/mpi/c/type_extent.c | 73 ------- ompi/mpi/c/type_hindexed.c | 89 --------- ompi/mpi/c/type_hvector.c | 80 -------- ompi/mpi/c/type_lb.c | 73 ------- ompi/mpi/c/type_struct.c | 55 ------ ompi/mpi/c/type_ub.c | 77 -------- ompi/mpi/cxx/mpicxx.cc | 6 - .../mpi/fortran/configure-fortran-output.h.in | 2 - ompi/mpi/fortran/mpif-h/Makefile.am | 15 -- ompi/mpi/fortran/mpif-h/profile/Makefile.am | 14 -- .../fortran/use-mpi-ignore-tkr/Makefile.am | 5 +- .../use-mpi-ignore-tkr/mpi-ignore-tkr.F90 | 8 - ompi/mpi/fortran/use-mpi-tkr/Makefile.am | 4 - ompi/mpi/fortran/use-mpi-tkr/mpi.F90 | 9 - 23 files changed, 12 insertions(+), 986 deletions(-) delete mode 100644 ompi/mpi/c/address.c delete mode 100644 ompi/mpi/c/errhandler_create.c delete mode 100644 ompi/mpi/c/errhandler_get.c delete mode 100644 ompi/mpi/c/errhandler_set.c delete mode 100644 ompi/mpi/c/type_extent.c delete mode 100644 ompi/mpi/c/type_hindexed.c delete mode 100644 ompi/mpi/c/type_hvector.c delete mode 100644 ompi/mpi/c/type_lb.c delete mode 100644 ompi/mpi/c/type_struct.c delete mode 100644 ompi/mpi/c/type_ub.c diff --git a/config/ompi_config_files.m4 b/config/ompi_config_files.m4 index 274b404d75..b0c5ee47d1 100644 --- a/config/ompi_config_files.m4 +++ b/config/ompi_config_files.m4 @@ -36,7 +36,6 @@ AC_DEFUN([OMPI_CONFIG_FILES],[ ompi/mpi/fortran/use-mpi-ignore-tkr/Makefile ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-interfaces.h ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h - ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-removed-interfaces.h ompi/mpi/fortran/use-mpi-f08/Makefile ompi/mpi/fortran/use-mpi-f08/bindings/Makefile ompi/mpi/fortran/use-mpi-f08/mod/Makefile diff --git a/ompi/datatype/ompi_datatype_args.c b/ompi/datatype/ompi_datatype_args.c index 2063839ef3..8ed3a6ac42 100644 --- a/ompi/datatype/ompi_datatype_args.c +++ b/ompi/datatype/ompi_datatype_args.c @@ -841,25 +841,19 @@ ompi_datatype_t* ompi_datatype_get_single_predefined_type_from_args( ompi_dataty return NULL; } } -#if OMPI_ENABLE_MPI1_COMPAT - if (current_predef != MPI_LB && current_predef != MPI_UB) { -#endif - if( NULL == predef ) { /* This is the first iteration */ - predef = current_predef; - } else { - /** - * What exactly should we consider as identical types? - * If they are the same MPI level type, or if they map - * to the same OPAL datatype? In other words, MPI_FLOAT - * and MPI_REAL4 are they identical? - */ - if( predef != current_predef ) { - return NULL; - } + if( NULL == predef ) { /* This is the first iteration */ + predef = current_predef; + } else { + /** + * What exactly should we consider as identical types? + * If they are the same MPI level type, or if they map + * to the same OPAL datatype? In other words, MPI_FLOAT + * and MPI_REAL4 are they identical? + */ + if( predef != current_predef ) { + return NULL; } -#if OMPI_ENABLE_MPI1_COMPAT } -#endif } return predef; } diff --git a/ompi/include/mpi.h.in b/ompi/include/mpi.h.in index 55b81c1442..bf916920d0 100644 --- a/ompi/include/mpi.h.in +++ b/ompi/include/mpi.h.in @@ -137,9 +137,6 @@ /* Whether we have FORTRAN REAL*8 or not */ #undef OMPI_HAVE_FORTRAN_REAL8 -/* Whether in include MPI-1 compatibility */ -#undef OMPI_ENABLE_MPI1_COMPAT - /* Whether we have float _Complex or not */ #undef HAVE_FLOAT__COMPLEX @@ -280,50 +277,6 @@ # define __mpi_interface_deprecated__(msg) __attribute__((__deprecated__)) # endif # endif -# endif - - /* For MPI removed APIs, there is no generally portable way to cause - * the C compiler to error with a nice message, on the _usage_ of - * one of these symbols. We've gone with tiered appraoch: - * - * If the user configured with --enable-mpi1-compatibility, - * just emit a compiletime warning (via the deprecation function - * attribute) that they're using an MPI1 removed function. - * - * Otherwise, we'd like to issue a fatal error directing the user - * that they've used an MPI1 removed function. If the user's - * compiler supports C11 _Static_assert feature, we #define - * the MPI routines to instead be a call to _Static_assert - * with an appropreate message suggesting the new MPI3 equivalent. - * - * Otherwise, if the user's compiler supports the error function - * attribute, define the MPI routines with that error attribute. - * This is supported by most modern GNU compilers. - * - * Finally if the compiler doesn't support any of those, just - * Don't declare those MPI routines at all in mpi.h - * - * Don't do MACRO magic for building Profiling library as it - * interferes with the above. - */ -# if (OMPI_ENABLE_MPI1_COMPAT || OMPI_BUILDING) -# define OMPI_OMIT_MPI1_COMPAT_DECLS 0 -# define OMPI_REMOVED_USE_STATIC_ASSERT 0 -# define __mpi_interface_removed__(func, newfunc) __mpi_interface_deprecated__(#func " was removed in MPI-3.0. Use " #newfunc " instead. continuing...") -# elif (__STDC_VERSION__ >= 201112L) -# define OMPI_OMIT_MPI1_COMPAT_DECLS 1 -# define OMPI_REMOVED_USE_STATIC_ASSERT 1 -// This macro definition may show up in compiler output. So we both -// outdent it back to column 0 and give it a user-friendly name to -// help users grok what we are trying to tell them here. -#define THIS_SYMBOL_WAS_REMOVED_IN_MPI30(func, newfunc) _Static_assert(0, #func " was removed in MPI-3.0. Use " #newfunc " instead.") -# elif OPAL_HAVE_ATTRIBUTE_ERROR -# define OMPI_OMIT_MPI1_COMPAT_DECLS 0 -# define OMPI_REMOVED_USE_STATIC_ASSERT 0 -# define __mpi_interface_removed__(func, newfunc) __attribute__((__error__(#func " was removed in MPI-3.0. Use " #newfunc " instead."))) -# else -# define OMPI_OMIT_MPI1_COMPAT_DECLS 1 -# define OMPI_REMOVED_USE_STATIC_ASSERT 0 # endif # endif #endif @@ -337,22 +290,6 @@ # define __mpi_interface_deprecated__(msg) #endif -#if !defined(__mpi_interface_removed__) -# define __mpi_interface_removed__(A,B) -#endif - -#if !defined(THIS_SYMBOL_WAS_REMOVED_IN_MPI30) -# define THIS_SYMBOL_WAS_REMOVED_IN_MPI30(func, newfunc) -#endif - -#if !defined(OMPI_REMOVED_USE_STATIC_ASSERT) -# define OMPI_REMOVED_USE_STATIC_ASSERT 0 -#endif - -#if !defined(OMPI_OMIT_MPI1_COMPAT_DECLS) -# define OMPI_OMIT_MPI1_COMPAT_DECLS !OMPI_ENABLE_MPI1_COMPAT -#endif - /* * To accomodate programs written for MPI implementations that use a * straight ROMIO import @@ -1053,33 +990,6 @@ 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; -/* - * Removed datatypes. These datatypes are only available if Open MPI - * was configured with --enable-mpi1-compatibility. - * - * These datatypes were formally removed from the MPI specification - * and should no longer be used in MPI applications. - */ -#if (OMPI_ENABLE_MPI1_COMPAT || OMPI_BUILDING) -# define MPI_UB OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_ub) -# define MPI_LB OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_lb) - -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_lb; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ub; - -#else -/* If not building or configured --enable-mpi1-compatibility, then - * we don't want these datatypes, instead we define MPI_UB and - * MPI_LB to our Static Assert message if the compiler supports - * that staticly assert with a nice message. - */ -# if (OMPI_REMOVED_USE_STATIC_ASSERT) -# define MPI_UB THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_UB, MPI_Type_create_resized); -# define MPI_LB THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_LB, MPI_Type_create_resized); -# endif /* OMPI_REMOVED_USE_STATIC_ASSERT */ -#endif /* Removed datatypes */ - - /* * MPI predefined handles */ @@ -2730,98 +2640,6 @@ 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 -/* - * Removed typedefs. These typedefs are only available if Open MPI - * was configured with --enable-mpi1-compatibility. - * - * These typedefs were formally removed from the MPI specification - * and should no longer be used in MPI applications. - * - * Even though MPI_Handler_function is removed, we do not use the - * attributes marking it as such, because otherwise the compiler - * will warn for all the functions that are declared using them - * (e.g., MPI_Errhandler_create). - */ -typedef void (MPI_Handler_function)(MPI_Comm *, int *, ...); -/* MPI_Handler_function was removed in MPI-3.0; use MPI_Comm_use_errhandler_function instead. */ - -/* - * Removed prototypes. These prototypes are only available if Open - * MPI was configured with --enable-mpi1-compatibility. - * - * These functions were formally removed from the MPI specification - * and should no longer be used in MPI applications. - */ -OMPI_DECLSPEC int MPI_Address(void *location, MPI_Aint *address) - __mpi_interface_removed__(MPI_Address, MPI_Get_address); -OMPI_DECLSPEC int PMPI_Address(void *location, MPI_Aint *address) - __mpi_interface_removed__(PMPI_Address, PMPI_Get_address); -OMPI_DECLSPEC int MPI_Errhandler_create(MPI_Handler_function *function, - MPI_Errhandler *errhandler) - __mpi_interface_removed__(MPI_Errhandler_create, MPI_Comm_create_errhandler); -OMPI_DECLSPEC int PMPI_Errhandler_create(MPI_Handler_function *function, - MPI_Errhandler *errhandler) - __mpi_interface_removed__(PMPI_Errhandler_create, PMPI_Comm_create_errhandler); -OMPI_DECLSPEC int MPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler) - __mpi_interface_removed__(MPI_Errhandler_get, MPI_Comm_get_errhandler); -OMPI_DECLSPEC int PMPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler) - __mpi_interface_removed__(PMPI_Errhandler_get, PMPI_Comm_get_errhandler); -OMPI_DECLSPEC int MPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler) - __mpi_interface_removed__(MPI_Errhandler_set, MPI_Comm_set_errhandler); -OMPI_DECLSPEC int PMPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler) - __mpi_interface_removed__(PMPI_Errhandler_set, PMPI_Comm_set_errhandler); -OMPI_DECLSPEC int MPI_Type_extent(MPI_Datatype type, MPI_Aint *extent) - __mpi_interface_removed__(MPI_Type_extent, MPI_Type_get_extent); -OMPI_DECLSPEC int PMPI_Type_extent(MPI_Datatype type, MPI_Aint *extent) - __mpi_interface_removed__(PMPI_Type_extent, PMPI_Type_get_extent); -OMPI_DECLSPEC int MPI_Type_hindexed(int count, int array_of_blocklengths[], - MPI_Aint array_of_displacements[], - MPI_Datatype oldtype, MPI_Datatype *newtype) - __mpi_interface_removed__(MPI_Type_hindexed, MPI_Type_create_hindexed); -OMPI_DECLSPEC int PMPI_Type_hindexed(int count, int array_of_blocklengths[], - MPI_Aint array_of_displacements[], - MPI_Datatype oldtype, MPI_Datatype *newtype) - __mpi_interface_removed__(PMPI_Type_hindexed, PMPI_Type_create_hindexed); -OMPI_DECLSPEC int MPI_Type_hvector(int count, int blocklength, MPI_Aint stride, - MPI_Datatype oldtype, MPI_Datatype *newtype) - __mpi_interface_removed__(MPI_Type_hvector, MPI_Type_create_hvector); -OMPI_DECLSPEC int PMPI_Type_hvector(int count, int blocklength, MPI_Aint stride, - MPI_Datatype oldtype, MPI_Datatype *newtype) - __mpi_interface_removed__(PMPI_Type_hvector, PMPI_Type_create_hvector); -OMPI_DECLSPEC int MPI_Type_lb(MPI_Datatype type, MPI_Aint *lb) - __mpi_interface_removed__(MPI_Type_lb, MPI_Type_get_extent); -OMPI_DECLSPEC int PMPI_Type_lb(MPI_Datatype type, MPI_Aint *lb) - __mpi_interface_removed__(PMPI_Type_lb, PMPI_Type_get_extent); -OMPI_DECLSPEC int MPI_Type_struct(int count, int array_of_blocklengths[], - MPI_Aint array_of_displacements[], - MPI_Datatype array_of_types[], - MPI_Datatype *newtype) - __mpi_interface_removed__(MPI_Type_struct, MPI_Type_create_struct); -OMPI_DECLSPEC int PMPI_Type_struct(int count, int array_of_blocklengths[], - MPI_Aint array_of_displacements[], - MPI_Datatype array_of_types[], - MPI_Datatype *newtype) - __mpi_interface_removed__(PMPI_Type_struct, PMPI_Type_create_struct); -OMPI_DECLSPEC int MPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub) - __mpi_interface_removed__(MPI_Type_ub, MPI_Type_get_extent); -OMPI_DECLSPEC int PMPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub) - __mpi_interface_removed__(PMPI_Type_ub, PMPI_Type_get_extent); -#endif /* !OMPI_OMIT_MPI1_COMPAT_DECLS */ - -#if OMPI_REMOVED_USE_STATIC_ASSERT -#define MPI_Address(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Address, MPI_Get_address) -#define MPI_Errhandler_create(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Errhandler_create, MPI_Comm_create_errhandler) -#define MPI_Errhandler_get(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Errhandler_get, MPI_Comm_get_errhandler) -#define MPI_Errhandler_set(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Errhandler_set, MPI_Comm_set_errhandler) -#define MPI_Type_extent(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Type_extent, MPI_Type_get_extent) -#define MPI_Type_hindexed(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Type_hindexed, MPI_Type_create_hindexed) -#define MPI_Type_hvector(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Type_hvector, MPI_Type_create_hvector) -#define MPI_Type_lb(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Type_lb, MPI_Type_get_extent) -#define MPI_Type_struct(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Type_struct, MPI_Type_create_struct) -#define MPI_Type_ub(...) THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_Type_ub, MPI_Type_get_extent) -#endif - #if defined(c_plusplus) || defined(__cplusplus) } #endif diff --git a/ompi/mpi/c/Makefile.am b/ompi/mpi/c/Makefile.am index d4c822beba..846b21cb32 100644 --- a/ompi/mpi/c/Makefile.am +++ b/ompi/mpi/c/Makefile.am @@ -437,20 +437,6 @@ libmpi_c_mpi_la_SOURCES = \ win_wait.c -if OMPI_ENABLE_MPI1_COMPAT -libmpi_c_mpi_la_SOURCES += \ - address.c \ - errhandler_create.c \ - errhandler_get.c \ - errhandler_set.c \ - type_extent.c \ - type_hindexed.c \ - type_hvector.c \ - type_lb.c \ - type_struct.c \ - type_ub.c -endif - # Conditionally install the header files if WANT_INSTALL_HEADERS diff --git a/ompi/mpi/c/address.c b/ompi/mpi/c/address.c deleted file mode 100644 index 0eead1faae..0000000000 --- a/ompi/mpi/c/address.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2004-2007 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) 2015 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * Copyright (c) 2019 IBM Corporation. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" -#include - -/* This implementation has been removed from the MPI 3.0 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. - */ - -#include "ompi/mpi/c/bindings.h" -#include "ompi/runtime/params.h" -#include "ompi/communicator/communicator.h" -#include "ompi/errhandler/errhandler.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Address = PMPI_Address -#endif -/* undef before defining, to prevent possible redefinition when - * using _Static_assert to error on usage of removed functions. - */ -#undef MPI_Address -#define MPI_Address PMPI_Address -#endif - -static const char FUNC_NAME[] = "MPI_Address"; - - -int MPI_Address(void *location, MPI_Aint *address) -{ - - OPAL_CR_NOOP_PROGRESS(); - - if( MPI_PARAM_CHECK ) { - OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if (NULL == location || NULL == address) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG, FUNC_NAME); - } - } - - *address = (MPI_Aint)location; - return MPI_SUCCESS; -} diff --git a/ompi/mpi/c/errhandler_create.c b/ompi/mpi/c/errhandler_create.c deleted file mode 100644 index 44ad84b6e1..0000000000 --- a/ompi/mpi/c/errhandler_create.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2004-2007 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) 2015 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * Copyright (c) 2019 IBM Corporation. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -/* This implementation has been removed from the MPI 3.0 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. - */ - -#include "ompi/mpi/c/bindings.h" -#include "ompi/communicator/communicator.h" -#include "ompi/errhandler/errhandler.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Errhandler_create = PMPI_Errhandler_create -#endif -/* undef before defining, to prevent possible redefinition when - * using _Static_assert to error on usage of removed functions. - */ -#undef MPI_Errhandler_create -#define MPI_Errhandler_create PMPI_Errhandler_create -#endif - -int MPI_Errhandler_create(MPI_Handler_function *function, - MPI_Errhandler *errhandler) -{ - - /* This is a deprecated -- just turn around and call the real - function */ - - return PMPI_Comm_create_errhandler(function, errhandler); -} diff --git a/ompi/mpi/c/errhandler_get.c b/ompi/mpi/c/errhandler_get.c deleted file mode 100644 index a8f0ed6949..0000000000 --- a/ompi/mpi/c/errhandler_get.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2004-2007 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-2008 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) 2015 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * Copyright (c) 2019 IBM Corporation. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -/* This implementation has been removed from the MPI 3.0 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. - */ - -#include "ompi/mpi/c/bindings.h" -#include "ompi/runtime/params.h" -#include "ompi/communicator/communicator.h" -#include "ompi/errhandler/errhandler.h" -#include "ompi/memchecker.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Errhandler_get = PMPI_Errhandler_get -#endif -/* undef before defining, to prevent possible redefinition when - * using _Static_assert to error on usage of removed functions. - */ -#undef MPI_Errhandler_get -#define MPI_Errhandler_get PMPI_Errhandler_get -#endif - -static const char FUNC_NAME[] = "MPI_Errhandler_get"; - - -int MPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler) -{ - MEMCHECKER( - memchecker_comm(comm); - ); - - OPAL_CR_NOOP_PROGRESS(); - - if (MPI_PARAM_CHECK) { - OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - } - - /* This is a deprecated -- just turn around and call the real - function */ - - return PMPI_Comm_get_errhandler(comm, errhandler); -} diff --git a/ompi/mpi/c/errhandler_set.c b/ompi/mpi/c/errhandler_set.c deleted file mode 100644 index 71501fc123..0000000000 --- a/ompi/mpi/c/errhandler_set.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2004-2007 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-2008 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) 2015 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * Copyright (c) 2019 IBM Corporation. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -/* This implementation has been removed from the MPI 3.0 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. - */ - -#include "ompi/mpi/c/bindings.h" -#include "ompi/runtime/params.h" -#include "ompi/communicator/communicator.h" -#include "ompi/errhandler/errhandler.h" -#include "ompi/memchecker.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Errhandler_set = PMPI_Errhandler_set -#endif -/* undef before defining, to prevent possible redefinition when - * using _Static_assert to error on usage of removed functions. - */ -#undef MPI_Errhandler_set -#define MPI_Errhandler_set PMPI_Errhandler_set -#endif - -static const char FUNC_NAME[] = "MPI_Errhandler_set"; - - -int MPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler) -{ - MEMCHECKER( - memchecker_comm(comm); - ); - - OPAL_CR_NOOP_PROGRESS(); - - if (MPI_PARAM_CHECK) { - OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - } - - /* This is a deprecated -- just turn around and call the real - function */ - - return PMPI_Comm_set_errhandler(comm, errhandler); -} diff --git a/ompi/mpi/c/profile/Makefile.am b/ompi/mpi/c/profile/Makefile.am index 5330752db5..b7eee95a0e 100644 --- a/ompi/mpi/c/profile/Makefile.am +++ b/ompi/mpi/c/profile/Makefile.am @@ -416,20 +416,6 @@ nodist_libmpi_c_pmpi_la_SOURCES = \ pwin_unlock_all.c \ pwin_wait.c -if OMPI_ENABLE_MPI1_COMPAT -nodist_libmpi_c_pmpi_la_SOURCES += \ - paddress.c \ - perrhandler_create.c \ - perrhandler_get.c \ - perrhandler_set.c \ - ptype_extent.c \ - ptype_hindexed.c \ - ptype_hvector.c \ - 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 deleted file mode 100644 index ecf86f1417..0000000000 --- a/ompi/mpi/c/type_extent.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2004-2007 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-2008 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) 2015 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * Copyright (c) 2019 IBM Corporation. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -/* This implementation has been removed from the MPI 3.0 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. - */ - -#include "ompi/mpi/c/bindings.h" -#include "ompi/runtime/params.h" -#include "ompi/communicator/communicator.h" -#include "ompi/errhandler/errhandler.h" -#include "ompi/datatype/ompi_datatype.h" -#include "ompi/memchecker.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Type_extent = PMPI_Type_extent -#endif -/* undef before defining, to prevent possible redefinition when - * using _Static_assert to error on usage of removed functions. - */ -#undef MPI_Type_extent -#define MPI_Type_extent PMPI_Type_extent -#endif - -static const char FUNC_NAME[] = "MPI_Type_extent"; - - -int MPI_Type_extent(MPI_Datatype type, MPI_Aint *extent) -{ - int rc; - MPI_Aint lb; - - MEMCHECKER( - memchecker_datatype(type); - ); - - if (MPI_PARAM_CHECK) { - OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if (NULL == type || MPI_DATATYPE_NULL == type) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_TYPE, FUNC_NAME); - } else if (NULL == extent) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG, FUNC_NAME); - } - } - - OPAL_CR_ENTER_LIBRARY(); - - rc = ompi_datatype_get_extent( type, &lb, extent ); - OMPI_ERRHANDLER_RETURN(rc, MPI_COMM_WORLD, rc, FUNC_NAME ); -} diff --git a/ompi/mpi/c/type_hindexed.c b/ompi/mpi/c/type_hindexed.c deleted file mode 100644 index ca12f4bb32..0000000000 --- a/ompi/mpi/c/type_hindexed.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana - * University Research and Technology - * Corporation. All rights reserved. - * Copyright (c) 2004-2016 The University of Tennessee and The University - * of Tennessee Research Foundation. All rights - * reserved. - * Copyright (c) 2004-2008 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) 2015 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * Copyright (c) 2019 IBM Corporation. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -/* This implementation has been removed from the MPI 3.0 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. - */ - -#include "ompi/mpi/c/bindings.h" -#include "ompi/runtime/params.h" -#include "ompi/communicator/communicator.h" -#include "ompi/errhandler/errhandler.h" -#include "ompi/memchecker.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Type_hindexed = PMPI_Type_hindexed -#endif -/* undef before defining, to prevent possible redefinition when - * using _Static_assert to error on usage of removed functions. - */ -#undef MPI_Type_hindexed -#define MPI_Type_hindexed PMPI_Type_hindexed -#endif - -static const char FUNC_NAME[] = "MPI_Type_hindexed"; - - -int MPI_Type_hindexed(int count, - int array_of_blocklengths[], - MPI_Aint array_of_displacements[], - MPI_Datatype oldtype, - MPI_Datatype *newtype) -{ - int i; - - MEMCHECKER( - memchecker_datatype(oldtype); - ); - - if ( MPI_PARAM_CHECK ) { - OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if (NULL == oldtype || MPI_DATATYPE_NULL == oldtype || - NULL == newtype) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_TYPE, - FUNC_NAME ); - } else if (count < 0) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_COUNT, - FUNC_NAME ); - } else if ((count > 0) && (NULL == array_of_blocklengths || - NULL == array_of_displacements) ) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG, - FUNC_NAME ); - } - for (i = 0; i < count; ++i) { - if (array_of_blocklengths[i] < 0) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG, - FUNC_NAME ); - } - } - } - - return PMPI_Type_create_hindexed(count, - array_of_blocklengths, - array_of_displacements, - oldtype, - newtype); -} diff --git a/ompi/mpi/c/type_hvector.c b/ompi/mpi/c/type_hvector.c deleted file mode 100644 index 4117a64cc7..0000000000 --- a/ompi/mpi/c/type_hvector.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2004-2007 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-2008 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) 2015 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * Copyright (c) 2019 IBM Corporation. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -/* This implementation has been removed from the MPI 3.0 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. - */ - -#include "ompi/mpi/c/bindings.h" -#include "ompi/runtime/params.h" -#include "ompi/communicator/communicator.h" -#include "ompi/errhandler/errhandler.h" -#include "ompi/memchecker.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Type_hvector = PMPI_Type_hvector -#endif -/* undef before defining, to prevent possible redefinition when - * using _Static_assert to error on usage of removed functions. - */ -#undef MPI_Type_hvector -#define MPI_Type_hvector PMPI_Type_hvector -#endif - -static const char FUNC_NAME[] = "MPI_Type_hvector"; - - -int MPI_Type_hvector(int count, - int blocklength, - MPI_Aint stride, - MPI_Datatype oldtype, - MPI_Datatype *newtype) -{ - MEMCHECKER( - memchecker_datatype(oldtype); - ); - - if ( MPI_PARAM_CHECK ) { - OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if (NULL == oldtype || MPI_DATATYPE_NULL == oldtype || - NULL == newtype) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_TYPE, - FUNC_NAME ); - } else if (count < 0) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_COUNT, - FUNC_NAME ); - } else if (blocklength < 0) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG, - FUNC_NAME ); - } - } - - return PMPI_Type_create_hvector(count, - blocklength, - stride, - oldtype, - newtype); -} diff --git a/ompi/mpi/c/type_lb.c b/ompi/mpi/c/type_lb.c deleted file mode 100644 index 07b8385d0d..0000000000 --- a/ompi/mpi/c/type_lb.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2004-2007 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-2008 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) 2015 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * Copyright (c) 2019 IBM Corporation. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -/* This implementation has been removed from the MPI 3.0 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. - */ - -#include "ompi/mpi/c/bindings.h" -#include "ompi/runtime/params.h" -#include "ompi/communicator/communicator.h" -#include "ompi/errhandler/errhandler.h" -#include "ompi/datatype/ompi_datatype.h" -#include "ompi/memchecker.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Type_lb = PMPI_Type_lb -#endif -/* undef before defining, to prevent possible redefinition when - * using _Static_assert to error on usage of removed functions. - */ -#undef MPI_Type_lb -#define MPI_Type_lb PMPI_Type_lb -#endif - -static const char FUNC_NAME[] = "MPI_Type_lb"; - - -int MPI_Type_lb(MPI_Datatype type, MPI_Aint *lb) -{ - int rc; - MPI_Aint extent; - - MEMCHECKER( - memchecker_datatype(type); - ); - - if (MPI_PARAM_CHECK) { - OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if (NULL == type || MPI_DATATYPE_NULL == type) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_TYPE, FUNC_NAME); - } else if (NULL == lb) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG, FUNC_NAME); - } - } - - OPAL_CR_ENTER_LIBRARY(); - - rc = ompi_datatype_get_extent( type, lb, &extent ); - OMPI_ERRHANDLER_RETURN(rc, MPI_COMM_WORLD, rc, FUNC_NAME ); -} diff --git a/ompi/mpi/c/type_struct.c b/ompi/mpi/c/type_struct.c deleted file mode 100644 index 0151b99ac4..0000000000 --- a/ompi/mpi/c/type_struct.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2004-2007 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) 2015 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * Copyright (c) 2019 IBM Corporation. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -/* This implementation has been removed from the MPI 3.0 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. - */ - -#include "ompi/mpi/c/bindings.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Type_struct = PMPI_Type_struct -#endif -/* undef before defining, to prevent possible redefinition when - * using _Static_assert to error on usage of removed functions. - */ -#undef MPI_Type_struct -#define MPI_Type_struct PMPI_Type_struct -#endif - -int MPI_Type_struct(int count, - int array_of_blocklengths[], - MPI_Aint array_of_displacements[], - MPI_Datatype array_of_types[], - MPI_Datatype *newtype) -{ - /* the param check will be done if necessary on the MPI_Type_create_struct */ - return PMPI_Type_create_struct(count, - array_of_blocklengths, - array_of_displacements, - array_of_types, - newtype); -} diff --git a/ompi/mpi/c/type_ub.c b/ompi/mpi/c/type_ub.c deleted file mode 100644 index 90755774d9..0000000000 --- a/ompi/mpi/c/type_ub.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2004-2007 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-2008 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) 2015 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * Copyright (c) 2019 IBM Corporation. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "ompi_config.h" - -/* This implementation has been removed from the MPI 3.0 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. - */ - -#include "ompi/mpi/c/bindings.h" -#include "ompi/runtime/params.h" -#include "ompi/communicator/communicator.h" -#include "ompi/errhandler/errhandler.h" -#include "ompi/datatype/ompi_datatype.h" -#include "ompi/memchecker.h" - -#if OMPI_BUILD_MPI_PROFILING -#if OPAL_HAVE_WEAK_SYMBOLS -#pragma weak MPI_Type_ub = PMPI_Type_ub -#endif -/* undef before defining, to prevent possible redefinition when - * using _Static_assert to error on usage of removed functions. - */ -#undef MPI_Type_ub -#define MPI_Type_ub PMPI_Type_ub -#endif - -static const char FUNC_NAME[] = "MPI_Type_ub"; - - -int MPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub) -{ - MPI_Aint lb; - MPI_Aint extent; - int status; - - MEMCHECKER( - memchecker_datatype(mtype); - ); - - if (MPI_PARAM_CHECK) { - OMPI_ERR_INIT_FINALIZE(FUNC_NAME); - if (NULL == mtype || MPI_DATATYPE_NULL == mtype) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_TYPE, FUNC_NAME); - } else if (NULL == ub) { - return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG, FUNC_NAME); - } - } - - OPAL_CR_ENTER_LIBRARY(); - - status = ompi_datatype_get_extent( mtype, &lb, &extent ); - if (MPI_SUCCESS == status) { - *ub = lb + extent; - } - OMPI_ERRHANDLER_RETURN(status, MPI_COMM_WORLD, status, FUNC_NAME); -} diff --git a/ompi/mpi/cxx/mpicxx.cc b/ompi/mpi/cxx/mpicxx.cc index 103cfc24b4..8788b9aa2c 100644 --- a/ompi/mpi/cxx/mpicxx.cc +++ b/ompi/mpi/cxx/mpicxx.cc @@ -163,10 +163,4 @@ const char*** ARGVS_NULL = (const char***) MPI_ARGVS_NULL; // empty group const Group GROUP_EMPTY(MPI_GROUP_EMPTY); -#if OMPI_ENABLE_MPI1_COMPAT -// special datatypes for contstruction of derived datatypes -const Datatype UB(MPI_UB); -const Datatype LB(MPI_LB); -#endif - } /* namespace MPI */ diff --git a/ompi/mpi/fortran/configure-fortran-output.h.in b/ompi/mpi/fortran/configure-fortran-output.h.in index 6f1b82588a..7678966b53 100644 --- a/ompi/mpi/fortran/configure-fortran-output.h.in +++ b/ompi/mpi/fortran/configure-fortran-output.h.in @@ -106,8 +106,6 @@ #define OMPI_KIND_FORTRAN_COMPLEX32 @OMPI_KIND_FORTRAN_COMPLEX32@ #define OMPI_SIZEOF_FORTRAN_COMPLEX32 @OMPI_SIZEOF_FORTRAN_COMPLEX32@ -#define OMPI_ENABLE_MPI1_COMPAT @OMPI_ENABLE_MPI1_COMPAT@ - ! Include some post-processing, based on the values from above #include "ompi/mpi/fortran/configure-fortran-output-bottom.h" diff --git a/ompi/mpi/fortran/mpif-h/Makefile.am b/ompi/mpi/fortran/mpif-h/Makefile.am index 1b1f80d852..9e4729e693 100644 --- a/ompi/mpi/fortran/mpif-h/Makefile.am +++ b/ompi/mpi/fortran/mpif-h/Makefile.am @@ -483,21 +483,6 @@ lib@OMPI_LIBMPI_NAME@_mpifh_la_SOURCES += \ win_flush_all_f.c \ win_flush_local_f.c \ win_flush_local_all_f.c - - -if OMPI_ENABLE_MPI1_COMPAT -lib@OMPI_LIBMPI_NAME@_mpifh_la_SOURCES += \ - address_f.c \ - errhandler_create_f.c \ - errhandler_get_f.c \ - errhandler_set_f.c \ - type_extent_f.c \ - type_hindexed_f.c \ - type_hvector_f.c \ - type_lb_f.c \ - type_struct_f.c \ - type_ub_f.c -endif endif # diff --git a/ompi/mpi/fortran/mpif-h/profile/Makefile.am b/ompi/mpi/fortran/mpif-h/profile/Makefile.am index 35a9390f6f..c2f38c4d61 100644 --- a/ompi/mpi/fortran/mpif-h/profile/Makefile.am +++ b/ompi/mpi/fortran/mpif-h/profile/Makefile.am @@ -398,20 +398,6 @@ linked_files = \ pwin_flush_local_f.c \ pwin_flush_local_all_f.c -if OMPI_ENABLE_MPI1_COMPAT -linked_files += \ - paddress_f.c \ - perrhandler_create_f.c \ - perrhandler_get_f.c \ - perrhandler_set_f.c \ - ptype_extent_f.c \ - ptype_hindexed_f.c \ - ptype_hvector_f.c \ - 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/use-mpi-ignore-tkr/Makefile.am b/ompi/mpi/fortran/use-mpi-ignore-tkr/Makefile.am index 0c131e4f91..35bdbf40e4 100644 --- a/ompi/mpi/fortran/use-mpi-ignore-tkr/Makefile.am +++ b/ompi/mpi/fortran/use-mpi-ignore-tkr/Makefile.am @@ -28,13 +28,11 @@ lib_LTLIBRARIES = lib@OMPI_LIBMPI_NAME@_usempi_ignore_tkr.la mpi-ignore-tkr-interfaces.h: mpi-ignore-tkr-interfaces.h.in mpi-ignore-tkr-file-interfaces.h: mpi-ignore-tkr-file-interfaces.h.in -mpi-ignore-tkr-removed-interfaces.h: mpi-ignore-tkr-removed-interfaces.h.in mpi-ignore-tkr.lo: $(top_srcdir)/ompi/mpi/fortran/base/attr-fn-int-callback-interfaces.h mpi-ignore-tkr.lo: $(top_srcdir)/ompi/mpi/fortran/base/conversion-fn-null-int-interface.h mpi-ignore-tkr.lo: mpi-ignore-tkr-interfaces.h mpi-ignore-tkr.lo: mpi-ignore-tkr-file-interfaces.h -mpi-ignore-tkr.lo: mpi-ignore-tkr-removed-interfaces.h mpi-ignore-tkr.lo: mpi-ignore-tkr-sizeof.h mpi-ignore-tkr.lo: mpi-ignore-tkr-sizeof.f90 mpi-ignore-tkr.lo: mpi-ignore-tkr.F90 @@ -43,8 +41,7 @@ lib@OMPI_LIBMPI_NAME@_usempi_ignore_tkr_la_SOURCES = \ mpi-ignore-tkr.F90 nodist_lib@OMPI_LIBMPI_NAME@_usempi_ignore_tkr_la_SOURCES = \ mpi-ignore-tkr-interfaces.h \ - mpi-ignore-tkr-file-interfaces.h \ - mpi-ignore-tkr-removed-interfaces.h + mpi-ignore-tkr-file-interfaces.h if BUILD_FORTRAN_SIZEOF # These files are generated; do not distribute them diff --git a/ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr.F90 b/ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr.F90 index e19c4280a9..2104491cfa 100644 --- a/ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr.F90 +++ b/ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr.F90 @@ -43,14 +43,6 @@ module mpi include "ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-interfaces.h" include "ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h" -#if !defined(OMPI_ENABLE_MPI1_COMPAT) - -#error "Remove MPI-1 compat code" - -#elif OMPI_ENABLE_MPI1_COMPAT - include "ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-removed-interfaces.h" -#endif - include 'mpi-ignore-tkr-sizeof.h' end module mpi diff --git a/ompi/mpi/fortran/use-mpi-tkr/Makefile.am b/ompi/mpi/fortran/use-mpi-tkr/Makefile.am index 65c6fe2c0e..7d266c0273 100644 --- a/ompi/mpi/fortran/use-mpi-tkr/Makefile.am +++ b/ompi/mpi/fortran/use-mpi-tkr/Makefile.am @@ -60,12 +60,10 @@ lib_LTLIBRARIES += lib@OMPI_LIBMPI_NAME@_usempi.la mpi.lo: mpi.F90 mpi.lo: mpi-f90-interfaces.h mpi.lo: mpi-f90-file-interfaces.h -mpi.lo: mpi-f90-removed-interfaces.h mpi.lo: $(top_builddir)/ompi/mpi/fortran/configure-fortran-output.h mpi.lo: mpi-f90-cptr-interfaces.h mpi.lo: pmpi-f90-interfaces.h mpi.lo: pmpi-f90-file-interfaces.h -mpi.lo: pmpi-f90-removed-interfaces.h mpi.lo: pmpi-f90-cptr-interfaces.h # Per MPI-3 p610:34-41, if we're building a TKR mpi module, we should @@ -175,10 +173,8 @@ endif EXTRA_DIST = \ mpi-f90-interfaces.h \ mpi-f90-file-interfaces.h \ - mpi-f90-removed-interfaces.h \ mpi-f90-cptr-interfaces.h \ pmpi-f90-interfaces.h \ pmpi-f90-file-interfaces.h \ - pmpi-f90-removed-interfaces.h \ pmpi-f90-cptr-interfaces.h diff --git a/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 b/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 index 7073ffbb4e..9ac593a8d7 100644 --- a/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 +++ b/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 @@ -60,13 +60,4 @@ module mpi include "mpi-tkr-sizeof.h" #endif -#if !defined(OMPI_ENABLE_MPI1_COMPAT) - -#error "Remove MPI-1 compat code" - -#elif OMPI_ENABLE_MPI1_COMPAT - include "mpi-f90-removed-interfaces.h" - include "pmpi-f90-removed-interfaces.h" -#endif - end module mpi