From 2efe7c8ccaafbf7af855f7e26e8378bf60025a37 Mon Sep 17 00:00:00 2001 From: Michael Zikeli <michael.zikeli@fau.de> Date: Wed, 5 Feb 2025 14:34:44 +0100 Subject: [PATCH] Refactor timer data exposure in Python callback to remove whitespace from column names. --- .../UniformGridCPU/UniformGridCPU.cpp | 52 +++++++++---------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/apps/benchmarks/UniformGridCPU/UniformGridCPU.cpp b/apps/benchmarks/UniformGridCPU/UniformGridCPU.cpp index bc933c6ad..a61462030 100644 --- a/apps/benchmarks/UniformGridCPU/UniformGridCPU.cpp +++ b/apps/benchmarks/UniformGridCPU/UniformGridCPU.cpp @@ -227,12 +227,12 @@ int main(int argc, char** argv) const auto reducedTimeloopTiming = timeloopTiming.getReduced(); WALBERLA_LOG_RESULT_ON_ROOT("Time loop timing:\n" << *reducedTimeloopTiming) - + WALBERLA_ROOT_SECTION() { - if(inputIsPython){ + if(inputIsPython) { python_coupling::PythonCallback pythonCallbackResults("results_callback"); - if (pythonCallbackResults.isCallable()) + if (pythonCallbackResults.isCallable()) { pythonCallbackResults.data().exposeValue("numProcesses", performance.processes()); pythonCallbackResults.data().exposeValue("numThreads", performance.threads()); @@ -250,32 +250,28 @@ int main(int argc, char** argv) pythonCallbackResults.data().exposeValue("cse_global", infoCseGlobal); pythonCallbackResults.data().exposeValue("cse_pdfs", infoCsePdfs); - auto exposeTimers = [&pythonCallbackResults](const std::shared_ptr<WcTimingPool>& tp){ - std::string parseColumnName(const std::string& columnName) { - std::string parsedName = columnName; - std::replace(parsedName.begin(), parsedName.end(), ' ', '-'); - return parsedName; - } - auto& data = pythonCallbackResults.data(); - for (auto i = tp->begin(); i != tp->end(); ++i) - { - const std::string timerName = "Timer_" + i->first; - const std::string coulumnName; - coulumnName = timerName + "_Total"; - data.exposeValue(parseColumnName(coulumnName).c_str(), i->second.total()); - coulumnName = timerName + "_Average"; - data.exposeValue(parseColumnName(coulumnName).c_str(), i->second.average()); - coulumnName = timerName + "_Count"; - data.exposeValue(parseColumnName(coulumnName).c_str(), i->second.getCounter()); - coulumnName = timerName + "_Min"; - data.exposeValue(parseColumnName(coulumnName).c_str(), i->second.min()); - coulumnName = timerName + "_Max"; - data.exposeValue(parseColumnName(coulumnName).c_str(), i->second.max()); - coulumnName = timerName + "_Variance"; - data.exposeValue(parseColumnName(coulumnName).c_str(), i->second.variance()); - } + auto stripWhiteSpaces = [](std::string str) { + str.erase(remove_if(str.begin(), str.end(), isspace), str.end()); + return str; }; - exposeTimers(reducedTimeloopTiming); + + for (auto i = reducedTimeloopTiming->begin(); i != reducedTimeloopTiming->end(); ++i) + { + const std::string timerName = "Timer_" + i->first; + std::string columnName = timerName + "_Total"; + pythonCallbackResults.data().exposeValue(stripWhiteSpaces(columnName).c_str(), i->second.total()); + columnName = timerName + "_Average"; + pythonCallbackResults.data().exposeValue(stripWhiteSpaces(columnName).c_str(), i->second.average()); + columnName = timerName + "_Count"; + pythonCallbackResults.data().exposeValue(stripWhiteSpaces(columnName).c_str(), i->second.getCounter()); + columnName = timerName + "_Min"; + pythonCallbackResults.data().exposeValue(stripWhiteSpaces(columnName).c_str(), i->second.min()); + columnName = timerName + "_Max"; + pythonCallbackResults.data().exposeValue(stripWhiteSpaces(columnName).c_str(), i->second.max()); + columnName = timerName + "_Variance"; + pythonCallbackResults.data().exposeValue(stripWhiteSpaces(columnName).c_str(), i->second.variance()); + } + // Call Python function to report results pythonCallbackResults(); } -- GitLab