AI kernel benchmarking harness
Project description
AI-bench: Unified AI Benchmarking Suite
A benchmarking framework for evaluating AI kernel implementations across multiple backends (PyTorch, Triton, Helion) and devices (CPU, XPU).
Installation
The project is using uv package manager.
uv can be installed locally using:
pip install uv
The project can be installed with appropriate device-specific extensions using:
# CPU only
uv sync --extra cpu
# CPU + XPU
uv sync --extra xpu
Usage
Command Line Interface
After installation, the ai-bench command is available:
# Show help
ai-bench --help
# PyTorch on CPU (default)
ai-bench
# PyTorch on XPU
ai-bench --xpu
# PyTorch compile on XPU
ai-bench --xpu --torch-compile
# Triton on XPU
ai-bench --xpu --triton
# Helion on XPU
ai-bench --xpu --helion
# Benchmark mode (with timing)
ai-bench --xpu --bench
# Log results to CSV
ai-bench --xpu --bench --csv results.csv --note "baseline run"
Using Scripts Directly
Run KernelBench problems with different backends and devices:
# PyTorch on CPU (default)
python infra/scripts/run_kernel_bench.py
# PyTorch on XPU
python infra/scripts/run_kernel_bench.py --xpu
# PyTorch compile on XPU
python infra/scripts/run_kernel_bench.py --xpu --torch-compile
# Triton on XPU
python infra/scripts/run_kernel_bench.py --xpu --triton
# Helion on XPU
python infra/scripts/run_kernel_bench.py --xpu --helion
# Benchmark mode (with timing)
python infra/scripts/run_kernel_bench.py --xpu --bench
# Triton benchmark on XPU
python infra/scripts/run_kernel_bench.py --xpu --triton --bench
As a Library
import ai_bench
import torch
# Configure paths if running outside project root
ai_bench.configure(
specs_dir="/path/to/specs",
kernels_dir="/path/to/kernels",
)
# Create benchmark runner
runner = ai_bench.KernelBenchRunner(
spec_type=ai_bench.SpecKey.V_BENCH_GPU,
device=torch.device("xpu"),
backend=ai_bench.Backend.PYTORCH,
flops_unit=ai_bench.FlopsUnit.TFLOPS,
mem_bw_unit=ai_bench.MemBwUnit.GBS,
csv_path="results.csv",
)
runner.run_kernels()
CSV Logging
Benchmark results can be logged to a CSV file using the --csv option:
# Log results to CSV
python infra/scripts/run_kernel_bench.py --xpu --triton --bench --csv results.csv
# Add a note to identify the run
python infra/scripts/run_kernel_bench.py --xpu --triton --bench --csv results.csv --note "BMG card test"
The CSV file includes the following columns:
kernel_name: Name of the kernelkernel_type: Backend used (pytorch/triton)problem_level: KernelBench problem levelflops: Number of floating-point operationsflops_val: Computed FLOPS valueflops_unit: FLOPS unit (GFLOPS/TFLOPS)flops_note: FLOPS measurement annotation (see 'Notes legend')mem_bytes: Number of memory bytes transferred - input reads + output writesmem_bw_val: Computed memory bandwidth valuemem_bw_unit: Memory bandwidth unit (MB/s or GB/s)mem_note: Memory measurement annotation (see 'Notes legend')time_us: Execution time in microsecondsinput_values: Input dimensions as JSONnote: User-provided note
Additionally, any environment variables prefixed with AIBENCH_ are automatically captured and included in the CSV output. This is useful for recording system configuration:
# Set environment variables for tracking
export AIBENCH_CARD="BMG"
export AIBENCH_SYSTEM="TestRig1"
python infra/scripts/run_kernel_bench.py --xpu --triton --bench --csv results.csv
Notes legend:
⚠️: estimated value, use with caution
Command Line Options
| Option | Description |
|---|---|
--xpu |
Run on Intel XPU (default: CPU) |
--triton |
Use Triton backend (default: PyTorch) |
--torch-compile |
Use PyTorch compile mode |
--bench |
Run benchmarks with timing (default: CI validation) |
--gflops |
Report GFLOPS (default: TFLOPS) |
--mbs |
Report MB/s (default: GB/s) |
--csv PATH |
Log results to specified CSV file |
--note TEXT |
Add a note to CSV output for identifying runs |
--specs-dir PATH |
Path to specs directory (CLI only) |
--kernels-dir PATH |
Path to kernels directory (CLI only) |
Testing
Run tests with pytest:
pytest -v
Linting
The project uses pre-commit to run various checks automatically.
All checks can be run using:
pre-commit run -a
Config variables
Environment variables used for project configuration:
| Variable | Description |
|---|---|
AIBENCH_LOG=INFO|DEBUG|... |
Globally overrides logging level |
AIBENCH_SPECS_DIR |
Path to specs directory |
AIBENCH_KERNELS_DIR |
Path to PyTorch kernels directory |
AIBENCH_TRITON_KERNELS_DIR |
Path to Triton kernels directory |
AIBENCH_HELION_KERNELS_DIR |
Path to Helion kernels directory |
License
MIT License - see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_bench_suite-0.2.0b1.tar.gz.
File metadata
- Download URL: ai_bench_suite-0.2.0b1.tar.gz
- Upload date:
- Size: 29.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7493c7c9b3d3fdbf69c58a8fd8b1d8f29b5ce9943e8821d5a3732de368e6f57d
|
|
| MD5 |
bf81099c22f3a03803ff66709a6cd549
|
|
| BLAKE2b-256 |
b1401ce3af69cdf04aa0887c54ddab2e44cb08a0af8727df2bfc6b5fb2916ff4
|
File details
Details for the file ai_bench_suite-0.2.0b1-py3-none-any.whl.
File metadata
- Download URL: ai_bench_suite-0.2.0b1-py3-none-any.whl
- Upload date:
- Size: 22.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0e0cb4f63185ff42303f8c3b78b150fd7bd5782320426078ef5b8fa227632fe
|
|
| MD5 |
f3c6c842dfae112a91e64fcaa9809ec4
|
|
| BLAKE2b-256 |
21e5c587f4a776bb7cc390dfbed62e326247864b2f7e98fe49f1f2bfb2760a6d
|