贡献 / #1766

#1766 sycl: add a device-event BF16/F32 MMVF bench

open · @duncanmcqueen · 0 评论 · 去 GitHub 看

BenchmarksModels & quants

说明

## Summary
Adds `sycl/probe/bf16_event_bench.cpp` and a CMake target, a standalone probe that times the existing BF16/F32 matrix-vector paths (`bf16_gemv_fp32_mmvf*`) with **device event timestamps** on a profiling-enabled in-order queue, and checks each result against a single-token call of the same kernel. It reports one JSON line per shape.

## What changed
- `sycl/probe/bf16_event_bench.cpp`: times the default `bf16_gemv_fp32_mmvf_multi` path vs `STRATA_MMVF_ROWS=1` across the Coder's shapes (`n` x `k`) and 1-8 tokens. Gates on bitwise equality with the per-token calls, guard regions, strided inputs (`ldx`/`ldy`), zero and scale-extreme inputs, an FP64 oracle bound, odd tails, and invalid-geometry rejection. Reports queue-span median/min, host wall, empty-marker cost, weight GB/s, and an output hash.
- `sycl/CMakeLists.txt`: `sycl_bf16_event_bench` target plus two CTest cases (`--quick --rows 0` and `--quick --rows 1`).

## Extra Notes
Measured on an Arc A770 (`xe`, PCIe 3.0 x4): the rows path (`STRATA_MMVF_ROWS=1`) is **1.4-6x slower** than the default on this card — 320x10240 at T=3: 16.1 -> 79.0 us; 2560x2560 at T=4: 38.7 -> 245.5 us — all outputs bitwise-identical. The probe exists so the default-vs-rows choice stays measured. It runs on `level_zero` and needs no model. Both CTest cases pass.

本站相关内容

相关页面的快捷入口。