E6003
E6003 — A value is used from a topology that cannot see the memory space it lives in. The diagnostic names the value's space, the visible set of the topology reading it, and the cost of the transfer that would fix it — so a misplaced handoff (an un-transferred KV cache in a disaggregated prefill/decode split, say) is a compile error that carries its own remedy. A managed: cached space the topology can reach across a declared seam is coherent in hardware and is not reported here.
What the compiler reports
E6003 … 'host_data' lives in CPU_DRAM … NPU[0] sees only [NPU_HBM] … insert an explicit transfer to NPU_HBM
The fragments the test suite holds the compiler to. An ellipsis marks text the test does not constrain; the emitted message also carries a source location.
A program that triggers it
fn main() -> i32 {
let host_data = Tensor<f32>();
spawn on(Topology::NPU[0]) {
let x = host_data[0];
}
return 0;
}
// The NPU cannot see host DRAM: E6003 names where the value lives, what the
// topology sees, and the costed fix (#253).
From tests/frontend/fail/memory_algebra.vx, which asserts this diagnostic on every commit.
Related
Topologies and memoryThe chapter covering the rule this code enforces.
All diagnosticsEvery code the compiler can emit, grouped by stage.
E6002Cannot transfer between memory spaces (no hardware path)
E6004Transfer violates the boundary contract at a seam (per-seam local-completeness / soundness obligation is
sat; a stale read can violate the contract).