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

Revert "If not enough configurations are available, recycle them in round-robin fashion."

parent 62daaec7
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -139,7 +139,6 @@ set(DCA_LIBS
  quantum_domains
  time_and_frequency_domains
  symmetrization
  system
  coarsegraining
  ${DCA_CONCURRENCY_LIB}
  ${DCA_THREADING_LIBS}
+1 −28
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@
#include "dca/phys/dca_step/cluster_solver/stdthread_qmci/stdthread_qmci_accumulator.hpp"
#include "dca/phys/dca_step/cluster_solver/thread_task_handler.hpp"
#include "dca/profiling/events/time.hpp"
#include "dca/util/get_stdout_from_command.hpp"
#include "dca/util/print_time.hpp"

namespace dca {
@@ -71,7 +70,6 @@ private:

  void readConfigurations();
  void writeConfigurations() const;
  int findAvailableFiles() const;

  void iterateOverLocalMeasurements(int walker_id, std::function<void(int, int, bool)>&& f);

@@ -475,19 +473,12 @@ void StdThreadQmciClusterSolver<QmciSolver>::readConfigurations() {
    return;

  try {
    const int n_available = findAvailableFiles();
    const int id_to_read = concurrency_.id() % n_available;

    const std::string inp_name = parameters_.get_directory_config_read() + "/process_" +
                                 std::to_string(id_to_read) + ".hdf5";
                                 std::to_string(concurrency_.id()) + ".hdf5";
    io::HDF5Reader reader(false);
    reader.open_file(inp_name);
    for (int id = 0; id < config_dump_.size(); ++id)
      reader.execute("configuration_" + std::to_string(id), config_dump_[id]);

    if (concurrency_.id() == 0) {
      std::cout << "Read configuration from " << parameters_.get_directory_config_read() << ".\n";
    }
  }
  catch (std::exception& err) {
    std::cerr << err.what() << "\nCould not read the configuration.\n";
@@ -496,24 +487,6 @@ void StdThreadQmciClusterSolver<QmciSolver>::readConfigurations() {
  }
}

template <class QmciSolver>
int StdThreadQmciClusterSolver<QmciSolver>::findAvailableFiles() const {
  int result = 0;
  if (concurrency_.id() == 0) {
    try {
      // Count the number of configuration files.
      const std::string cmd =
          "ls -1 " + parameters_.get_directory_config_read() + "/process_*.hdf5 | wc -l";
      result = std::atoi(dca::util::getStdoutFromCommand(cmd).c_str());
    }
    catch (...) {
    }
  }

  concurrency_.broadcast(result, 0);
  return result;
}

template <class QmciSolver>
void StdThreadQmciClusterSolver<QmciSolver>::printIntegrationMetadata() const {
  if (concurrency_.id() == concurrency_.first()) {
+0 −26
Original line number Diff line number Diff line
// Copyright (C) 2018 ETH Zurich
// Copyright (C) 2018 UT-Battelle, LLC
// All rights reserved.
//
// See LICENSE for terms of usage.
// See CITATION.md for citation guidelines, if DCA++ is used for scientific publications.
//
// Author: Giovanni Balduzzi (gbalduzz@itp.phys.ethz.ch)
//
// This file provides a utility function that executes a system call and returns the standard
// output.

#ifndef DCA_UTIL_GET_STDOUT_FROM_COMMAND_HPP
#define DCA_UTIL_GET_STDOUT_FROM_COMMAND_HPP

#include <string>

namespace dca {
namespace util {

std::string getStdoutFromCommand(std::string cmd);

}  // namespace util
}  // namespace dca

#endif  // DCA_UTIL_GET_STDOUT_FROM_COMMAND_HPP
+0 −3
Original line number Diff line number Diff line
@@ -21,6 +21,3 @@ add_dependencies(modules modules_helper)

# Timer
add_library(timer STATIC timer.cpp)

# System
add_library(system STATIC get_stdout_from_command.cpp)
+0 −35
Original line number Diff line number Diff line
// Copyright (C) 2018 ETH Zurich
// Copyright (C) 2018 UT-Battelle, LLC
// All rights reserved.
//
// See LICENSE for terms of usage.
// See CITATION.md for citation guidelines, if DCA++ is used for scientific publications.
//
// Author: Giovanni Balduzzi (gbalduzz@itp.phys.ethz.ch)
//
// This file implements get_stdout_from_command.hpp

#include "dca/util/get_stdout_from_command.hpp"

namespace dca {
namespace util {

std::string getStdoutFromCommand(std::string cmd) {
  std::string data;
  FILE* stream;
  const int max_buffer = 256;
  char buffer[max_buffer];
  cmd.append(" 2>&1");

  stream = popen(cmd.c_str(), "r");
  if (stream) {
    while (!feof(stream))
      if (fgets(buffer, max_buffer, stream) != NULL)
        data.append(buffer);
    pclose(stream);
  }
  return data;
}

}  // namespace util
}  // namespace dca