1.5 KiB
1.5 KiB
ADR-0010: CLI Device Selection and Multi-Device Execution Semantics
Status
Accepted
Context
Benchmarks represent device-agnostic workloads that operate on a single device. Users may want to run a benchmark:
- on a specific device, or
- across all devices in the system.
Device enumeration must not leak into benchmarks or runtime APIs.
Decision
D1. Benchmarks are single-device by design
- A benchmark MUST define behavior for a single device only.
- A benchmark MUST accept a device identifier as input.
- Benchmarks MUST NOT enumerate or loop over multiple devices.
D2. CLI controls device selection
The kernbench run command supports an optional --device argument:
-
If
--device <id>is specified:- the benchmark executes once for the specified device.
-
If
--deviceis omitted:- the benchmark executes once using all the SIPs discovered in the topology.
D3. Multi-device execution is logically parallel
When running on multiple devices:
- benchmark executions are submitted to a single simulation engine instance,
- executions are logically parallel in simulation time,
- inter-device contention is naturally modeled.
D4. Runtime API and simulation engine remain device-scoped
- Runtime API calls operate on one device per invocation.
- The simulation engine schedules all requests deterministically.
- Neither layer enumerates devices.
Links
- SPEC R7, R8
- ADR-0007 (Runtime API boundaries)