Open in tt-awesome →

tt-atom

affiliated
by moritztng · Python · MIT · 26⭐ ·
tt-atom preview

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.

📦 Repo
LATEST v0.3.0 2026-08-21T04:44:32Z Release notes ↗
3 previous releases
v0.2.1 2026-07-20T11:06:13Z
v0.2.0 2026-07-11T07:47:26Z
v0.1.0 2026-07-08T19:08:02Z
See all releases on GitHub ↗
# 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.
molecular-dynamics interatomic-potential mlip uma ase inference custom-kernel
blackhole