A practical validation pattern for separating NPU execution from CPU orchestration and checking correctness before performance claims.
Start with a reference path
Accelerator work becomes difficult to reason about when correctness and performance are changed at the same time. Keep a CPU reference path that accepts the same inputs and produces a result that can be compared at meaningful boundaries.
Prove where the work ran
A successful program exit is not evidence that the intended kernel executed on the NPU. Keep runtime traces, device-visible counters, or other hardware evidence close to the test result.
Compare before optimizing
For transformer experiments, useful checkpoints include tensor shapes, selected intermediate values, and first-token decisions. Once those checks are stable, performance measurements become easier to trust.
Validation loop
CPU reference→
NPU execution→
Compare outputs→
Record hardware evidence
Record limitations
A useful result includes what is not yet accelerated, what still runs on the host, the tested hardware, and the exact software/runtime assumptions. That makes later regressions and improvements measurable.