diff --git a/src/utils/ExecutionStatManager.cpp b/src/utils/ExecutionStatManager.cpp index 8fbd32e2c3a200808cd91d26fd845df7a1eb256a..6918d4d7acfc89bb12420b1540a240e1bcd026dc 100644 --- a/src/utils/ExecutionStatManager.cpp +++ b/src/utils/ExecutionStatManager.cpp @@ -10,6 +10,39 @@ ExecutionStatManager* ExecutionStatManager::m_instance = nullptr; +std::string +ExecutionStatManager::_prettyPrintTime(double time_in_seconds) const +{ + std::ostringstream os; + size_t seconds = std::floor(time_in_seconds); + const size_t days = seconds / (24 * 3600); + seconds -= days * (24 * 3600); + const size_t hours = seconds / 3600; + seconds -= hours * 3600; + const size_t minutes = seconds / 60; + seconds -= minutes * 60; + os << rang::style::bold; + bool print = false; + if (days > 0) { + print = true; + os << days << "d" << ' '; + } + if (print or (hours > 0)) { + print = true; + os << std::setw(2) << std::setfill('0') << hours << "h"; + } + if (print or (minutes > 0)) { + print = true; + os << std::setw(2) << std::setfill('0') << minutes << "mn"; + } + if (print) { + os << rang::style::bold << std::setw(2) << std::setfill('0') << seconds << "s"; + } + os << rang::style::reset; + + return os.str(); +} + void ExecutionStatManager::_printMaxResidentMemory() const { @@ -69,8 +102,12 @@ ExecutionStatManager::_printMaxResidentMemory() const void ExecutionStatManager::_printElapseTime() const { - std::cout << "Execution: " << rang::style::bold << m_instance->m_elapse_time.seconds() << 's' << rang::style::reset - << '\n'; + const double elapse_time = m_instance->m_elapse_time.seconds(); + std::cout << "Execution: " << rang::style::bold << m_instance->m_elapse_time.seconds() << 's' << rang::style::reset; + if (elapse_time > 60) { + std::cout << " [" << rang::style::bold << this->_prettyPrintTime(elapse_time) << rang::style::reset << ']'; + } + std::cout << '\n'; } void @@ -87,31 +124,7 @@ ExecutionStatManager::_printTotalCPUTime() const std::cout << " (" << parallel::allReduceSum(Kokkos::DefaultHostExecutionSpace::concurrency()) << " threads over " << parallel::size() << " processes)"; if (total_cpu_time > 60) { - size_t seconds = std::floor(total_cpu_time); - const size_t days = seconds / (24 * 3600); - seconds -= days * (24 * 3600); - const size_t hours = seconds / 3600; - seconds -= hours * 3600; - const size_t minutes = seconds / 60; - seconds -= minutes * 60; - std::cout << " " << rang::style::bold; - bool print = false; - if (days > 0) { - print = true; - std::cout << days << "d" << ' '; - } - if (print or (hours > 0)) { - print = true; - std::cout << std::setw(2) << std::setfill('0') << hours << "h"; - } - if (print or (minutes > 0)) { - print = true; - std::cout << std::setw(2) << std::setfill('0') << minutes << "mn"; - } - if (print) { - std::cout << rang::style::bold << std::setw(2) << std::setfill('0') << seconds << "s"; - } - std::cout << rang::style::reset; + std::cout << " [" << _prettyPrintTime(total_cpu_time) << ']'; } std::cout << '\n'; } diff --git a/src/utils/ExecutionStatManager.hpp b/src/utils/ExecutionStatManager.hpp index 476b31a84f80234a6e8d509ddac88daf9d3b38f8..6f7c333561147ab3fede6c534a9c2680a29bd4cd 100644 --- a/src/utils/ExecutionStatManager.hpp +++ b/src/utils/ExecutionStatManager.hpp @@ -12,6 +12,8 @@ class ExecutionStatManager Timer m_elapse_time; bool m_do_print = true; + std::string _prettyPrintTime(double seconds) const; + void _printMaxResidentMemory() const; void _printElapseTime() const; void _printTotalCPUTime() const;