# Platforms Which GPU platforms run which build of this repo, and how far up the ladder each has been taken; the second lowerer, IREE, is a row of the same table. Generated by `scripts/platform/platforms_md.py` from `scripts/platform/support.tsv` and `runs/platform/*/` — do not hand-edit; the book's platforms table (Appendix A) is generated from the same rows. One profile, `scripts/platform/env.sh`, says what each platform runs with (backend, plugin, device variable, a Jetson's allocator defaults); the platforms' pages are in `deploy/`. ## Support matrix A cell is the last run of that rung on that platform — its date and where the record lives. `-` means not run there, which is not a failure; `n/a` means the rung cannot run there. The ladder is `scripts/platform/check.sh` (tiers 0–2, minutes), then `lake run mnist` (a minute), `cifar` (~6 min), `imagenette` (~6 h; `imagenette-orin` on the Jetson, a day) and `imagenet` (four cards, weeks); the proofs rung before them is platform-free and has no column. | platform | env.sh profile | plugin | runbook | suite | mnist | cifar | imagenette | imagenet | |---|---|---|---|---|---|---|---|---| | 4× RTX 4060 Ti — CUDA 12, driver 575 | cuda / desktop / `ares` | `jax_cuda12_pjrt` 0.11.0 in the pinned `.venv` | [README](README.md#the-tour) | 2026-10-06 · ✅ 22 pass, tiers 0–2 ([results](runs/platform/2026-10-06-ares-cuda/results.tsv)) | 2026-09-01 · [`runs/2026-09-01-mnist-n30`](runs/2026-09-01-mnist-n30/) (linear, MLP, CNN); 30 seeds | 2026-09-01 · [`runs/2026-09-01-cifar8w-bn-xla-cuda`](runs/2026-09-01-cifar8w-bn-xla-cuda/) (the 8-conv CNN, six arms) | 2026-09-13 · [`runs/2026-09-12-r34-ablation-fp32-seeds`](runs/2026-09-12-r34-ablation-fp32-seeds/) (all seven); R34 over five seeds there, ConvNeXt-T in [`runs/2026-09-13-convnext-imagenette-ls1e-6-resident`](runs/2026-09-13-convnext-imagenette-ls1e-6-resident/), the rest in chapters 5–9 | 2026-07 → 08 · the chapter-5 rows (R34; R50 at 2018 and RSB-A3): the ResNet-34 and ResNet-50 references in bf16, the fp32 ResNet-34 and the per-replica-BN ResNet-50 verified runs; the chapter's tables are the record (checkpoints off-repo), and [`runs/2026-09-24-r50-2018-syncbn-bf16-90ep/RESULTS.md`](runs/2026-09-24-r50-2018-syncbn-bf16-90ep/RESULTS.md) pairs the 3060 box's re-runs against them | | 4× RTX 3060 — CUDA 13.3, driver 610 | cuda / desktop / `3060` | `xla_cuda13` in `/home/skoonce/.venv-cuda`, `SHIM_PYTHON` required | [scripts/jobs/_box.sh](scripts/jobs/_box.sh) | 2026-10-06 · ✅ 24 pass, tiers 0–2 ([results](runs/platform/2026-10-06-mars-cuda/results.tsv)) | - | - | - | 2026-09-24 · [`runs/2026-09-23-r50-a3-syncbn-bf16-100ep`](runs/2026-09-23-r50-a3-syncbn-bf16-100ep/) (all seven, and MNv4); R50 RSB-A3 at 4 × 128 sync-BN there, [`runs/2026-09-24-r50-2018-syncbn-bf16-90ep`](runs/2026-09-24-r50-2018-syncbn-bf16-90ep/); [`runs/2026-09-22-r34-syncbn-bf16-90ep`](runs/2026-09-22-r34-syncbn-bf16-90ep/) (R34 sync-BN); [`runs/2026-09-16-r34-bf16-90ep`](runs/2026-09-16-r34-bf16-90ep/) (R34 2018, bf16); [`runs/2026-09-27-mnv2-verified-bf16-350ep`](runs/2026-09-27-mnv2-verified-bf16-350ep/); [`runs/2026-09-26-mnv4-verified-bf16-100ep`](runs/2026-09-26-mnv4-verified-bf16-100ep/); the chapter 6–9 references and verified runs | | Jetson Orin Nano 8 GB — sm_87, JetPack 6.2, unified memory | cuda / tegra / `orin` | jax v0.11.1 built for sm_87 by [`deploy/build_orin_pjrt_plugin.sh`](deploy/build_orin_pjrt_plugin.sh), staged by `orin_setup.sh` | [deploy/ORIN.md](deploy/ORIN.md) | 2026-10-26 · ✅ 20 pass, tiers 0–2 ([results](runs/platform/2026-10-26-orin-cuda/results.tsv)) | 2026-09-13 · [ORIN.md §4](deploy/ORIN.md#4-the-verified-trainers-on-the-gpu) (the CNN) | 2026-09-13 · [ORIN.md §4](deploy/ORIN.md#4-the-verified-trainers-on-the-gpu) (the 8-conv CNN, with and without BN) | 2026-10-27 · [ORIN.md § Imagenette](deploy/ORIN.md#imagenette) (all seven); 80 epochs, peak 65 °C: four of the six seeded nets inside CUDA's five-seed range, ResNet-50 one image under (best inside), MobileNetV2 0.20 under; ConvNeXt-T as 8 × 4 accumulated, 83.03 % against CUDA's one run of 82.27 % — ResNet-34 90.32 %, ResNet-50 89.55 %, EfficientNet-B0 90.09 %, MobileNetV2 88.54 % | n/a: one 8 GB board | | AMD Radeon RX 7900 XTX 24 GB — ROCm 10.1 wheels, gfx1100, kernel 6.8 | rocm / desktop / `ares` | `jax-rocm10-pjrt` 0.11.1 with ROCm 10.1 in `.venv-rocm10`, made by `deploy/rocm10_setup.sh` (no root) | [deploy/ROCM_7900XTX.md](deploy/ROCM_7900XTX.md) | 2026-11-01 · ✅ 21 pass, tiers 0–2 ([results](runs/platform/2026-11-01-ares-rocm-2/results.tsv)) | 2026-11-01 · [ROCM_7900XTX.md § Measured on ares](deploy/ROCM_7900XTX.md#measured-on-ares-rocm-101) (linear, MLP, CNN); 92.10 / 97.80 / 98.60 % | 2026-11-01 · [ROCM_7900XTX.md § Measured on ares](deploy/ROCM_7900XTX.md#measured-on-ares-rocm-101) (the 8-conv CNN, six arms; batch-BN); best 77.13 %; the batch-BN gradient check, five seeds overlapping CUDA's range on every arm, width grid within 0.9 of CUDA's at every width | 2026-11-01 · [ROCM_7900XTX.md § Measured on ares](deploy/ROCM_7900XTX.md#measured-on-ares-rocm-101) (all seven); 80 epochs, each inside CUDA's five-seed range or above it — ResNet-34 90.47 %, ResNet-50 90.34 %, MobileNetV2 89.30 %, EfficientNet-B0 89.45 %, MobileNetV4 86.39 %, ConvNeXt-T 82.60 %, ViT-Tiny 69.35 % | n/a: one 24 GB card | | Intel Arc Pro B50 16 GB — Battlemage, oneAPI, kernel 7.0 | xpu / desktop / `minerva` | `jax_oneapi_pjrt` 0.11.2 (platform `oneapi`) with its oneAPI runtime wheels in `.venv-xpu`, made by `deploy/arc_setup.sh` | [deploy/ARC_B50.md](deploy/ARC_B50.md) | 2026-10-24 · ✅ 21 pass, tiers 0–2 ([results](runs/platform/2026-10-24-minerva-xpu/results.tsv)) | 2026-10-22 · [ARC_B50.md § Measured](deploy/ARC_B50.md#measured) (linear, MLP, CNN); 92.10 / 97.83 / 98.66 % at Gen3 | 2026-10-22 · [ARC_B50.md § Measured](deploy/ARC_B50.md#measured) (the 8-conv CNN, six arms); best 76.24 % from scratch at Gen3, five of six inside CUDA's five-seed range | 2026-10-24 · [ARC_B50.md § Measured](deploy/ARC_B50.md#measured) (all seven); 80 epochs, each inside CUDA's five-seed range or within two images of it — ResNet-34 89.68 %, ResNet-50 89.61 %, EfficientNet-B0 90.55 %, MobileNetV2 88.71 %, ~9 h at 62–69 W, the slot at Gen3 | n/a: one 16 GB card | | Apple M1 MacBook Air — Metal, macOS 26, unified memory | metal / desktop | `jax-graft` 0.0.5 (`metal-pjrt-core`, platform `mtl`) in the repo's `.venv` | [deploy/MAC.md](deploy/MAC.md) | - | 2026-10-14 · [MAC.md § Measured](deploy/MAC.md#measured) (linear, MLP, CNN); 92.10 / 97.79 / 98.71 % against CUDA's medians 92.10 / 97.78 / 98.78 | - | - | n/a: not a training box | | IREE 3.12 — the second lowerer, over CUDA, ROCm or the CPU; no PJRT plugin, it compiles every kernel itself. Pinned to 3.12.0 by `deploy/iree_cpu_setup.sh`, which builds it for the CPU or, with `IREE_TARGET=cuda`, for the card | `LEAN_MLIR_LOWERER=iree`; `IREE_BACKEND` picks the target | `iree-compile` 3.12.0 in `.venv-iree` and `ffi/libiree_ffi.so`, both from [`deploy/iree_cpu_setup.sh`](deploy/iree_cpu_setup.sh) (the CPU by default, `IREE_TARGET=cuda` for the card) | [deploy/iree_cpu_setup.sh](deploy/iree_cpu_setup.sh); the `-iree` twins (`lake run mnist-iree`, `cifar-iree`, `imagenette-iree`) | n/a: no plugin to load; a box is admitted by the `-iree` twins | 2026-11-05 · [`runs/2026-11-05-mnist-iree-cuda`](runs/2026-11-05-mnist-iree-cuda/) (linear, MLP, CNN); over CUDA on one 4060 Ti, 12 epochs each, every final inside XLA's 30-seed range ([`runs/2026-09-01-mnist-n30`](runs/2026-09-01-mnist-n30/)) | 2026-11-05 · [`runs/2026-11-05-cifar-iree-cuda`](runs/2026-11-05-cifar-iree-cuda/) (the 8-conv CNN, six arms; batch-BN, six arms); over CUDA, 40 epochs per arm; the no-BN arms inside XLA's five-seed ranges, the BN arms within a quarter of a point of theirs, the batch-BN net's arms against the plain-BN ranges it outgrows (its NOTES.md) | 2026-11-05 · [`runs/2026-11-05-iree-cuda-smoke`](runs/2026-11-05-iree-cuda-smoke/) (all seven, ten steps); over CUDA, each net compiled, stepped and evaluated, ms/step probed; the row owes their 80-epoch finals. The same seven stepped through IREE on a CPU in [`runs/2026-10-28-imagenette-iree-llvmcpu`](runs/2026-10-28-imagenette-iree-llvmcpu/), where the ResNets' 3×3/s2 max-pool backward was re-emitted without `select_and_scatter`, which no IREE release lowers over overlapping windows | n/a: collectives exist only on the PJRT path | ## Platform-suite runs `scripts/platform/check.sh` (`--plan` shows what it runs); the design is [`planning/platform_integration.md`](planning/platform_integration.md). A run is green when every test matches the platform's baseline in `scripts/platform/expected/`. When a run turns red, diff its `manifest.json` against the last green run on the same box: core equal and platform changed points at the driver or plugin; platform equal and core changed points at this repo. | date | host | GPUs | driver | runtime | plugin | PJRT API | repo | tiers | pass | xfail | fail | skip | | |---|---|---|---|---|---|---|---|---|---|---|---|---|---| | 2026-11-01 | ares | 1× AMD Radeon RX 7900 XTX | | runtime 7.16.26385, dnn 1.3.0 | jax_rocm10_pjrt==0.11.1+rocm10.1.0 | 0.114 (hdr 0.90) | `824155aa+dirty` | 0–2 | 21 | 0 | 0 | 3 | [✅](runs/platform/2026-11-01-ares-rocm-2/results.tsv) | | 2026-10-26 | orin | 1× Orin (nvgpu) | 540.4.0 | runtime 12.6.0, dnn 9.12.0 | pjrt_c_api_gpu_plugin.so | 0.114 (hdr 0.90) | `e985c139+dirty` | 0–2 | 20 | 1 | 0 | 3 | [✅](runs/platform/2026-10-26-orin-cuda/results.tsv) | | 2026-10-26 | minerva | 1× AMD Radeon RX 7900 XTX | | runtime 7.2.53211, dnn 0.0.0 | jax_rocm7_pjrt==0.11.0 | 0.114 (hdr 0.90) | `85d9b2a1+dirty` | 0–2 | 21 | 0 | 0 | 3 | [✅](runs/platform/2026-10-26-minerva-rocm-coldmiopen-nogemm/results.tsv) | | 2026-10-26 | minerva | 1× AMD Radeon RX 7900 XTX | | runtime 7.2.53211, dnn 0.0.0 | jax_rocm7_pjrt==0.11.0 | 0.114 (hdr 0.90) | `85d9b2a1+dirty` | 0–2 | 18 | 0 | 3 | 3 | [❌](runs/platform/2026-10-26-minerva-rocm-coldmiopen/results.tsv) | | 2026-10-25 | minerva | 1× AMD Radeon RX 7900 XTX | | runtime 7.2.53211, dnn 0.0.0 | jax_rocm7_pjrt==0.11.0 | 0.114 (hdr 0.90) | `85d9b2a1+dirty` | 0–2 | 21 | 0 | 0 | 3 | [✅](runs/platform/2026-10-25-minerva-rocm-k68/results.tsv) | | 2026-10-25 | minerva | 1× AMD Radeon RX 7900 XTX | | runtime 7.16.26385, dnn 1.3.0 | jax_rocm10_pjrt==0.11.1+rocm10.1.0 | 0.114 (hdr 0.90) | `85d9b2a1+dirty` | 0–2 | 21 | 0 | 0 | 3 | [✅](runs/platform/2026-10-25-minerva-rocm10-nogemm/results.tsv) | | 2026-10-25 | minerva | 1× AMD Radeon RX 7900 XTX | | runtime 7.16.26385, dnn 1.3.0 | jax_rocm10_pjrt==0.11.1+rocm10.1.0 | 0.114 (hdr 0.90) | `85d9b2a1+dirty` | 0–2 | 17 | 0 | 4 | 3 | [❌](runs/platform/2026-10-25-minerva-rocm10/results.tsv) | | 2026-10-25 | minerva | 1× AMD Radeon RX 7900 XTX | | runtime 7.2.53211, dnn 0.0.0 | jax_rocm7_pjrt==0.11.0 | 0.114 (hdr 0.90) | `85d9b2a1` | 0–2 | 21 | 0 | 0 | 3 | [✅](runs/platform/2026-10-25-minerva-rocm/results.tsv) | | 2026-10-24 | minerva | 1× Intel(R) Arc(TM) Pro B50 Graphics | | runtime 8.0.0, dnn 3.12.3 | jax_oneapi_pjrt==0.11.2 | 0.115 (hdr 0.90) | `ef15b629` | 0–2 | 21 | 0 | 0 | 3 | [✅](runs/platform/2026-10-24-minerva-xpu/results.tsv) | | 2026-10-22 | minerva | 1× Intel(R) Arc(TM) Pro B50 Graphics | | runtime 8.0.0, dnn 3.12.3 | jax_oneapi_pjrt==0.11.2 | 0.115 (hdr 0.90) | `476f7878+dirty` | 0–2 | 21 | 0 | 0 | 3 | [✅](runs/platform/2026-10-22-minerva-xpu/results.tsv) | | 2026-10-11 | minerva | 1× Intel(R) Arc(TM) Pro B50 Graphics | | runtime 8.0.0, dnn 3.12.3 | jax_oneapi_pjrt==0.11.2 | 0.115 (hdr 0.90) | `320f5045+dirty` | 0–2 | 21 | 0 | 0 | 3 | [✅](runs/platform/2026-10-11-minerva-xpu/results.tsv) | | 2026-10-06 | mars | 4× RTX 3060 | 610.57.04 | runtime 13.3.0, dnn 9.24.0 | jax_cuda13_pjrt==0.11.1 | 0.114 (hdr 0.90) | `40e3c7ee` | 0–2 | 24 | 0 | 0 | 0 | [✅](runs/platform/2026-10-06-mars-cuda/results.tsv) | | 2026-10-06 | ares | 2× RTX 4060 Ti | 575.57.08 | runtime 12.9.0, dnn 9.23.2 | jax_cuda12_pjrt==0.11.0 | 0.114 (hdr 0.90) | `a2a3d5e9` | 0–2 | 22 | 0 | 0 | 0 | [✅](runs/platform/2026-10-06-ares-cuda/results.tsv) | | 2026-10-02 | ares | 3× RTX 4060 Ti | 575.57.08 | runtime 12.9.0, dnn 9.23.2 | jax_cuda12_pjrt==0.11.0 | 0.114 (hdr 0.90) | `d0b17730` | 0–2 | 22 | 0 | 0 | 0 | [✅](runs/platform/2026-10-02-ares-cuda-2/results.tsv) | | 2026-10-02 | ares | 3× RTX 4060 Ti | 575.57.08 | runtime 12.9.0, dnn 9.23.2 | jax_cuda12_pjrt==0.11.0 | 0.114 (hdr 0.90) | `8dd23e5b` | 0–1 | 7 | 0 | 0 | 0 | [✅](runs/platform/2026-10-02-ares-cuda/results.tsv) |