Commit 8f77284c authored by gbalduzz's avatar gbalduzz
Browse files

Merge remote-tracking branch 'origin/master' into optimize_ctaux

parents 206d7b2b 8c956625
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -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)
@@ -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()

################################################################################
+1 −1
Original line number Diff line number Diff line
@@ -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)
+18 −17
Original line number Diff line number Diff line
@@ -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) {
@@ -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) {
+2 −1
Original line number Diff line number Diff line
@@ -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.")
+33 −9
Original line number Diff line number Diff line
@@ -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")

@@ -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()

################################################################################
@@ -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()
@@ -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