Days

Installation

Build the Days AGO days CLI with the Scalar, CPU, Metal, and CUDA engines.

Days is a Rust workspace. Use the current stable Rust toolchain and run commands from the repository root.

Scalar and CPU

The root days package compiles TOML into an integer-nanosecond SimulationImage and provides the days CLI; the days-executor package runs the image. The Scalar and CPU engines need no extra features:

cargo build --release --bin days

Metal

On Apple platforms, the metal feature enables the Metal backend:

cargo build --release --features metal --bin days

The Metal backend is tested on the Apple M5 Max and M3. It refuses Apple M1-family GPUs (GPU family Apple7) before compiling any kernel, because the Metal compiler for that family produces incorrect code for the Days kernels; use --engine scalar or --engine cpu there. M2-family GPUs (Apple8) are untested.

CUDA

The cuda feature enables the CUDA backend. It needs a compatible NVIDIA driver and a CUDA 13 toolkit whose nvcc can compile sm_86, sm_89 and sm_121. nvcc must be on PATH, or named by the NVCC environment variable:

cargo build --release --features cuda --bin days

Without nvcc, a cuda build fails in the executor's build script with a message that names the missing compiler.

Feature flags

FeatureEnables
metalthe Metal backend (Apple only)
cudathe CUDA backend (requires a CUDA 13 nvcc)
cuda-planner-testthe host-only CUDA planner equality test; enables test, builds without nvcc, and compiles no CUDA kernels
testtest-only helpers, including the executor's planner test hooks
metal-test-hooks, cuda-test-hooksdevice conformance hooks for the device test surfaces

Images containing a mechanism a device backend does not implement are rejected before execution; see backend capability validation.

Legacy Days

The frozen legacy simulator builds as its own package, days-legacy, with its own feature flags. See Legacy Days.

On this page