FrameTimings Struct Reference#

DiFfRG: DiFfRG::FrameTimings Struct Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
DiFfRG::FrameTimings Struct Reference

Wall-clock cost of producing one output frame, split by where the time went. More...

#include <output_timings.hh>

Public Member Functions

FrameTimings & operator+= (const FrameTimings &other)
 

Public Attributes

double contributor = 0.
 the whole user contributor callback (attach + readouts)
 
double potential_solves = 0.
 of which: internal::solve_potential
 
double fe_attach = 0.
 
double build_patches = 0.
 DataOut::build_patches.
 
double data_filter = 0.
 DataOutFilter pass: write_filtered_data + fill_node_data.
 
double hdf5_write = 0.
 group/dataset/attribute creation and writes
 
double hdf5_open_close = 0.
 H5Fopen + H5Fflush + H5Fclose.
 
double hdf5_queue_wait = 0.
 
double fe_flush = 0.
 
double csv = 0.
 CsvOutput::flush.
 
double total = 0.
 the whole frame, from write_frame entry to flush_frame exit
 
std::size_t potential_solve_count = 0
 
std::size_t hdf5_open_count = 0
 how many times the .h5 was opened for this frame
 

Detailed Description

Wall-clock cost of producing one output frame, split by where the time went.

Frames are separated by many timesteps, so the handful of clock reads per frame is free compared to what they measure. The buckets are always collected; only the per-frame log line is gated on verbosity.

The buckets are nested, not disjoint. contributor is an umbrella over everything the user callback does, and both potential_solves and fe_attach happen inside it. Only total is the frame cost; summing the rest double-counts on purpose so that each bucket answers "how much of the frame went here" independently.

total contributor the whole user callback potential_solves of which: internal::solve_potential fe_attach of which: staging solution copies + backpressure build_patches } data_filter } everything below runs in flush_frame, hdf5_write } after the contributor has returned hdf5_open_close } fe_flush } csv }

Member Function Documentation

◆ operator+=()

FrameTimings & DiFfRG::FrameTimings::operator+= ( const FrameTimings & other)

Accumulate another sink's contribution into this frame.

Member Data Documentation

◆ build_patches

double DiFfRG::FrameTimings::build_patches = 0.

DataOut::build_patches.

◆ contributor

double DiFfRG::FrameTimings::contributor = 0.

the whole user contributor callback (attach + readouts)

◆ csv

double DiFfRG::FrameTimings::csv = 0.

◆ data_filter

double DiFfRG::FrameTimings::data_filter = 0.

DataOutFilter pass: write_filtered_data + fill_node_data.

◆ fe_attach

double DiFfRG::FrameTimings::fe_attach = 0.

Of which: FEOutput::attach – copying each solution vector into the frame's staging buffer, plus any backpressure wait for a retired writer thread.

◆ fe_flush

double DiFfRG::FrameTimings::fe_flush = 0.

Handing the frame to a writer thread and releasing the previous one's DataOut. With VTK off, or asynchronous off, no thread is involved and this is the synchronous release (and, when async is off, the VTU write itself).

◆ hdf5_open_close

double DiFfRG::FrameTimings::hdf5_open_close = 0.

H5Fopen + H5Fflush + H5Fclose.

◆ hdf5_open_count

std::size_t DiFfRG::FrameTimings::hdf5_open_count = 0

how many times the .h5 was opened for this frame

◆ hdf5_queue_wait

double DiFfRG::FrameTimings::hdf5_queue_wait = 0.

Time the producer spent blocked because the writer queue was full – i.e. the disk, not the integrator, was the limit. Zero when the writes run inline.

◆ hdf5_write

double DiFfRG::FrameTimings::hdf5_write = 0.

group/dataset/attribute creation and writes

◆ potential_solve_count

std::size_t DiFfRG::FrameTimings::potential_solve_count = 0

◆ potential_solves

double DiFfRG::FrameTimings::potential_solves = 0.

◆ total

double DiFfRG::FrameTimings::total = 0.

the whole frame, from write_frame entry to flush_frame exit


The documentation for this struct was generated from the following file:
  • /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/discretization/data/output_timings.hh