Devlog 02: Hardware Smoke Tests & The 14ms Trap
why have random shi like gate-1? bcs xdna1 is the worst supported from amd, idk their docs are incomplete im like testing and figuring stuff out
Gate 1 milestone: getting real AIE execution contexts spinning via AMD XRT.
Initial prototype had a huge bug: we were creating an xrt::hw_context and reloading the .xclbin bitstream inside the operator compute loop. Profiling showed this added ~14 ms of pure driver overhead per tensor dispatch—which murdered performance before we even started doing math.
Fixed it by making the context a persistent backend singleton:
// Initialize context & load bitstream ONCE at startup
device = std::make_unique<xrt::device>(device_index);
xrt::uuid uuid = device->register_xclbin(xclbin_img);
hw_ctx = std::make_unique<xrt::hw_context>(*device, uuid);
xrt::module mod(elf_img);
kernel_dpu = std::make_unique<xrt::kernel>(xrt::ext::kernel(*hw_ctx, mod, "DPU"));
-
device->register_xclbin: Flashes the DPU bitstream once into the NPU fabric. -
hw_ctx: Persistent hardware context reused across all tensor iterations.
Dispatch overhead instantly dropped from 14 ms down to ~38 µs.
Comments 2
Great progress!
Thanks! @arpitaanuna
Sign in to join the conversation.