diff --git a/src/dev_utils/ParallelChecker.hpp b/src/dev_utils/ParallelChecker.hpp index 82525d00fe227993c6f8fa54590eb3d975bf56cc..fa204d134f5dc1be7ab5f1a216a73d57f0ceb134 100644 --- a/src/dev_utils/ParallelChecker.hpp +++ b/src/dev_utils/ParallelChecker.hpp @@ -43,7 +43,7 @@ class ParallelChecker Mode m_mode = Mode::automatic; size_t m_tag = 0; - std::string m_filename = "testme/parallel_checker.h5"; + std::string m_filename = "parallel_checker.h5"; ParallelChecker() = default; @@ -680,12 +680,36 @@ class ParallelChecker return *m_instance; } + Mode + mode() const + { + return m_mode; + } + void setMode(const Mode& mode) { + if (m_tag != 0) { + throw UnexpectedError("Cannot modify parallel checker mode if it was already used"); + } m_mode = mode; } + const std::string& + filename() const + { + return m_filename; + } + + void + setFilename(const std::string& filename) + { + if (m_tag != 0) { + throw UnexpectedError("Cannot modify parallel checker file if it was already used"); + } + m_filename = filename; + } + bool isWriting() const { diff --git a/src/utils/PugsUtils.cpp b/src/utils/PugsUtils.cpp index b54135bb068df963560675e9fe8c85b31c465aec..e4e905765f964b0760a10fa3349315e7ce15459d 100644 --- a/src/utils/PugsUtils.cpp +++ b/src/utils/PugsUtils.cpp @@ -89,6 +89,7 @@ initialize(int& argc, char* argv[]) int nb_threads = -1; ParallelChecker::Mode pc_mode = ParallelChecker::Mode::automatic; + std::string pc_filename = ParallelChecker::instance().filename(); std::string filename; { @@ -134,6 +135,9 @@ initialize(int& argc, char* argv[]) "Parallel checker mode (auto: sequential write/parallel read) [default: auto]") ->transform(CLI::CheckedTransformer(pc_mode_map)); + app.add_option("--parallel-checker-file", pc_filename, + "Parallel checker filename [default: " + pc_filename + "]"); + int mpi_split_color = -1; app.add_option("--mpi-split-color", mpi_split_color, "Sets the MPI split color value (for MPMD applications)") ->check(CLI::Range(0, std::numeric_limits<decltype(mpi_split_color)>::max())); @@ -178,6 +182,7 @@ initialize(int& argc, char* argv[]) } ParallelChecker::instance().setMode(pc_mode); + ParallelChecker::instance().setFilename(pc_filename); if (ConsoleManager::showPreamble()) { std::cout << "----------------- " << rang::fg::green << "pugs exec info" << rang::fg::reset