Loading CMakeLists.txt +11 −5 Original line number Diff line number Diff line Loading @@ -174,6 +174,8 @@ separate_arguments(MPIEXEC_PREFLAGS UNIX_COMMAND ${MPIEXEC_PREFLAGS}) set(gtest_dir "${PROJECT_SOURCE_DIR}/libs/googletest-1.8.0" CACHE PATH "Path to Google Test.") mark_as_advanced(gtest_dir) set(benchmark_dir "${PROJECT_SOURCE_DIR}/libs/benchmark" CACHE PATH "Path to Google Benchmark.") mark_as_advanced(benchmark_dir) if (DCA_WITH_TESTS_FAST OR DCA_WITH_TESTS_EXTENSIVE OR DCA_WITH_TESTS_STOCHASTIC OR DCA_WITH_TESTS_PERFORMANCE) Loading @@ -186,16 +188,20 @@ if (DCA_WITH_TESTS_FAST OR DCA_WITH_TESTS_EXTENSIVE OR DCA_WITH_TESTS_STOCHASTI message(WARNING "Tests are built with NDEBUG defined!") endif() if (DCA_WITH_TESTS_PERFORMANCE AND NOT (CMAKE_BUILD_TYPE STREQUAL "Release")) set(BENCHMARK_ENABLE_TESTING OFF) add_subdirectory(${gtest_dir}) add_subdirectory(${PROJECT_SOURCE_DIR}/test) if (DCA_WITH_TESTS_PERFORMANCE) if(NOT (CMAKE_BUILD_TYPE STREQUAL "Release")) message(WARNING "Performance tests are only built in release mode.") endif() add_subdirectory(${benchmark_dir}) endif() if (DCA_HAVE_MPI AND (TEST_RUNNER STREQUAL "")) message(FATAL_ERROR "TEST_RUNNER needs to be set to the command for executing MPI programs, e.g. mpiexec, mpirun, aprun or srun.") endif() add_subdirectory(${gtest_dir}) add_subdirectory(${PROJECT_SOURCE_DIR}/test) endif() ################################################################################ Loading CTestConfig.cmake +1 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ set(CTEST_PROJECT_NAME "DCA") set(CTEST_NIGHTLY_START_TIME "00:00:00 GMT") set(CTEST_DROP_METHOD "http") set(CTEST_DROP_METHOD "https") set(CTEST_DROP_SITE "cdash.cscs.ch") set(CTEST_DROP_LOCATION "/submit.php?project=DCA") set(CTEST_DROP_SITE_CDASH TRUE) Loading applications/dca/main_dca.cpp +18 −17 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include "dca/io/json/json_reader.hpp" #include "dca/util/git_version.hpp" #include "dca/util/modules.hpp" #include "dca/application/dca_loop_dispatch.hpp" int main(int argc, char** argv) { if (argc < 2) { Loading Loading @@ -71,23 +72,23 @@ int main(int argc, char** argv) { DcaDataType dca_data(parameters); dca_data.initialize(); DcaLoopType dca_loop(parameters, dca_data, concurrency); { Profiler profiler(__FUNCTION__, __FILE__, __LINE__); dca_loop.initialize(); dca_loop.execute(); dca_loop.finalize(); } Profiler::stop(concurrency, parameters.get_filename_profiling()); if (concurrency.id() == concurrency.first()) { std::cout << "\nProcessor " << concurrency.id() << " is writing data." << std::endl; dca_loop.write(); std::cout << "\nFinish time: " << dca::util::print_time() << "\n" << std::endl; dca::DistType distribution = parameters.get_g4_distribution(); switch (distribution) { #ifdef DCA_HAVE_MPI case dca::DistType::MPI: { DCALoopDispatch<dca::DistType::MPI> dca_loop_dispatch; dca_loop_dispatch(parameters, dca_data, concurrency); } break; #else case dca::DistType::MPI: { throw std::runtime_error( "Input calls for function MPI distribution but DCA is not built with MPI."); } break; #endif case dca::DistType::NONE: { DCALoopDispatch<dca::DistType::NONE> dca_loop_dispatch; dca_loop_dispatch(parameters, dca_data, concurrency); } break; } } catch (const std::exception& err) { Loading build-aux/summit.cmake +2 −1 Original line number Diff line number Diff line Loading @@ -23,10 +23,11 @@ set(MPIEXEC_PREFLAGS "-a 1 -g 1 -c 5" CACHE STRING set(SMPIARGS_FLAG_NOMPI "--smpiargs=none" CACHE STRING "Spectrum MPI argument list flag for serial tests.") # Let's keep this option in case we need it again in the future. set(SMPIARGS_FLAG_MPI "" CACHE STRING "Spectrum MPI argument list flag for MPI tests.") set(SMPIARGS_FLAG_MPI "--smpiargs=\"-gpu\"" CACHE STRING "Spectrum MPI argument list flag for MPI tests.") # Enable the GPU support. option(DCA_WITH_CUDA "Enable GPU support." ON) option(DCA_WITH_CUDA_AWARE_MPI "Enable CUDA aware MPI." ON) # Compile for Volta compute architecture. set(CUDA_GPU_ARCH "sm_70" CACHE STRING "Name of the *real* architecture to build for.") Loading cmake/dca_config.cmake +33 −9 Original line number Diff line number Diff line Loading @@ -209,18 +209,32 @@ configure_file("${PROJECT_SOURCE_DIR}/include/dca/config/rng.hpp.in" ################################################################################ # Select the cluster solver. set(DCA_CLUSTER_SOLVER "CT-AUX" CACHE STRING "The cluster solver for the DCA(+) loop. Options are: CT-AUX | SS-CT-HYB.") set_property(CACHE DCA_CLUSTER_SOLVER PROPERTY STRINGS CT-AUX SS-CT-HYB) "The cluster solver for the DCA(+) loop. Options are: CT-AUX | CT-INT | SS-CT-HYB.") set_property(CACHE DCA_CLUSTER_SOLVER PROPERTY STRINGS CT-AUX CT-INT SS-CT-HYB) if (DCA_CLUSTER_SOLVER STREQUAL "CT-AUX") if (DCA_CLUSTER_SOLVER STREQUAL "CT-INT") set(DCA_CLUSTER_SOLVER_NAME dca::phys::solver::CT_INT) set(DCA_CLUSTER_SOLVER_INCLUDE "dca/phys/dca_step/cluster_solver/ctint/ctint_cluster_solver.hpp") set(DCA_USE_CTINT_SUBMATRIX ON CACHE BOOL "Use submatrix updates if the CT-INT solver is selected.") if(DCA_USE_CTINT_SUBMATRIX) set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::CtintClusterSolver<walker_device, ParametersType, true>") else() set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::CtintClusterSolver<walker_device, ParametersType, false>") endif() elseif (DCA_CLUSTER_SOLVER STREQUAL "CT-AUX") set(DCA_CLUSTER_SOLVER_NAME dca::phys::solver::CT_AUX) set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::CtauxClusterSolver<walker_device, ParametersType, DcaDataType>") set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::CtauxClusterSolver<walker_device, ParametersType, DcaDataType, DIST>") set(DCA_CLUSTER_SOLVER_INCLUDE "dca/phys/dca_step/cluster_solver/ctaux/ctaux_cluster_solver.hpp") elseif (DCA_CLUSTER_SOLVER STREQUAL "SS-CT-HYB") set(DCA_CLUSTER_SOLVER_NAME dca::phys::solver::SS_CT_HYB) set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::SsCtHybClusterSolver<walker_device, ParametersType, DcaDataType>") set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::SsCtHybClusterSolver<walker_device, ParametersType, DcaDataType, DIST>") set(DCA_CLUSTER_SOLVER_INCLUDE "dca/phys/dca_step/cluster_solver/ss_ct_hyb/ss_ct_hyb_cluster_solver.hpp") Loading @@ -230,7 +244,8 @@ elseif (DCA_CLUSTER_SOLVER STREQUAL "SS-CT-HYB") # "dca/phys/dca_step/cluster_solver/high_temperature_series_expansion/high_temperature_series_expansion_solver.hpp") else() message(FATAL_ERROR "Please set DCA_CLUSTER_SOLVER to a valid option: CT-AUX | SS-CT-HYB.") message(FATAL_ERROR "Please set DCA_CLUSTER_SOLVER to a valid option: CT-AUX | CT_INT | SS-CT-HYB.") endif() ################################################################################ Loading @@ -245,7 +260,7 @@ option(DCA_WITH_THREADED_SOLVER "Use multiple walker and accumulator threads in if (DCA_WITH_THREADED_SOLVER) dca_add_config_define(DCA_WITH_THREADED_SOLVER) set(DCA_THREADED_SOLVER_TYPE dca::phys::solver::StdThreadQmciClusterSolver<ClusterSolverBaseType>) set(DCA_THREADED_SOLVER_TYPE dca::phys::solver::StdThreadQmciClusterSolver<ClusterSolverBaseType<DIST>>) set(DCA_THREADED_SOLVER_INCLUDE "dca/phys/dca_step/cluster_solver/stdthread_qmci/stdthread_qmci_cluster_solver.hpp") endif() Loading Loading @@ -320,6 +335,15 @@ configure_file("${PROJECT_SOURCE_DIR}/include/dca/config/mc_options.hpp.in" "${CMAKE_BINARY_DIR}/include/dca/config/mc_options.hpp" @ONLY) ################################################################################ # Symmetrization option(DCA_SYMMETRIZE "Apply cluster, time and frequency symmetries to single particle functions." ON) if(DCA_SYMMETRIZE) add_compile_definitions(DCA_WITH_SYMMETRIZATION) endif() ################################################################################ # Generate applications' config files. configure_file("${PROJECT_SOURCE_DIR}/include/dca/config/analysis.hpp.in" Loading Loading
CMakeLists.txt +11 −5 Original line number Diff line number Diff line Loading @@ -174,6 +174,8 @@ separate_arguments(MPIEXEC_PREFLAGS UNIX_COMMAND ${MPIEXEC_PREFLAGS}) set(gtest_dir "${PROJECT_SOURCE_DIR}/libs/googletest-1.8.0" CACHE PATH "Path to Google Test.") mark_as_advanced(gtest_dir) set(benchmark_dir "${PROJECT_SOURCE_DIR}/libs/benchmark" CACHE PATH "Path to Google Benchmark.") mark_as_advanced(benchmark_dir) if (DCA_WITH_TESTS_FAST OR DCA_WITH_TESTS_EXTENSIVE OR DCA_WITH_TESTS_STOCHASTIC OR DCA_WITH_TESTS_PERFORMANCE) Loading @@ -186,16 +188,20 @@ if (DCA_WITH_TESTS_FAST OR DCA_WITH_TESTS_EXTENSIVE OR DCA_WITH_TESTS_STOCHASTI message(WARNING "Tests are built with NDEBUG defined!") endif() if (DCA_WITH_TESTS_PERFORMANCE AND NOT (CMAKE_BUILD_TYPE STREQUAL "Release")) set(BENCHMARK_ENABLE_TESTING OFF) add_subdirectory(${gtest_dir}) add_subdirectory(${PROJECT_SOURCE_DIR}/test) if (DCA_WITH_TESTS_PERFORMANCE) if(NOT (CMAKE_BUILD_TYPE STREQUAL "Release")) message(WARNING "Performance tests are only built in release mode.") endif() add_subdirectory(${benchmark_dir}) endif() if (DCA_HAVE_MPI AND (TEST_RUNNER STREQUAL "")) message(FATAL_ERROR "TEST_RUNNER needs to be set to the command for executing MPI programs, e.g. mpiexec, mpirun, aprun or srun.") endif() add_subdirectory(${gtest_dir}) add_subdirectory(${PROJECT_SOURCE_DIR}/test) endif() ################################################################################ Loading
CTestConfig.cmake +1 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ set(CTEST_PROJECT_NAME "DCA") set(CTEST_NIGHTLY_START_TIME "00:00:00 GMT") set(CTEST_DROP_METHOD "http") set(CTEST_DROP_METHOD "https") set(CTEST_DROP_SITE "cdash.cscs.ch") set(CTEST_DROP_LOCATION "/submit.php?project=DCA") set(CTEST_DROP_SITE_CDASH TRUE) Loading
applications/dca/main_dca.cpp +18 −17 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include "dca/io/json/json_reader.hpp" #include "dca/util/git_version.hpp" #include "dca/util/modules.hpp" #include "dca/application/dca_loop_dispatch.hpp" int main(int argc, char** argv) { if (argc < 2) { Loading Loading @@ -71,23 +72,23 @@ int main(int argc, char** argv) { DcaDataType dca_data(parameters); dca_data.initialize(); DcaLoopType dca_loop(parameters, dca_data, concurrency); { Profiler profiler(__FUNCTION__, __FILE__, __LINE__); dca_loop.initialize(); dca_loop.execute(); dca_loop.finalize(); } Profiler::stop(concurrency, parameters.get_filename_profiling()); if (concurrency.id() == concurrency.first()) { std::cout << "\nProcessor " << concurrency.id() << " is writing data." << std::endl; dca_loop.write(); std::cout << "\nFinish time: " << dca::util::print_time() << "\n" << std::endl; dca::DistType distribution = parameters.get_g4_distribution(); switch (distribution) { #ifdef DCA_HAVE_MPI case dca::DistType::MPI: { DCALoopDispatch<dca::DistType::MPI> dca_loop_dispatch; dca_loop_dispatch(parameters, dca_data, concurrency); } break; #else case dca::DistType::MPI: { throw std::runtime_error( "Input calls for function MPI distribution but DCA is not built with MPI."); } break; #endif case dca::DistType::NONE: { DCALoopDispatch<dca::DistType::NONE> dca_loop_dispatch; dca_loop_dispatch(parameters, dca_data, concurrency); } break; } } catch (const std::exception& err) { Loading
build-aux/summit.cmake +2 −1 Original line number Diff line number Diff line Loading @@ -23,10 +23,11 @@ set(MPIEXEC_PREFLAGS "-a 1 -g 1 -c 5" CACHE STRING set(SMPIARGS_FLAG_NOMPI "--smpiargs=none" CACHE STRING "Spectrum MPI argument list flag for serial tests.") # Let's keep this option in case we need it again in the future. set(SMPIARGS_FLAG_MPI "" CACHE STRING "Spectrum MPI argument list flag for MPI tests.") set(SMPIARGS_FLAG_MPI "--smpiargs=\"-gpu\"" CACHE STRING "Spectrum MPI argument list flag for MPI tests.") # Enable the GPU support. option(DCA_WITH_CUDA "Enable GPU support." ON) option(DCA_WITH_CUDA_AWARE_MPI "Enable CUDA aware MPI." ON) # Compile for Volta compute architecture. set(CUDA_GPU_ARCH "sm_70" CACHE STRING "Name of the *real* architecture to build for.") Loading
cmake/dca_config.cmake +33 −9 Original line number Diff line number Diff line Loading @@ -209,18 +209,32 @@ configure_file("${PROJECT_SOURCE_DIR}/include/dca/config/rng.hpp.in" ################################################################################ # Select the cluster solver. set(DCA_CLUSTER_SOLVER "CT-AUX" CACHE STRING "The cluster solver for the DCA(+) loop. Options are: CT-AUX | SS-CT-HYB.") set_property(CACHE DCA_CLUSTER_SOLVER PROPERTY STRINGS CT-AUX SS-CT-HYB) "The cluster solver for the DCA(+) loop. Options are: CT-AUX | CT-INT | SS-CT-HYB.") set_property(CACHE DCA_CLUSTER_SOLVER PROPERTY STRINGS CT-AUX CT-INT SS-CT-HYB) if (DCA_CLUSTER_SOLVER STREQUAL "CT-AUX") if (DCA_CLUSTER_SOLVER STREQUAL "CT-INT") set(DCA_CLUSTER_SOLVER_NAME dca::phys::solver::CT_INT) set(DCA_CLUSTER_SOLVER_INCLUDE "dca/phys/dca_step/cluster_solver/ctint/ctint_cluster_solver.hpp") set(DCA_USE_CTINT_SUBMATRIX ON CACHE BOOL "Use submatrix updates if the CT-INT solver is selected.") if(DCA_USE_CTINT_SUBMATRIX) set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::CtintClusterSolver<walker_device, ParametersType, true>") else() set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::CtintClusterSolver<walker_device, ParametersType, false>") endif() elseif (DCA_CLUSTER_SOLVER STREQUAL "CT-AUX") set(DCA_CLUSTER_SOLVER_NAME dca::phys::solver::CT_AUX) set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::CtauxClusterSolver<walker_device, ParametersType, DcaDataType>") set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::CtauxClusterSolver<walker_device, ParametersType, DcaDataType, DIST>") set(DCA_CLUSTER_SOLVER_INCLUDE "dca/phys/dca_step/cluster_solver/ctaux/ctaux_cluster_solver.hpp") elseif (DCA_CLUSTER_SOLVER STREQUAL "SS-CT-HYB") set(DCA_CLUSTER_SOLVER_NAME dca::phys::solver::SS_CT_HYB) set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::SsCtHybClusterSolver<walker_device, ParametersType, DcaDataType>") set(DCA_CLUSTER_SOLVER_TYPE "dca::phys::solver::SsCtHybClusterSolver<walker_device, ParametersType, DcaDataType, DIST>") set(DCA_CLUSTER_SOLVER_INCLUDE "dca/phys/dca_step/cluster_solver/ss_ct_hyb/ss_ct_hyb_cluster_solver.hpp") Loading @@ -230,7 +244,8 @@ elseif (DCA_CLUSTER_SOLVER STREQUAL "SS-CT-HYB") # "dca/phys/dca_step/cluster_solver/high_temperature_series_expansion/high_temperature_series_expansion_solver.hpp") else() message(FATAL_ERROR "Please set DCA_CLUSTER_SOLVER to a valid option: CT-AUX | SS-CT-HYB.") message(FATAL_ERROR "Please set DCA_CLUSTER_SOLVER to a valid option: CT-AUX | CT_INT | SS-CT-HYB.") endif() ################################################################################ Loading @@ -245,7 +260,7 @@ option(DCA_WITH_THREADED_SOLVER "Use multiple walker and accumulator threads in if (DCA_WITH_THREADED_SOLVER) dca_add_config_define(DCA_WITH_THREADED_SOLVER) set(DCA_THREADED_SOLVER_TYPE dca::phys::solver::StdThreadQmciClusterSolver<ClusterSolverBaseType>) set(DCA_THREADED_SOLVER_TYPE dca::phys::solver::StdThreadQmciClusterSolver<ClusterSolverBaseType<DIST>>) set(DCA_THREADED_SOLVER_INCLUDE "dca/phys/dca_step/cluster_solver/stdthread_qmci/stdthread_qmci_cluster_solver.hpp") endif() Loading Loading @@ -320,6 +335,15 @@ configure_file("${PROJECT_SOURCE_DIR}/include/dca/config/mc_options.hpp.in" "${CMAKE_BINARY_DIR}/include/dca/config/mc_options.hpp" @ONLY) ################################################################################ # Symmetrization option(DCA_SYMMETRIZE "Apply cluster, time and frequency symmetries to single particle functions." ON) if(DCA_SYMMETRIZE) add_compile_definitions(DCA_WITH_SYMMETRIZATION) endif() ################################################################################ # Generate applications' config files. configure_file("${PROJECT_SOURCE_DIR}/include/dca/config/analysis.hpp.in" Loading