open-standards/wai/tools/ops-gpu-bench/Cargo.toml
Transaction Science 446a9269bb tools/ops-gpu-bench: time and energy of each capability's decode, graphs on the CPU and on a GPU
A separate crate with its own lockfile, as quantum-meter is. Per committed
vector and per path (the CPU's default kernels on every core, then each
adapter found): two warm-up decodes, then decodes back to back for at least
the given seconds and count, each compared byte for byte with the CPU's
output; the line gives the count, median and 10th/90th percentiles. Energy is
read at the two ends of the timed loop only: on macOS this process's CPU
energy and GPU share (IOReport, which gives no GPU figure where the GPU was
shared) with the GPU rail over the window as an upper bound; on Linux RAPL
package-0 and, with the NVIDIA driver, its cumulative board energy counter,
after an idle window that gives each counter's idle power.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 04:23:54 -04:00

32 lines
1.3 KiB
TOML

# Time and energy of the integer decoders with their graphs on the CPU and on a GPU
# (wai-rs `ops_gpu`), per capability, on the committed vectors.
#
# A SEPARATE crate with its own lockfile, as quantum-meter is: the energy sources it reads
# (this process's CPU and GPU counters on macOS, RAPL package energy and the NVIDIA
# driver's cumulative energy counter on Linux) belong with the tool that reads them, and
# never compile in wai-rs's own builds or tests.
[package]
name = "ops-gpu-bench"
version = "0.0.0"
edition = "2024"
rust-version = "1.97"
license = "Apache-2.0"
publish = false
[dependencies]
wai = { path = "../../wai-rs", default-features = false, features = ["ops_gpu", "video_int", "audio_int", "splat_int", "world_int"] }
wai-ops = { path = "../../wai-ops" }
serde_json = "1"
# On macOS on Apple Silicon: this process's CPU energy and its share of the GPU rail
# (IOReport), the span meter quantum-meter uses.
[target.'cfg(target_os = "macos")'.dependencies]
jouleclaw-energy = { path = "../../../jouleclaw/jouleclaw-rs/crates/jouleclaw-energy", default-features = false, features = ["ioreport"] }
# On Linux: the NVIDIA driver's library is opened at run time, so a host without it
# builds and reports no GPU energy.
[target.'cfg(target_os = "linux")'.dependencies]
libc = "0.2"
[profile.release]
debug = false