OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
PerfTimers.hpp File Reference

Performance timing and phase accumulators for engine execution. More...

#include <array>
#include <mutex>
#include <chrono>
#include <cstdio>
#include <cstdlib>
Include dependency graph for PerfTimers.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  openswmm::perf::ScopedTimer
 
struct  openswmm::perf::GatedTimer
 
class  openswmm::perf::CounterBatch
 Private counters for one worker in a worksharing phase. Nested batches merge into the enclosing worker's batch. The outer batch merges under one lock after the loop; hydraulic arithmetic is unaffected. When profiling is disabled, no counters are initialized or merged. More...
 

Namespaces

namespace  openswmm
 
namespace  openswmm::perf
 

Typedefs

using openswmm::perf::FvCounts = std::array<long, n_fv_counter_count>
 

Enumerations

enum  openswmm::perf::FvCounter : std::size_t {
  openswmm::perf::n_fv_substep ,
  openswmm::perf::n_fv_census ,
  openswmm::perf::n_fv_census_face ,
  openswmm::perf::n_fv_invert ,
  openswmm::perf::n_fv_savestate ,
  openswmm::perf::n_fv_restore ,
  openswmm::perf::n_fv_structref ,
  openswmm::perf::n_fv_alg_visit ,
  openswmm::perf::n_fv_alg_passthru ,
  openswmm::perf::n_fv_alg_solve ,
  openswmm::perf::n_fv_alg_resid ,
  openswmm::perf::n_fv_alg_flux ,
  openswmm::perf::n_fv_geom_area ,
  openswmm::perf::n_fv_geom_width ,
  openswmm::perf::n_fv_geom_i1 ,
  openswmm::perf::n_fv_geom_hydrad ,
  openswmm::perf::n_fv_macro_cycles ,
  openswmm::perf::n_fv_macro_rejected ,
  openswmm::perf::n_fv_counter_count
}
 

Functions

long openswmm::perf::value (FvCounter counter) noexcept
 Read one process-global completed FV counter total.
 
void openswmm::perf::reset_fv () noexcept
 Zero FV phase timers and completed counter totals.
 
void openswmm::perf::dump_fv () noexcept
 One machine-scrapeable line for the FV phase split.
 
std::chrono::steady_clock::time_point openswmm::perf::now () noexcept
 Sample the steady monotonic clock regardless of profiling enablement.
 
double openswmm::perf::since (std::chrono::steady_clock::time_point t0) noexcept
 Measure elapsed wall time from a steady-clock sample.
 
bool openswmm::perf::enabled () noexcept
 Read the process-cached profiling environment gate.
 
void openswmm::perf::reset_load () noexcept
 Zero load/open/initialize/start phase accumulators.
 
void openswmm::perf::dump_load () noexcept
 One machine-scrapeable line per phase on stderr.
 
void openswmm::perf::count (FvCounter counter, long n=1) noexcept
 Accumulate a batch of events into worker-private or serial global counters.
 

Variables

double openswmm::perf::sec_2d_window = 0.0
 
double openswmm::perf::sec_2d_advance = 0.0
 
double openswmm::perf::sec_1d_step = 0.0
 
double openswmm::perf::sec_open_prescan2d = 0.0
 
double openswmm::perf::sec_open_read = 0.0
 
double openswmm::perf::sec_read_dispatch = 0.0
 
double openswmm::perf::sec_open_resolve = 0.0
 
double openswmm::perf::sec_open_validate = 0.0
 
double openswmm::perf::sec_res_extfiles = 0.0
 
double openswmm::perf::sec_res_tables = 0.0
 
double openswmm::perf::sec_res_transects = 0.0
 
double openswmm::perf::sec_res_xsect = 0.0
 
double openswmm::perf::sec_res_shrink = 0.0
 
double openswmm::perf::sec_init_state = 0.0
 
double openswmm::perf::sec_init_hydraulics = 0.0
 
double openswmm::perf::sec_init_hydrology = 0.0
 
double openswmm::perf::sec_init_quality = 0.0
 
double openswmm::perf::sec_init_geometry = 0.0
 
double openswmm::perf::sec_start_iface = 0.0
 
double openswmm::perf::sec_start_plugins = 0.0
 
double openswmm::perf::sec_fv_census = 0.0
 
double openswmm::perf::sec_fv_flux = 0.0
 
double openswmm::perf::sec_fv_nodesolve = 0.0
 
double openswmm::perf::sec_fv_positivity = 0.0
 
double openswmm::perf::sec_fv_cellupdate = 0.0
 
double openswmm::perf::sec_fv_nodeupdate = 0.0
 
double openswmm::perf::sec_fv_refreshdep = 0.0
 
double openswmm::perf::sec_fv_savestate = 0.0
 
double openswmm::perf::sec_fv_restore = 0.0
 
double openswmm::perf::sec_fv_structref = 0.0
 
double openswmm::perf::sec_fv_bndcallback = 0.0
 
double openswmm::perf::sec_fv_rebuild = 0.0
 
double openswmm::perf::sec_fv_reconstruct = 0.0
 
double openswmm::perf::sec_fv_ltsfire = 0.0
 
double openswmm::perf::sec_fv_settle = 0.0
 
double openswmm::perf::sec_fv_tier = 0.0
 
FvCounts openswmm::perf::fv_counts {}
 
thread_local FvCounts * openswmm::perf::local_fv_counts = nullptr
 
std::mutex openswmm::perf::fv_counts_mutex
 
thread_local double openswmm::perf::nested_wall = 0.0
 ScopedTimer that reads the clock only when OPENSWMM_PERF is set.
 

Detailed Description

Performance timing and phase accumulators for engine execution.

Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
License
Apache-2.0