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]>
32 lines
1.3 KiB
TOML
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
|