tt-atom
affiliated
Meta's UMA interatomic potential running on Tenstorrent Blackhole — energy, forces, and stress for molecules and periodic materials behind an ASE calculator. Its per-edge Wigner rotation runs as a custom tt-metal kernel for a highest-performance uma-s build.
Links
📦
Repo
📋 Changelog
# Changelog All notable changes to TT-Atom are recorded here. Versioning is [SemVer](https://semver.org); releases are cut only from a commit that has passed the on-hardware release gate — accuracy parity, no OOM across the supported size range, no perf or UX regression, and a clean install smoke (see `RELEASING.md`). ## [Unreleased] Behaviour changes are all in the knobs and the caches, not in the models: every numeric path is byte-identical to 0.3.0. ### Fixed - The release gate's perf leg no longer decides by luck. It took one measurement per model against a fixed 15% threshold, and on a p150a the throughput spread between runs reaches that threshold on its own: in the gate run that closed this entry, `uma-s-1-omol-batch` drew 88.9, 104.4 and 104.8 sys/s, and the first of those alone is a 20% shortfall against the baseline. The leg now waits for every other process to let go of a card and gates the median of three independent runs, printing all three. With no quiet window it measures anyway and reports a shortfall as `GAP`, since a contended run is not evidence of a regression. - `benchmarks/_harness.host_quiet()` reported the host busy forever. It grepped process command lines for `tt_bio`, which matches any agent whose own arguments merely mention it; it asks the kernel who holds a `/dev/tenstorrent` node now. The three benchmarks that wait for a quiet host used to burn their full 40-minute budget and stop without measuring. - The edge-bucketing speedup in the README and `docs/orb-port.md` is re-measured and now names the environment it was taken in. It said 1.4x cold wall-clock on a 20-system screening stream; two draws on the pinned tt-metal source build give **1.11x and 1.14x** (235.1 / 236.5 s unbucketed against 210.9 / 207.6 s bucketed). What bucketing saves is compiles, and that is unchanged and exact: 20 distinct edge shapes collapse to 7 buckets and 2350 fewer kernel files are built, identical to the file across both draws. The wall-clock ratio fell because a compile costs about half what it did in whatever environment produced the earlier number — which that log does not record, so the three subprocess benchmarks now stamp `ttnn_version` next to `git_sha`. - `benchmarks/_harness.sandbox_env` resolves the sandbox `$HOME`. A relative `--workdir` reached the child as a relative `$HOME`, and tt-metal resolves that against the child's own working directory: it died deep in the JIT build with "Failed to open compile failure log file" and a path that reads as correct. `bench_compile_pain.py` also defaulted to `--card 3`, a card that does not exist on the host this repo is routed to. - `TT_ATOM_SCATTER_THRESHOLD` is documented. It is the node count above which UMA's dense one-hot scatter gives way to the linear path, and therefore what bounds DRAM on a large cell, but it appeared in no doc. - The release gate reads `OVERALL: PASS` again. Both Orb perf rows were seeded on a stock `ttnn` 0.68.
Works on
blackhole