even better more structured throughput scheduling
Validate Operations / validate-operations (push) Has been cancelled

plot adjustments
validation adjustments
This commit is contained in:
NiccoloN
2026-10-27 17:46:46 +01:00
parent 49d6fb42cf
commit a77edafcbf
46 changed files with 3265 additions and 1043 deletions
+31 -2
View File
@@ -33,13 +33,29 @@ per-inference measurements become `NA` in aggregates, not zero. With zero
completed outputs, interval, throughput, and energy per inference are unavailable;
measured average chip power can still be reported. Functional status is retained.
Floating-point correctness requires both elementwise absolute/relative tolerance
and a relative L2 limit for each nonzero reference output. The L2 limit prevents
small reference outputs from accepting all-zero results under the absolute floor.
It cannot substitute for the elementwise check. Zero references use the absolute
check; integer outputs require exact agreement. Nonfinite outputs are rejected.
Validation reports record both maximum absolute and relative L2 errors.
Report reuse includes the validation-policy identity.
Removing normalization operations can amplify floating-point sensitivity and
change the computation. Such variants must use their own native reference.
Agreement in a global norm alone does not establish elementwise correctness.
Independent reference implementations and higher-precision calculations can
help diagnose rounding sensitivity without relaxing the recorded pass criteria.
Ablation percentages require positive finite values for both the variant and
its matching baseline. Tiny positive measurements retain significant digits
instead of being rounded to zero in the comparison CSV. An extreme valid
decrease can round to `-100.00%`; that value alone is not evidence of failure.
Reciprocal output interval and throughput cannot both have that decrease.
The ablation plotter warns and displays `N/A` for such invalid paired percentages,
while leaving the CSV and functional status unchanged.
The ablation report uses each disabled feature as its comparison baseline.
Planning gain uses `no-plan`; throughput synchronization gain uses `no-sync`.
Throughput gain measures the relative increase. Latency, power, and energy gains
measure relative reductions. Both programs' functional statuses remain separate.
## Report reuse and implementation revisions
@@ -58,6 +74,12 @@ Metrics come from Pimsim's
[`Chip::getSimulationReport`](../../backend-simulators/pim/pimsim-nn/src/chip/Chip.cpp)
and [`EnergyCounter`](../../backend-simulators/pim/pimsim-nn/src/utils/EnergyCounter.cpp).
Pimsim-nn omits `vsoftmax` before instruction fetch. Reported performance and
energy exclude its work. The PIM queue estimator uses the same omission.
Functional validation executes Softmax and compares the same full model with
its native reference. This timing approximation does not establish hardware
support for Softmax or include its execution energy.
- Latency mode measures time to complete one inference.
- Throughput-mode latency is measurement duration / completed iterations,
equal to `1000 / throughput` before rounding. It is not end-to-end pipelined
@@ -67,9 +89,16 @@ and [`EnergyCounter`](../../backend-simulators/pim/pimsim-nn/src/utils/EnergyCou
mode). Plots convert pJ to mJ with `1e-9`; no pipeline-depth or batch-size
division is applied.
Existing `average_energy_pj`, `raptor_energy_pj`, and validation CSV energy
columns retain their names for compatibility. They contain energy per inference.
Fast mode measures throughput over the last two convergence windows but power
and energy over the entire run up to early stop. Energy includes startup and
work in flight, so it need not equal average power / reported throughput.
If convergence fails, comparison and ablation reports retain the simulator's
full-duration fallback throughput. This measurement includes transient execution.
It does not establish steady-state convergence. The per-case JSON records its
measurement type and convergence status. Missing or invalid measurements remain `NA`.
Use `--no-fast` for full-duration measurements. Consult the
[correctness notes](../../validation/tools/pim/pimcomp/correctness/README.md) before interpreting failed rows
as performance comparisons.