# docs/capabilities.md — measured capabilities (2026-11-02) ## Metal (laptop, Apple M5 Max) | Property | Value | How measured | |---|---|---| | Device name | Apple M5 Max | `MTLCreateSystemDefaultDevice().name` | | Unified memory | yes | `hasUnifiedMemory` | | `maxBufferLength` | 28 753 MB | property | | `recommendedMaxWorkingSetSize` | 38 338 MB | property | | `maxThreadsPerThreadgroup` | 1 024 | property | | `threadExecutionWidth` (SIMD) | 32 | pipeline state | | GPU families | Apple1 … Apple10, Metal3 | `supportsFamily:` | | Ray tracing / 32-bit float filtering / argument buffers | yes / yes / tier reported | properties | | FP64 in shaders | **no** (compiler error "'double' is not supported in Metal") | runtime + offline compile of a `double` kernel | | Runtime MSL compile (trivial kernel, cold) | 34.6 ms | `newLibraryWithSource:` wall-clock | | Offline toolchain | Apple metal 32023.922, target air64-apple-darwin27.0.0 | installed during audit | | 1 M-element elementwise square | 0.029 ms GPU time (`GPUEndTime − GPUStartTime`) | `docs/evidence` test program | Consequences for the design: FP32 everywhere on GPU with compensated (Kahan/Neumaier) and pairwise reductions, FP64 accumulation of sufficient statistics on CPU when the reduction length exceeds a documented threshold, and GPU results always compared to the CPU FP64 reference with method-specific tolerances. "Precision" is reported in every Estimate. ## CPU (laptop) Apple M5 Max 18 cores (6 performance + 12 efficiency), 48 GB; Accelerate BLAS/LAPACK; Apple clang 21 supports C++20 and `-O3 -mcpu=apple-m4` (`apple-m5` not yet in clang 21's list; measured flags recorded in the benchmark manifest). ## Cluster See `docs/audit.md` §3 (22 reachable nodes, Metal 4 on all, GPU cores 10–60, RAM 8–96 GB, most nodes without Homebrew in the SSH PATH, m2m8b without developer tools). Inter-node SSH works only on LAN IPs (Tailscale ACL); the laptop reaches nodes by alias. ## FinData OS See `docs/audit.md` §2 and `docs/evidence/findata_openapi_2026-11-02.json`. Measured: Arrow IPC page of 1 599 bars = 246 KB; export of 34 607 rows ready in 1.5 s; dataset versions pinned (ETF 1m = 5162 at audit time). ## Software versions (laptop, audit time) cmake 4.3.2 · Apple clang 21.0.0 (clang-2100.4.1.1) · Xcode 27.2 · macOS 27.0 · Python 3.12.13 (venv) · nanobind 3.1.0 · numpy 2.5.4 · pyarrow 26.0.0 · arch 8.0.0 · statsmodels 0.15.0 · scipy 1.18.1 · polars 2.1.0 · duckdb 2.0.0 · exchange-calendars 4.13.2 · R 4.6.1 · highfrequency 1.0.3 · rugarch 1.5.6 · TeX Live 2026 · latexmk 4.88. Homebrew C++ packages installed during Phase 0: filled in by `scripts/record_environment.sh` into `experiments/manifests/environment_laptop.json` (versions are read from `brew list --versions`, never typed by hand).