Days

Quickstart

Run one scenario on the Days AGO Scalar, CPU, Metal, and CUDA engines.

Scope: Days AGO. Run commands from the repository root. Every run below uses the small TCP smoke fixture configs/benchmarks/tcp/fattree_k4_tcp_cubic_f16_smoke.toml.

Scalar

The Scalar engine is the reference oracle: one thread, one global event calendar in canonical order.

cargo run --release --bin days -- --engine scalar \
  configs/benchmarks/tcp/fattree_k4_tcp_cubic_f16_smoke.toml

It prints a record=days_scalar line with the stop time, pending events, processed event count, and packet and byte counters, then a record=days_result line with the complete-state byte length and its FNV-1a-64 fingerprint. For this fixture the result line reports result_bytes=101690 result_fnv1a64=d7de73ee33579682.

CPU

The CPU engine runs safe-horizon rounds on a worker pool. Each logical process (LP) is owned by one worker for the whole run. Each round drains active LPs below an exclusive safe horizon, exchanges remote events at a barrier, and merges them in canonical order for the next round.

cargo run --release --bin days -- --engine cpu --workers 2 \
  configs/benchmarks/tcp/fattree_k4_tcp_cubic_f16_smoke.toml

--workers is required. The engine prints a record=days_cpu line with round, event, and worker-pool counters, then a record=days_result line whose fingerprint matches the Scalar run.

Metal and CUDA

Device engines need their Cargo feature. On Apple Metal:

cargo run --release --features metal --bin days -- --engine metal \
  configs/benchmarks/tcp/fattree_k4_tcp_cubic_f16_smoke.toml

On an NVIDIA host with a CUDA 13 toolkit, use --features cuda and --engine cuda. Asking for a device engine in a build without its feature is an error that names the missing feature; days never picks a device for you.

A device run prints record=days_protocol (the run configuration), record=days_device (rounds, transitions, and capacity retries), and record=days_result. Its fingerprint must equal the Scalar run's; on Metal it reports the same result_bytes=101690 result_fnv1a64=d7de73ee33579682.

Rejected mechanisms

Metal and CUDA reject images containing RED, collective stages, or compute stages before execution. The error names the backend and recommends Scalar or CPU:

backend Metal does not support RED admission; use Scalar or Cpu

This is a capability rejection, not a silent fallback. See the days CLI reference for every option and record field.

Legacy Days

To run the frozen actor-model simulator instead, see Legacy Days.

On this page