inference/research
verifiedhigh · 0.90updated 2026-10-08

Tenstorrent Wormhole Tensix (n150 / n300)

tenstorrent wormhole Tensix 2023

Fields

id
accelerators/tenstorrent-wormhole-n150
Vendor
tenstorrent
Architecture
wormhole Tensix
Release year
2023
Process (nm)
12
Form factors
pcie
VRAM (GB)
12
Memory type
gddr6
Memory bus (bit)
192
Memory bandwidth (GB/s)
288
Bandwidth basis
Derived and confirmed by the vendor table: 12 GB GDDR6 on a 192-bit bus at 12 GT/sec = 288 GB/s. The vendor states 288 GB/s directly for n150 and 576 GB/s for n300 (two ASICs), so this is not an independent derivation.
On-chip cache
[object Object]
Peak FLOPS
precisionfp16tflops74denseyesvendor_claimyessource_idasic-tenstorrent-wormhole-docsbasisvendor-spec-sheetbasis_detailTranscribed from the vendor's own fp16 for Tenstorrent Wormhole Tensix (n150 / n300) (source of record: 'Wormhole PCIe Cards (n150d/n150s/n300d/n300s) product guide', kind: spec-sheet). Recorded dense:true as printed.precisionfp8tflops262denseyesvendor_claimyessource_idasic-tenstorrent-wormhole-docsbasisvendor-spec-sheetbasis_detailTranscribed from the vendor's own fp8 for Tenstorrent Wormhole Tensix (n150 / n300) (source of record: 'Wormhole PCIe Cards (n150d/n150s/n300d/n300s) product guide', kind: spec-sheet). Recorded dense:true as printed.precisionbf16tflops74denseyesvendor_claimnosource_idasic-tenstorrent-wormhole-docsbasisvendor-spec-sheetbasis_detailSecond-hand figure, not a first-party spec: the source of record is 'Wormhole PCIe Cards (n150d/n150s/n300d/n300s) product guide' (kind: spec-sheet). Recorded dense:true as printed.
TDP (W)
160
Unified memory
no
Consumer part
no
notes
Per n150 card (1 Wormhole ASIC, 72 enabled Tensix cores of 80 built, 108 MB SRAM, 12 GB GDDR6, 160 W, PCIe 4.0 x16). The BF16 row is the same number as FP16 because the vendor's precision table lists BFLOAT16 alongside FP16 without a separate throughput figure; flagged vendor_claim false for that reason. n300 is the same silicon doubled: 2 ASICs, 128 Tensix cores, 192 MB SRAM, 24 GB GDDR6, 576 GB/s, 131 TFLOPS FP16 / 466 FP8, 300 W. ARCHITECTURAL POINT: Wormhole is a small-SRAM, modest-bandwidth design (288 GB/s is roughly a fifth of an H100's) with 108 MB of on-die SRAM acting as a L2-like feed tier, and the architecture pushes data movement onto a network-on-chip with dedicated RISC-V control cores rather than relying on caches. [CORRECTED 2026-10-05 - see the ROOFLINE FRAMING section below. The original sentence here read 'it is decisively bandwidth-bound at batch 1 (257 FLOP/byte FP16 does not save it; 288 GB/s is the wall)', which is a batch-1 GEMM roofline applied to a RISC-V NoC accelerator and is a category error even though both numbers are arithmetically right.] What is actually true on this part, stated without roofline vocabulary: batch-1 decode streams the whole weight set across the 288 GB/s GDDR6 interface once per token, so throughput at batch 1 is set by that streaming cost and the 74 TFLOPS FP16 peak is nowhere near reachable at that batch size. That is a statement about GDDR6 traffic, and it stands on its own without an arithmetic-intensity number attached. Precision support is unusually broad for an inference part: FP8/FP16/BF16, BLOCKFP2/BLOCKFP4/BLOCKFP8, INT8/INT32, UINT8, TF32 - the block-float formats are the ones with native hardware paths. Scale-up is 2x QSFP-DD 200G plus Warp 100 in-card bridges, daisy-chaining into Galaxy racks. Consumer: the n150 is sold as a retail developer card at ~USD 1000-1100, so while it is not a consumer GPU it is sold into the desktop channel. OPEN-SOURCE SOFTWARE STACK: Tenstorrent's software stack is fully open-source (GitHub: tenstorrent/tt-metal, tenstorrent/tt-forge). TT-Forge is the top-level MLIR-based compiler connecting to OpenXLA, MLIR, ONNX, TVM, PyTorch, and TensorFlow. TT-NN is the operator library. TT-Metalium is the low-level kernel programming model. 800+ model variants tested in CI. This is a key differentiator: unlike proprietary stacks (CUDA, ROCm), the entire stack is auditable and modifiable. ON-CHIP CACHE ROW ADDED 2026-10-05 (schema authority pass, agent w5-schema) - corrected to 2026-10-05 below. `onchip_cache` is new in schemas/accelerator.schema.json. This figure was already stated in these notes and was unqueryable; the schema field exists so it can be filtered and compared instead of grepped. The value was verified against the first-party source named in `source_note`, and the trap that source contains is recorded there too. NO new number was introduced: every value below was already present in this record's own prose. === ROOFLINE FRAMING CORRECTED 2026-10-05 (non-GPU classification audit, w7-nonxpu-computers). === THIS RECORD WAS THE THIRD NAMED CASE IN THE TASK BRIEF AND IT IS THE SUBTLEST, because unlike cerebras and groq NO FIELD IS WRONG HERE. vram_gb 12, memory_type gddr6, memory_bus_bit 192 and memory_bandwidth_gbps 288 are all true and all GPU-shaped for the right reason: this part genuinely HAS an off-package GDDR6 tier behind a real memory bus, so every field of that name holds the quantity it means everywhere else in the repo. The error was entirely in the INTERPRETATION, and the specific sentence has been corrected in place above. WHAT WAS WRONG: 'it is decisively bandwidth-bound at batch 1 (257 FLOP/byte FP16 does not save it; 288 GB/s is the wall)'. Three problems, in increasing order of severity. (1) '257 FLOP/byte' is a machine's BALANCE POINT - the arithmetic intensity at which compute and bandwidth costs are equal - and it is a property of the RATIO of two numbers, not a measurement of anything this part does. It is a legitimate concept on a GPU, where the question 'is this workload compute-bound or bandwidth-bound at this batch size' has a well-defined answer from a roofline. On a Tensix part the question is malformed for a reason the field values themselves show: this is a RISC-V NoC accelerator with 72 enabled Tensix cores of 80 built, dedicated RISC-V control cores, and 108 MB of on-die SRAM acting as an L2-like feed tier. Data placement is a COMPILED SCHEDULE, decided by TT-Forge ahead of the run, not something that emerges from a per-kernel intensity at a given batch size. There is no batch size at which 'the balance point' tells you what happens, because the compiler has already decided what happens. (2) Calling the part 'decisively bandwidth-bound' imports a GPU regime in which being bandwidth-bound is a temporary, batch-addressable condition that better kernels or a larger batch fix. Here the constraint is architectural and permanent: 288 GB/s of GDDR6 is a cost-CHOICE, paired deliberately with low TDP (160 W) and open-source software rather than with HBM, so it will never be fixed by batching. 'Decisively' is exactly the word that hides this. (3) The framing invites a comparison this part cannot support. Against an H100 the correct comparison is per-watt and per-dollar at a fixed latency target - which is why this record's own price and power figures are the interesting ones - not roofline position. WHAT REPLACES IT, and it is a stronger claim than the one it replaces: the 108 MB SRAM feed tier is the real architectural fact and it is what makes batch-1 decode on this part less hopeless than 288 GB/s suggests. Working-set-resident weights are served from on-chip SRAM; only the remainder crosses GDDR6. A reader who wants the roofline for this part should note that the roofline's denominator is not a single tier, which is why no arithmetic-intensity number is asserted anywhere in this record. NOTE FOR CONTRAST, because the sibling record got this right: this record's flops[] rows carry basis_detail strings of the form 'Recorded dense:true as printed' with no intensity or roofline commentary, while a previous pass had appended GPU reasoning to its prose. The reasoning has now been removed from the prose too. THIS RECORD'S FIELDS ARE ALL LEFT EXACTLY AS THEY WERE. No figure was changed, because no figure was wrong - which is the correct outcome of an audit finding an error in interpretation only, and worth stating because the temptation on finding a category error is to change a number, and doing so would have introduced the error rather than removed it. === RE-VERIFIED 2026-10-08 (w8-reverify) — THE WAVE-7 JUDGMENT TO CHANGE NO NUMBER IS CORRECT. === The wave-7 non-GPU audit reported deliberately changing no figure on this record, on the grounds that every field is correct and any change would introduce an error. That judgment was re-tested against the live vendor card-comparison table at docs.tenstorrent.com (fetched 2026-10-08), figure by figure: vram_gb 12 / gddr6 / memory_bus_bit 192 / memory_bandwidth_gbps 288 / tdp_w 160 / fp16 74 / fp8 262 / bf16 74 / sram_mb 108 / process_nm 12 / interconnect pcie-gen4 + warp100 + qsfp-dd. Every one matches the vendor table exactly, and the two arithmetical fields close on the vendor's own inputs: 192-bit x 12 GT/s / 8 = 288 GB/s. Two consequences recorded rather than quietly kept: (1) the wave-7 correction of the roofline PROSE was the right kind of fix - it changed an interpretation, not a number, and the number it interpreted was right; (2) the sram_mb 108-vs-120 conflict this record already flags is now confirmed live as a two-page disagreement inside Tenstorrent's own docs (the card table says 108 MB, the overview sentence on the same page says 120 MB / 1.5 MB per core), so leaving 108 in place with the conflict documented is still the correct handling and not an oversight. NO FIELD CHANGED VALUE.

Notes

Per n150 card (1 Wormhole ASIC, 72 enabled Tensix cores of 80 built, 108 MB SRAM, 12 GB GDDR6, 160 W, PCIe 4.0 x16). The BF16 row is the same number as FP16 because the vendor's precision table lists BFLOAT16 alongside FP16 without a separate throughput figure; flagged vendor_claim false for that reason. n300 is the same silicon doubled: 2 ASICs, 128 Tensix cores, 192 MB SRAM, 24 GB GDDR6, 576 GB/s, 131 TFLOPS FP16 / 466 FP8, 300 W. ARCHITECTURAL POINT: Wormhole is a small-SRAM, modest-bandwidth design (288 GB/s is roughly a fifth of an H100's) with 108 MB of on-die SRAM acting as a L2-like feed tier, and the architecture pushes data movement onto a network-on-chip with dedicated RISC-V control cores rather than relying on caches. [CORRECTED 2026-10-05 - see the ROOFLINE FRAMING section below. The original sentence here read 'it is decisively bandwidth-bound at batch 1 (257 FLOP/byte FP16 does not save it; 288 GB/s is the wall)', which is a batch-1 GEMM roofline applied to a RISC-V NoC accelerator and is a category error even though both numbers are arithmetically right.] What is actually true on this part, stated without roofline vocabulary: batch-1 decode streams the whole weight set across the 288 GB/s GDDR6 interface once per token, so throughput at batch 1 is set by that streaming cost and the 74 TFLOPS FP16 peak is nowhere near reachable at that batch size. That is a statement about GDDR6 traffic, and it stands on its own without an arithmetic-intensity number attached. Precision support is unusually broad for an inference part: FP8/FP16/BF16, BLOCKFP2/BLOCKFP4/BLOCKFP8, INT8/INT32, UINT8, TF32 - the block-float formats are the ones with native hardware paths. Scale-up is 2x QSFP-DD 200G plus Warp 100 in-card bridges, daisy-chaining into Galaxy racks. Consumer: the n150 is sold as a retail developer card at ~USD 1000-1100, so while it is not a consumer GPU it is sold into the desktop channel. OPEN-SOURCE SOFTWARE STACK: Tenstorrent's software stack is fully open-source (GitHub: tenstorrent/tt-metal, tenstorrent/tt-forge). TT-Forge is the top-level MLIR-based compiler connecting to OpenXLA, MLIR, ONNX, TVM, PyTorch, and TensorFlow. TT-NN is the operator library. TT-Metalium is the low-level kernel programming model. 800+ model variants tested in CI. This is a key differentiator: unlike proprietary stacks (CUDA, ROCm), the entire stack is auditable and modifiable.

ON-CHIP CACHE ROW ADDED 2026-10-05 (schema authority pass, agent w5-schema) - corrected to 2026-10-05 below. `onchip_cache` is new in schemas/accelerator.schema.json. This figure was already stated in these notes and was unqueryable; the schema field exists so it can be filtered and compared instead of grepped. The value was verified against the first-party source named in `source_note`, and the trap that source contains is recorded there too. NO new number was introduced: every value below was already present in this record's own prose.

=== ROOFLINE FRAMING CORRECTED 2026-10-05 (non-GPU classification audit, w7-nonxpu-computers). === THIS RECORD WAS THE THIRD NAMED CASE IN THE TASK BRIEF AND IT IS THE SUBTLEST, because unlike cerebras and groq NO FIELD IS WRONG HERE. vram_gb 12, memory_type gddr6, memory_bus_bit 192 and memory_bandwidth_gbps 288 are all true and all GPU-shaped for the right reason: this part genuinely HAS an off-package GDDR6 tier behind a real memory bus, so every field of that name holds the quantity it means everywhere else in the repo. The error was entirely in the INTERPRETATION, and the specific sentence has been corrected in place above. WHAT WAS WRONG: 'it is decisively bandwidth-bound at batch 1 (257 FLOP/byte FP16 does not save it; 288 GB/s is the wall)'. Three problems, in increasing order of severity. (1) '257 FLOP/byte' is a machine's BALANCE POINT - the arithmetic intensity at which compute and bandwidth costs are equal - and it is a property of the RATIO of two numbers, not a measurement of anything this part does. It is a legitimate concept on a GPU, where the question 'is this workload compute-bound or bandwidth-bound at this batch size' has a well-defined answer from a roofline. On a Tensix part the question is malformed for a reason the field values themselves show: this is a RISC-V NoC accelerator with 72 enabled Tensix cores of 80 built, dedicated RISC-V control cores, and 108 MB of on-die SRAM acting as an L2-like feed tier. Data placement is a COMPILED SCHEDULE, decided by TT-Forge ahead of the run, not something that emerges from a per-kernel intensity at a given batch size. There is no batch size at which 'the balance point' tells you what happens, because the compiler has already decided what happens. (2) Calling the part 'decisively bandwidth-bound' imports a GPU regime in which being bandwidth-bound is a temporary, batch-addressable condition that better kernels or a larger batch fix. Here the constraint is architectural and permanent: 288 GB/s of GDDR6 is a cost-CHOICE, paired deliberately with low TDP (160 W) and open-source software rather than with HBM, so it will never be fixed by batching. 'Decisively' is exactly the word that hides this. (3) The framing invites a comparison this part cannot support. Against an H100 the correct comparison is per-watt and per-dollar at a fixed latency target - which is why this record's own price and power figures are the interesting ones - not roofline position. WHAT REPLACES IT, and it is a stronger claim than the one it replaces: the 108 MB SRAM feed tier is the real architectural fact and it is what makes batch-1 decode on this part less hopeless than 288 GB/s suggests. Working-set-resident weights are served from on-chip SRAM; only the remainder crosses GDDR6. A reader who wants the roofline for this part should note that the roofline's denominator is not a single tier, which is why no arithmetic-intensity number is asserted anywhere in this record. NOTE FOR CONTRAST, because the sibling record got this right: this record's flops[] rows carry basis_detail strings of the form 'Recorded dense:true as printed' with no intensity or roofline commentary, while a previous pass had appended GPU reasoning to its prose. The reasoning has now been removed from the prose too. THIS RECORD'S FIELDS ARE ALL LEFT EXACTLY AS THEY WERE. No figure was changed, because no figure was wrong - which is the correct outcome of an audit finding an error in interpretation only, and worth stating because the temptation on finding a category error is to change a number, and doing so would have introduced the error rather than removed it.

=== RE-VERIFIED 2026-10-08 (w8-reverify) — THE WAVE-7 JUDGMENT TO CHANGE NO NUMBER IS CORRECT. === The wave-7 non-GPU audit reported deliberately changing no figure on this record, on the grounds that every field is correct and any change would introduce an error. That judgment was re-tested against the live vendor card-comparison table at docs.tenstorrent.com (fetched 2026-10-08), figure by figure: vram_gb 12 / gddr6 / memory_bus_bit 192 / memory_bandwidth_gbps 288 / tdp_w 160 / fp16 74 / fp8 262 / bf16 74 / sram_mb 108 / process_nm 12 / interconnect pcie-gen4 + warp100 + qsfp-dd. Every one matches the vendor table exactly, and the two arithmetical fields close on the vendor's own inputs: 192-bit x 12 GT/s / 8 = 288 GB/s. Two consequences recorded rather than quietly kept: (1) the wave-7 correction of the roofline PROSE was the right kind of fix - it changed an interpretation, not a number, and the number it interpreted was right; (2) the sram_mb 108-vs-120 conflict this record already flags is now confirmed live as a two-page disagreement inside Tenstorrent's own docs (the card table says 108 MB, the overview sentence on the same page says 120 MB / 1.5 MB per core), so leaving 108 in place with the conflict documented is still the correct handling and not an oversight. NO FIELD CHANGED VALUE.

Cross-references