Skip to main content

tt-check

tt-check is a small command-line readiness test for a Tenstorrent system with tt-smi and the public ttnn Python package installed.

It performs the following checks:

  1. Resets devices with tt-smi -r.
  2. Collects system information from tt-smi -s --snapshot_no_tty.
  3. Opens a TTNN device.
  4. Runs a tensor-parallel three-weight gated MLP 100 times in both prefill and decode shapes:
    • BF16 activations
    • BFP8 weights
    • 1024 activation width per device shard
    • prefill rows: 1024
    • decode rows: 1
  5. On multi-device systems, replicates activations, column-shards w1/w3, row-shards w2, and all-reduces the output activations across the mesh.
  6. Warms each MLP shape once, captures one dynamic TTNN trace per shape, then executes each trace for the requested run count.
  7. Compares each trace replay against a PyTorch reference with PCC >= 0.99 and requires TTNN output tensors to be identical across all replays.

Install

Run from PyPI with uv:

uvx --python 3.10 tt-check

Or install from a checkout:

uv tool install --python 3.10 .

Or run directly from a checkout:

uv run tt-check

uv uses the PyTorch CPU wheel index for this project; the check only needs Torch for reference math. The project pins a Python version compatible with the current public ttnn wheels.

Pip also works:

python3 -m pip install .

Run

tt-check

The command exits 0 if all checks pass. It exits 1 and writes the failure to stderr otherwise.

Example output:

tt-check: resetting device... ok
tt-check: 1x2 mesh (1x p300a | blackhole)
tt-check: prefill mlp: 100%|██████████| 100/100 [00:00<00:00, 206.20run/s]
tt-check: decode mlp: 100%|██████████| 100/100 [00:00<00:00, 2660.53run/s]
tt-check: passed in 44.9 seconds | prefill pcc 0.99981364 | decode pcc 0.99986366

Useful options:

tt-check --device-id 0 --runs 100 --pcc-threshold 0.99
tt-check --prefill-rows 1024 --decode-rows 1 --activation-width-per-device 1024

Set a mode's row count to 0 to skip it. At least one mode must be enabled. Use --time SECONDS instead of --runs to replay each enabled mode for a duration. The default remains 100 runs per mode. For a 60-minute prefill-only run with 8192 rows:

tt-check --prefill-rows 8192 --decode-rows 0 --time 3600

The timer starts after setup, reference calculation, warmup and trace capture. It includes replay, output transfer and correctness validation, and stops after the first complete replay that reaches the duration. A short duration still runs at least one replay. If both modes are enabled, each gets the full duration. The progress bar shows elapsed time and estimated time remaining. JSON output includes the actual replay count in runs and the requested duration in requested_time_s (null for count-based runs).

Every invocation resets the devices with tt-smi -r. Use a machine reserved for the test. Output is copied to the CPU and checked after every replay, so this is a compute and correctness soak test, not a guarantee of continuous FPU saturation.

Metadata

Release files for tt-check 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tt-check 0.1.3
File Size Uploaded
tt_check-0.1.3.tar.gz 17.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tt-check 0.1.3
File Interpreter ABI Platform
tt_check-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 34.4 kB

Release files / tt_check-0.1.3.tar.gz

Download URL tt_check-0.1.3.tar.gz
Size 17.8 kB
Tags Source
SHA-256 checksum
How to use checksums
6c00c5cf44a60e90cfbae5c3ae3f1afb8db20bfb8af2d74a87d0886362ac2b02
BLAKE2b-256 checksum
How to use checksums
359a42c591c71323466302e915f13bfef55572cef50e74668103eff7ec9bb5c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / tt_check-0.1.3-py3-none-any.whl

Download URL tt_check-0.1.3-py3-none-any.whl
Size 16.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8a040dc714d98683e8f5b54bd52f13a154238b4d49b3235bd259411c392b0abf
BLAKE2b-256 checksum
How to use checksums
916e7e42ae1340755954540d2ca2328ed3aba078b7cf5ebdebe279fb3702ec03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page