diff --git a/CTestCustom.cmake.in b/CTestCustom.cmake.in index 0585b3ceb9..9adb03ef8c 100644 --- a/CTestCustom.cmake.in +++ b/CTestCustom.cmake.in @@ -19,6 +19,7 @@ list(APPEND CTEST_CUSTOM_WARNING_EXCEPTION "was built for newer macOS version" "warning generated" "warnings generated" + "warning: template parameter ... is not used in declaring the parameter types of function template" ) list(APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE ".*/thirdparty/.*" diff --git a/bindings/C/adios2/c/adios2_c_adios.cpp b/bindings/C/adios2/c/adios2_c_adios.cpp index cf376e8770..dd658e9b4b 100644 --- a/bindings/C/adios2/c/adios2_c_adios.cpp +++ b/bindings/C/adios2/c/adios2_c_adios.cpp @@ -65,11 +65,22 @@ adios2_adios *adios2_init_serial() return adios2_init_config_glue_serial("", "C"); } +adios2_adios *adios2_init_serial_debug(adios2_debug_mode) +{ + return adios2_init_serial(); +} + adios2_adios *adios2_init_config_serial(const char *config_file) { return adios2_init_config_glue_serial(config_file, "C"); } +adios2_adios *adios2_init_config_serial_debug(const char *config_file, + adios2_debug_mode) +{ + return adios2_init_config_serial(config_file); +} + adios2_io *adios2_declare_io(adios2_adios *adios, const char *name) { adios2_io *io = nullptr; diff --git a/bindings/C/adios2/c/adios2_c_adios.h b/bindings/C/adios2/c/adios2_c_adios.h index c50b5e83b2..676e024196 100644 --- a/bindings/C/adios2/c/adios2_c_adios.h +++ b/bindings/C/adios2/c/adios2_c_adios.h @@ -22,9 +22,9 @@ extern "C" { #endif #if ADIOS2_USE_MPI -#define adios2_init(comm) adios2_init_mpi(comm) -#define adios2_init_config(config_file, comm) \ - adios2_init_config_mpi(config_file, comm) +#define adios2_init(comm, debug) adios2_init_mpi_debug(comm, debug) +#define adios2_init_config(config_file, comm, debug) \ + adios2_init_config_mpi_debug(config_file, comm, debug) /** * Starting point for MPI apps. Creates an ADIOS handler. @@ -34,6 +34,9 @@ extern "C" { */ adios2_adios *adios2_init_mpi(MPI_Comm comm); +ADIOS2_DEPRECATED +adios2_adios *adios2_init_mpi_debug(MPI_Comm comm, adios2_debug_mode); + /** * Starting point for MPI apps. Creates an ADIOS handler allowing a runtime * config file. @@ -44,9 +47,15 @@ adios2_adios *adios2_init_mpi(MPI_Comm comm); * @return success: handler, failure: NULL */ adios2_adios *adios2_init_config_mpi(const char *config_file, MPI_Comm comm); + +ADIOS2_DEPRECATED +adios2_adios *adios2_init_config_mpi_debug(const char *config_file, + MPI_Comm comm, adios2_debug_mode); + #else -#define adios2_init() adios2_init_serial() -#define adios2_init_config(config_file) adios2_init_config_serial(config_file) +#define adios2_init(debug) adios2_init_serial_debug(debug) +#define adios2_init_config(config_file, debug) \ + adios2_init_config_serial_debug(config_file, debug) #endif /** @@ -56,6 +65,9 @@ adios2_adios *adios2_init_config_mpi(const char *config_file, MPI_Comm comm); */ adios2_adios *adios2_init_serial(void); +ADIOS2_DEPRECATED +adios2_adios *adios2_init_serial_debug(adios2_debug_mode); + /** * Initialize an ADIOS struct pointer handler in a serial, non-MPI application. * Doesn't require a runtime config file. @@ -63,6 +75,10 @@ adios2_adios *adios2_init_serial(void); */ adios2_adios *adios2_init_config_serial(const char *config_file); +ADIOS2_DEPRECATED +adios2_adios *adios2_init_config_serial_debug(const char *config_file, + adios2_debug_mode); + /** * Declares a new io handler * @param adios owner the io handler diff --git a/bindings/C/adios2/c/adios2_c_adios_mpi.cpp b/bindings/C/adios2/c/adios2_c_adios_mpi.cpp index 7ae76381ce..8df28532e5 100644 --- a/bindings/C/adios2/c/adios2_c_adios_mpi.cpp +++ b/bindings/C/adios2/c/adios2_c_adios_mpi.cpp @@ -41,9 +41,20 @@ adios2_adios *adios2_init_mpi(MPI_Comm comm) return adios2_init_config_glue_mpi("", comm, "C"); } +adios2_adios *adios2_init_mpi_debug(MPI_Comm comm, adios2_debug_mode) +{ + return adios2_init_mpi(comm); +} + adios2_adios *adios2_init_config_mpi(const char *config_file, MPI_Comm comm) { return adios2_init_config_glue_mpi(config_file, comm, "C"); } +adios2_adios *adios2_init_config_mpi_debug(const char *config_file, + MPI_Comm comm, adios2_debug_mode) +{ + return adios2_init_config_mpi(config_file, comm); +} + } // end extern C diff --git a/bindings/C/adios2/c/adios2_c_types.h b/bindings/C/adios2/c/adios2_c_types.h index c61504d32d..063ee3cece 100644 --- a/bindings/C/adios2/c/adios2_c_types.h +++ b/bindings/C/adios2/c/adios2_c_types.h @@ -61,6 +61,13 @@ typedef enum adios2_true = 1, } adios2_bool; +/* DEPRECATED: Debug mode will be removed in a future release */ +typedef enum +{ + adios2_debug_mode_off = 0, + adios2_debug_mode_on = 1, +} adios2_debug_mode; + typedef enum { adios2_constant_dims_false = 0, diff --git a/bindings/CXX11/adios2.h b/bindings/CXX11/adios2.h index a092053765..807363cdaa 100644 --- a/bindings/CXX11/adios2.h +++ b/bindings/CXX11/adios2.h @@ -15,6 +15,13 @@ #include "adios2/common/ADIOSMacros.h" #include "adios2/common/ADIOSTypes.h" +// DEPRECATED: Debug mode will be removed in a future release +namespace adios2 +{ +constexpr bool DebugON = true; +constexpr bool DebugOFF = false; +} // end namespace adios2 + #include "adios2/cxx11/ADIOS.h" #include "adios2/cxx11/Attribute.h" #include "adios2/cxx11/Engine.h" diff --git a/bindings/CXX11/adios2/cxx11/ADIOS.cpp b/bindings/CXX11/adios2/cxx11/ADIOS.cpp index 5f9120885f..48b2c60f9f 100644 --- a/bindings/CXX11/adios2/cxx11/ADIOS.cpp +++ b/bindings/CXX11/adios2/cxx11/ADIOS.cpp @@ -20,8 +20,6 @@ ADIOS::ADIOS(const std::string &configFile) { } -ADIOS::ADIOS(const char *configFile) : ADIOS(std::string(configFile), "C++") {} - ADIOS::ADIOS() : ADIOS("", "C++") {} ADIOS::ADIOS(const std::string &configFile, const std::string &hostLanguage) diff --git a/bindings/CXX11/adios2/cxx11/ADIOS.h b/bindings/CXX11/adios2/cxx11/ADIOS.h index 9d9e20e54c..3fd4da6b47 100644 --- a/bindings/CXX11/adios2/cxx11/ADIOS.h +++ b/bindings/CXX11/adios2/cxx11/ADIOS.h @@ -14,6 +14,7 @@ #include #include #include +#include #include "IO.h" #include "Operator.h" @@ -41,6 +42,10 @@ class ADIOS { public: + template + using enable_if_bool = + typename std::enable_if::value, bool>::type; + #if ADIOS2_USE_MPI /** * Starting point for MPI apps. Creates an ADIOS object. @@ -50,6 +55,11 @@ class ADIOS */ ADIOS(MPI_Comm comm); + template Enable = true> + ADIOS2_DEPRECATED ADIOS(MPI_Comm comm, TDebugMode) : ADIOS(comm) + { + } + /** * Starting point for MPI apps. Creates an ADIOS object allowing a * runtime config file. @@ -61,6 +71,13 @@ class ADIOS */ ADIOS(const std::string &configFile, MPI_Comm comm); + template Enable = true> + ADIOS2_DEPRECATED ADIOS(const std::string &configFile, MPI_Comm comm, + TDebugMode) + : ADIOS(configFile, comm) + { + } + /** extra constructor for R and other languages that use the * public C++ API but has data in column-major. Pass "" for configfile * if there is no config file. Last bool argument exist only to @@ -72,20 +89,14 @@ class ADIOS */ ADIOS(const std::string &configFile, MPI_Comm comm, const std::string &hostLanguage); -#else - // Client code that does not enable ADIOS2_USE_MPI may accidentally - // try to pass a MPI_Comm instance to our constructor. If the type - // the MPI library uses to implement MPI_Comm happens to be convertible - // to one of the types offered by our serial constructors (e.g. 'bool'), - // the invocation will appear to succeed but will ignore the - // communicator passed. Add explicitly deleted constructors that have - // better conversions for common MPI_Comm types. - - // openmpi uses 'ompi_communicator_t*' for MPI_Comm - ADIOS(void *define_ADIOS2_USE_MPI_to_use_MPI_constructor) = delete; - - // mpich uses 'int' for MPI_Comm - ADIOS(int define_ADIOS2_USE_MPI_to_use_MPI_constructor) = delete; + + template Enable = true> + ADIOS2_DEPRECATED ADIOS(const std::string &configFile, MPI_Comm comm, + const std::string &hostLanguage, TDebugMode) + : ADIOS(configFile, comm, hostLanguage) + { + } + #endif /** @@ -96,13 +107,11 @@ class ADIOS */ ADIOS(const std::string &configFile); - /** - * Starting point for non-MPI serial apps. Creates an ADIOS object allowing - * a runtime config file. - * @param configFile runtime config file - * @exception std::invalid_argument if user input is incorrect - */ - ADIOS(const char *configFile); + template Enable = true> + ADIOS2_DEPRECATED ADIOS(const std::string &configFile, TDebugMode) + : ADIOS(configFile) + { + } /** * Starting point for non-MPI apps. Creates an ADIOS object @@ -110,6 +119,11 @@ class ADIOS */ ADIOS(); + template Enable = true> + ADIOS2_DEPRECATED ADIOS(TDebugMode) : ADIOS() + { + } + /** extra constructor for R and other languages that use the * public C++ API but has data in column-major. Pass "" for configfile * if there is no config file. Last bool argument exist only to @@ -121,6 +135,13 @@ class ADIOS */ ADIOS(const std::string &configFile, const std::string &hostLanguage); + template Enable = true> + ADIOS2_DEPRECATED ADIOS(const std::string &configFile, + const std::string &hostLanguage, TDebugMode) + : ADIOS(configFile, hostLanguage) + { + } + /** object inspection true: valid object, false: invalid object */ explicit operator bool() const noexcept; diff --git a/examples/hello/bpWriter/helloBPWriter.c b/examples/hello/bpWriter/helloBPWriter.c index f034eb72ba..789f21e034 100644 --- a/examples/hello/bpWriter/helloBPWriter.c +++ b/examples/hello/bpWriter/helloBPWriter.c @@ -60,9 +60,9 @@ int main(int argc, char *argv[]) } #if ADIOS2_USE_MPI - adios2_adios *adios = adios2_init(MPI_COMM_WORLD); + adios2_adios *adios = adios2_init_mpi(MPI_COMM_WORLD); #else - adios2_adios *adios = adios2_init(); + adios2_adios *adios = adios2_init_serial(); #endif check_handler(adios, "adios"); diff --git a/source/adios2/common/ADIOSConfig.h.in b/source/adios2/common/ADIOSConfig.h.in index e92aa8d9bc..2fef35756b 100644 --- a/source/adios2/common/ADIOSConfig.h.in +++ b/source/adios2/common/ADIOSConfig.h.in @@ -14,7 +14,6 @@ #cmakedefine ADIOS2_VERSION_TWEAK @ADIOS2_VERSION_TWEAK@ #define ADIOS2_VERSION (ADIOS2_VERSION_MAJOR* 10000 + ADIOS2_VERSION_MINOR * 100 + ADIOS2_VERSION_PATCH) -#define ADIOS2_DEBUGMODE_REMOVED 1 /* * ADIOS Build Information: @@ -42,4 +41,14 @@ # error "ADIOS2 was not built with MPI enabled." #endif +#ifndef ADIOS2_DEPRECATED +# if defined(__GNUC__) || defined (__clang__) +# define ADIOS2_DEPRECATED __attribute__((deprecated)) +# elif defined(_MSC_VER) +# define ADIOS2_DEPRECATED __declspec(deprecated) +# else +# define ADIOS2_DEPRECATED +# endif +#endif + #endif /* ADIOSCONFIG_H_ */ diff --git a/testing/adios2/bindings/C/TestBPAvailableVariablesAttribites.cpp b/testing/adios2/bindings/C/TestBPAvailableVariablesAttribites.cpp index 103ef916ea..357ed70f2b 100644 --- a/testing/adios2/bindings/C/TestBPAvailableVariablesAttribites.cpp +++ b/testing/adios2/bindings/C/TestBPAvailableVariablesAttribites.cpp @@ -34,11 +34,11 @@ TEST_F(BPAvailableVariablesAttributes, AvailableVariablesAttributes) size_t steps = 5; #if ADIOS2_USE_MPI - adios2_adios *adiosH = adios2_init(MPI_COMM_WORLD); + adios2_adios *adiosH = adios2_init_mpi(MPI_COMM_WORLD); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); #else - adios2_adios *adiosH = adios2_init(); + adios2_adios *adiosH = adios2_init_serial(); #endif // count dims are allocated in stack diff --git a/testing/adios2/bindings/C/TestBPWriteAggregateReadLocal.cpp b/testing/adios2/bindings/C/TestBPWriteAggregateReadLocal.cpp index ce4669e089..790ea42580 100644 --- a/testing/adios2/bindings/C/TestBPWriteAggregateReadLocal.cpp +++ b/testing/adios2/bindings/C/TestBPWriteAggregateReadLocal.cpp @@ -36,7 +36,7 @@ void LocalAggregate1D(const std::string substreams) std::vector inumbers(NSteps * Nx); std::vector fnumbers(NSteps * Nx); - adios2_adios *adiosH = adios2_init(MPI_COMM_WORLD); + adios2_adios *adiosH = adios2_init_mpi(MPI_COMM_WORLD); // writer { @@ -175,7 +175,7 @@ void LocalAggregate1DBlock0(const std::string substreams) std::vector inumbers(NSteps * Nx); std::vector fnumbers(NSteps * Nx); - adios2_adios *adiosH = adios2_init(MPI_COMM_WORLD); + adios2_adios *adiosH = adios2_init_mpi(MPI_COMM_WORLD); // writer { diff --git a/testing/adios2/bindings/C/TestBPWriteReadMultiblock.cpp b/testing/adios2/bindings/C/TestBPWriteReadMultiblock.cpp index f501f6d22a..339d6b8711 100644 --- a/testing/adios2/bindings/C/TestBPWriteReadMultiblock.cpp +++ b/testing/adios2/bindings/C/TestBPWriteReadMultiblock.cpp @@ -31,11 +31,11 @@ TEST_F(BPWriteReadMultiblockCC, ZeroSizeBlocks) size_t steps = 5; #if ADIOS2_USE_MPI - adios2_adios *adiosH = adios2_init(MPI_COMM_WORLD); + adios2_adios *adiosH = adios2_init_mpi(MPI_COMM_WORLD); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); #else - adios2_adios *adiosH = adios2_init(); + adios2_adios *adiosH = adios2_init_serial(); #endif // count dims are allocated in stack diff --git a/testing/adios2/bindings/C/TestBPWriteTypes.cpp b/testing/adios2/bindings/C/TestBPWriteTypes.cpp index 72552af884..f2911360f5 100644 --- a/testing/adios2/bindings/C/TestBPWriteTypes.cpp +++ b/testing/adios2/bindings/C/TestBPWriteTypes.cpp @@ -28,11 +28,11 @@ class ADIOS2_C_API : public ::testing::Test ADIOS2_C_API() { #if ADIOS2_USE_MPI - adiosH = adios2_init(MPI_COMM_WORLD); + adiosH = adios2_init_mpi(MPI_COMM_WORLD); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); #else - adiosH = adios2_init(); + adiosH = adios2_init_serial(); #endif } diff --git a/testing/adios2/bindings/C/TestNullWriteRead.cpp b/testing/adios2/bindings/C/TestNullWriteRead.cpp index 8bd50b39b6..f5800c8f33 100644 --- a/testing/adios2/bindings/C/TestNullWriteRead.cpp +++ b/testing/adios2/bindings/C/TestNullWriteRead.cpp @@ -44,9 +44,9 @@ TEST_F(NullWriteReadTests_C_API, NullWriteRead1D8) // Write test data using BP #if ADIOS2_USE_MPI - adios2_adios *adios = adios2_init(MPI_COMM_WORLD); + adios2_adios *adios = adios2_init_mpi(MPI_COMM_WORLD); #else - adios2_adios *adios = adios2_init(); + adios2_adios *adios = adios2_init_serial(); #endif { adios2_io *io = adios2_declare_io(adios, "WriteNull"); diff --git a/testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp b/testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp index ae2468df7b..387086fc73 100644 --- a/testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp +++ b/testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp @@ -839,9 +839,9 @@ TEST_F(BPWriteReadBlockInfo, BPWriteReadBlockInfo1D8_C) { #if ADIOS2_USE_MPI - adios2_adios *adiosH = adios2_init(MPI_COMM_WORLD); + adios2_adios *adiosH = adios2_init_mpi(MPI_COMM_WORLD); #else - adios2_adios *adiosH = adios2_init(); + adios2_adios *adiosH = adios2_init_serial(); #endif adios2_io *ioR = adios2_declare_io(adiosH, "ReadIO"); if (!engineName.empty()) diff --git a/testing/adios2/performance/manyvars/PerfManyVars.c b/testing/adios2/performance/manyvars/PerfManyVars.c index 848c0c939b..ff33676473 100644 --- a/testing/adios2/performance/manyvars/PerfManyVars.c +++ b/testing/adios2/performance/manyvars/PerfManyVars.c @@ -210,7 +210,7 @@ int main(int argc, char **argv) } alloc_vars(); - adios2_adios *adiosH = adios2_init(MPI_COMM_WORLD); + adios2_adios *adiosH = adios2_init_mpi(MPI_COMM_WORLD); ioW = adios2_declare_io(adiosH, "multiblockwrite"); // group for writing ioR = adios2_declare_io(adiosH, "multiblockread"); // group for reading set_gdim(); diff --git a/testing/adios2/performance/manyvars/TestManyVars.cpp b/testing/adios2/performance/manyvars/TestManyVars.cpp index 8f2eb87309..9e6cc7874b 100644 --- a/testing/adios2/performance/manyvars/TestManyVars.cpp +++ b/testing/adios2/performance/manyvars/TestManyVars.cpp @@ -252,9 +252,9 @@ class TestManyVars : public ::testing::TestWithParam alloc_vars(); #if ADIOS2_USE_MPI - adios2_adios *adiosH = adios2_init(MPI_COMM_WORLD); + adios2_adios *adiosH = adios2_init_mpi(MPI_COMM_WORLD); #else - adios2_adios *adiosH = adios2_init(); + adios2_adios *adiosH = adios2_init_serial(); #endif ioW = adios2_declare_io(adiosH, "multiblockwrite"); // group for writing diff --git a/testing/install/C/main_mpi.c b/testing/install/C/main_mpi.c index b5e1334f03..9341094fe9 100644 --- a/testing/install/C/main_mpi.c +++ b/testing/install/C/main_mpi.c @@ -17,7 +17,7 @@ int main(int argc, char **argv) { MPI_Init(&argc, &argv); - adios2_adios *adios = adios2_init(MPI_COMM_WORLD); + adios2_adios *adios = adios2_init_mpi(MPI_COMM_WORLD); if (!adios) { fprintf(stderr, "adios2_init() failed\n"); diff --git a/testing/install/C/main_nompi.c b/testing/install/C/main_nompi.c index 6f232a15bd..57899d0624 100644 --- a/testing/install/C/main_nompi.c +++ b/testing/install/C/main_nompi.c @@ -13,10 +13,10 @@ int main(void) { - adios2_adios *adios = adios2_init(); + adios2_adios *adios = adios2_init_serial(); if (!adios) { - fprintf(stderr, "adios2_init() failed\n"); + fprintf(stderr, "adios2_init_serial() failed\n"); return 1; } adios2_finalize(adios); diff --git a/testing/utils/cwriter/TestUtilsCWriter.c b/testing/utils/cwriter/TestUtilsCWriter.c index 9cf1a62e37..fc1779f2d1 100644 --- a/testing/utils/cwriter/TestUtilsCWriter.c +++ b/testing/utils/cwriter/TestUtilsCWriter.c @@ -27,9 +27,9 @@ int main(int argc, char *argv[]) MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); - adios2_adios *adiosH = adios2_init(MPI_COMM_WORLD); + adios2_adios *adiosH = adios2_init_mpi(MPI_COMM_WORLD); #else - adios2_adios *adiosH = adios2_init(); + adios2_adios *adiosH = adios2_init_serial(); #endif char engineName[32] = "BPFile";