You are browsing as a guest. Sign up (or log in) to start making projects!

9h 43m 3s logged

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.

0
8

Comments 0

No comments yet. Be the first!