Devlog 05: Standalone GEMV Ceiling: Sustaining 38.5 GB/s
Built tools/bench-aie-gemv-standalone.cpp to measure pure hardware DMA bandwidth without graph scheduler overhead.
auto t0 = std::chrono::high_resolution_clock::now();
bo_weights->sync(XCL_BO_SYNC_BO_TO_DEVICE);
kernel_run.wait();
auto t1 = std::chrono::high_resolution_clock::now();
double gb_s = (bytes / (dt_ns * 1e-9)) / 1e9;
-
sync(TO_DEVICE): Flushes dirty CPU lines and triggers DMA transport. -
kernel_run.wait(): Waits for AIE vector compute completion.
Tested synthetic matrix sizes out to 1 GB ($K=5120$):
- 16 MB: 31.87 GB/s (0.53 ms)
- 128 MB: 34.27 GB/s (3.92 ms)
- 1024 MB: 38.57 GB/s (27.84 ms)
Linear fit: $T(\text{bytes}) \approx 0.15\text{ ms} + \frac{\text{bytes}}{38.5\text{ GB/s}}$. The ~150 µs startup overhead gets amortized as matrix size grows.
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.