Skip to content

Commit cddc6d8

Browse files
committed
docs: record the measured cost of the fault diagnostics
Frontier CCE --gpu mp, ROCm 6.3.1, agent 2.0.3, four interleaved pairs, all twelve runs valid. Healthy run: no effect detected. The agent's whole range sits inside the agent-free range, paired differences split 2 up / 2 down, mean -0.045%. Resolution is ~0.8% set by the agent-free spread, so this is "no effect detected at n=4", not "no effect". Healthy-run log noise is zero -- 2661-2662 bytes with and without. Faulting run: +0.387 s, 1.60x of a 0.647 s baseline, which is 0.011% of the 1-hour test timeout. A fault cannot become a timeout through the agent -- the risk worth checking, since a diagnostic that hides the fault it explains is worse than none. The cost that is real is volume: 6.7 MB / ~13,630 lines per faulting test on that lane, ~65,000 on AFAR. That makes the summarizer load-bearing rather than an optimisation. Also replaces the AFAR-interaction caveat with the measurement that settled it: the agent does not supersede libomptarget (OFFLOAD ERROR 1, Libomptarget 8, identical with and without); it is mutually exclusive with ROCr core dumps only. Timings are CCE only; the AFAR lane produces twice the waves and was not re-timed. Claude-Session: https://claude.ai/code/session_013573Qr8zEMdYLkP4XyVfiy
1 parent dc73590 commit cddc6d8

1 file changed

Lines changed: 27 additions & 11 deletions

File tree

toolchain/mfc/gpu_diagnostics.py

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -116,18 +116,34 @@ def fault_diagnostic_env(base: dict) -> dict:
116116
# which -- its regex takes whatever the symbol is -- but anything that tries
117117
# to parse the symbol must not assume one scheme per offload model.
118118
#
119-
# Cost on a healthy run: one paired A/B put it at 4.5645 ns/gp/eq/rhs
120-
# against an agent-free spread of 4.5301-4.5614, i.e. 0.07% above a range
121-
# 0.69% wide -- inside the noise. That is n=1; the repeats were cancelled
122-
# deliberately rather than measured, so this is "no effect detected", not
123-
# "no effect".
119+
# Cost, measured on Frontier CCE --gpu mp (ROCm 6.3.1, agent 2.0.3), four
120+
# interleaved pairs:
124121
#
125-
# Unverified: how this interacts with the AFAR variables above on the
126-
# frontier_amd lane, where both are reachable. The agent is mutually
127-
# exclusive with ROCr core dumps, so it may likewise supersede libomptarget's
128-
# own fault report. Worst realistic case is one working diagnostic replacing
129-
# another strictly more detailed one; if a real AFAR fault shows otherwise,
130-
# gate this on the lane.
122+
# healthy run no effect detected. The agent's whole range sits inside
123+
# the agent-free range; paired differences split 2 up / 2
124+
# down, mean -0.045%. Resolution is ~0.8%, set by the
125+
# agent-free spread -- an effect smaller than that would not
126+
# show. "No effect detected at n=4", not "no effect".
127+
# healthy log nothing at all. Output was 2661-2662 bytes with and
128+
# without. The agent writes only when something faults.
129+
# faulting run +0.387 s (1.60x of a 0.647 s baseline). Against the 1-hour
130+
# test timeout that is 0.011%, so a fault cannot become a
131+
# timeout -- which was the risk worth checking, since a
132+
# diagnostic that hides the fault it explains is worse than
133+
# none.
134+
#
135+
# The cost that is real is VOLUME: a faulting run emits 6.7 MB / ~13,630
136+
# lines on that lane, and ~65,000 on AFAR. That is why summarize_rocm_debug_agent
137+
# is not an optimisation -- it is what makes this tolerable always-on.
138+
#
139+
# Timings are CCE only. The AFAR lane produces twice the waves and was not
140+
# re-timed, so quoting +0.387 s for it would be inference.
141+
#
142+
# Measured, not assumed: the agent does NOT supersede libomptarget on the
143+
# AFAR lane. OFFLOAD ERROR lines = 1 and Libomptarget lines = 8, identical
144+
# with and without it. (An earlier report of markers rising 19 -> 519 was a
145+
# grep artifact: __omp_offloading_ matches a case-insensitive "OFFLOAD".)
146+
# The agent is mutually exclusive with ROCr core dumps only.
131147
# Two ways the caller can say "stay out of my way", both of which mean a
132148
# human is already debugging this run by hand:
133149
#

0 commit comments

Comments
 (0)