|
MADNESS 0.10.1
|
One task's record for the exchange profiler. More...
#include <exchangeoperator.h>
Public Member Functions | |
| void | observe_fetch_tier (const int tier) |
| keep the worst source, since that is the one that set the task's wait | |
| void | reset () |
Public Attributes | |
| double | apply_wall = 0.0 |
| long | col_begin = 0 |
| long | col_end = 0 |
| double | compute_cpu = 0.0 |
| double | compute_wall = 0.0 |
| bool | diagonal = false |
| long | k = 0 |
| double | mul1_wall = 0.0 |
| double | mul2_wall = 0.0 |
| int | operand_source = -1 |
| worst of its fetches: 0 resident, 1 ahead, 2 cold | |
| double | peak_rss_gb = 0.0 |
| long | row_begin = 0 |
| long | row_end = 0 |
| unsigned long | subworld_id = 0 |
| int | subworld_nrank = 0 |
| long | task_id = -1 |
| double | thresh = 0.0 |
| which protocol tier this task ran in | |
| double | truncate_wall = 0.0 |
| long | universe_rank = 0 |
| keys the output file: one per process | |
| double | wait_for_data_wall = 0.0 |
| task entry until its operands are in hand | |
| bool | waited = false |
| a cold fetch happened, so this task paid latency | |
| double | wall_end = 0.0 |
| double | wall_start = 0.0 |
One task's record for the exchange profiler.
Written only when MAD_EXCH_TASK_PROFILE is set. What it adds over the aggregate counters is attribution: the counters say how many batches arrived from where, this says which task waited and for how long, so a straggler can be identified rather than inferred.
It deliberately does not carry a per-stage breakdown of the compute (multiply / apply / multiply). That would mean timing calls inside the numerical kernels, and the aggregate split already exists in the operator's own timers.
|
inline |
keep the worst source, since that is the one that set the task's wait
References operand_source, and waited.
Referenced by madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::fetch_batch().
|
inline |
| double madness::ExchTaskProfile::apply_wall = 0.0 |
| long madness::ExchTaskProfile::col_begin = 0 |
| long madness::ExchTaskProfile::col_end = 0 |
| double madness::ExchTaskProfile::compute_cpu = 0.0 |
| double madness::ExchTaskProfile::compute_wall = 0.0 |
| bool madness::ExchTaskProfile::diagonal = false |
| long madness::ExchTaskProfile::k = 0 |
| double madness::ExchTaskProfile::mul1_wall = 0.0 |
wall inside each stage of the tile loop, accumulated over its rows. Honest without adding any fence: every stage below runs with fence=true, so each completes before the next is timed. What they do not cover – building the per-row update vector, the compresses and the accumulating gaxpys – shows up as the emitted other residual.
Referenced by madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::compute_diagonal_batch_in_symmetric_matrix().
| double madness::ExchTaskProfile::mul2_wall = 0.0 |
| int madness::ExchTaskProfile::operand_source = -1 |
worst of its fetches: 0 resident, 1 ahead, 2 cold
Referenced by observe_fetch_tier().
| double madness::ExchTaskProfile::peak_rss_gb = 0.0 |
| long madness::ExchTaskProfile::row_begin = 0 |
| long madness::ExchTaskProfile::row_end = 0 |
| unsigned long madness::ExchTaskProfile::subworld_id = 0 |
| int madness::ExchTaskProfile::subworld_nrank = 0 |
| long madness::ExchTaskProfile::task_id = -1 |
| double madness::ExchTaskProfile::thresh = 0.0 |
which protocol tier this task ran in
Referenced by madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::operator()().
| double madness::ExchTaskProfile::truncate_wall = 0.0 |
| long madness::ExchTaskProfile::universe_rank = 0 |
keys the output file: one per process
Referenced by madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::operator()().
| double madness::ExchTaskProfile::wait_for_data_wall = 0.0 |
task entry until its operands are in hand
Referenced by madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::operator()().
| bool madness::ExchTaskProfile::waited = false |
a cold fetch happened, so this task paid latency
Referenced by observe_fetch_tier().
| double madness::ExchTaskProfile::wall_end = 0.0 |
| double madness::ExchTaskProfile::wall_start = 0.0 |