NVIDIA B200
Across 2,515 compute runs, every output element stayed inside its proven error bound and every repeat matched the first run bit for bit. All 38,117,834,752 memory words read back correctly. Under sustained load, 1,096,120 more results came back bit-identical. The self-tests caught 351 of the 351 faults planted to prove the checks work.
Every number on this page is read from the result files listed at the bottom, written in the OCP Test and Validation format. New to this? Start with what a silent error is and how a chip is tested here.
Error budget used
Floating-point answers are never exact, so each check allows a rounding error and proves how large it can honestly be. The red line is that proven limit. A bar shows the largest error this chip produced, as a share of the limit, across every run. Anything past the line would be a wrong answer.
Checked exactly, where any difference at all fails: FP8 matrix multiply, FP8 fast-accumulation matrix multiply, INT8 matrix multiply, FP8 data patterns, FP8 fast-accumulation data patterns, INT8 data patterns. Every one matched.
Bars close to the line at FP16 and BF16 are expected: there the limit is dominated by the single rounding of the output, so a correct chip has almost nothing to spare. A bar past the line is a failed run.
Every planted fault was caught
A clean result is only worth something if the tester would have seen a fault. So next to every clean run, the self-test plants faults on purpose, including the patterns NVIDIA measured at gate level, and every one must be caught. How the self-test works.
Compute probe
Matrix multiplies at several shapes and precisions. Every output element is checked against an exact or float64 reference under a proven rounding-error bound, and every run is compared bit for bit with the first run.
Tool v0.3.4, PyTorch 2.8.0+cu128, 19 October 2026. Result file · Self-test file
Error counters: error counters quiet.
Show all 18 steps from the result file
| Step in the result file | Size | Worst error / bound | Verdict |
|---|---|---|---|
gemm_fp32_1024x1024x1024 | 50 runs | 0.005 | no-silent-errors |
gemm_fp16_1024x1024x1024 | 50 runs | 0.207 | no-silent-errors |
gemm_bf16_1024x1024x1024 | 50 runs | 0.657 | no-silent-errors |
gemm_int8_1024x1024x1024 | 50 runs | exact | no-silent-errors |
gemm_fp8_1024x1024x1024 | 50 runs | exact | no-silent-errors |
gemm_fp8fast_1024x1024x1024 | 50 runs | exact | no-silent-errors |
gemm_fp32_4096x4096x4096 | 50 runs | 0.001 | no-silent-errors |
gemm_fp16_4096x4096x4096 | 50 runs | 0.032 | no-silent-errors |
gemm_bf16_4096x4096x4096 | 50 runs | 0.203 | no-silent-errors |
gemm_int8_4096x4096x4096 | 50 runs | exact | no-silent-errors |
gemm_fp8_4096x4096x4096 | 50 runs | exact | no-silent-errors |
gemm_fp8fast_4096x4096x4096 | 50 runs | exact | no-silent-errors |
gemm_fp32_32x4096x11008 | 50 runs | under 0.001 | no-silent-errors |
gemm_fp16_32x4096x11008 | 50 runs | 0.031 | no-silent-errors |
gemm_bf16_32x4096x11008 | 50 runs | 0.200 | no-silent-errors |
gemm_int8_32x4096x11008 | 50 runs | exact | no-silent-errors |
gemm_fp8_32x4096x11008 | 50 runs | exact | no-silent-errors |
gemm_fp8fast_32x4096x11008 | 50 runs | exact | no-silent-errors |
Transformer kernel probe
Softmax, layer norm, GELU, rotary embeddings and fused attention, each checked against a float64 reference under its own proven bound and against the first run bit for bit.
Tool v0.2.3, PyTorch 2.8.0+cu128, 19 October 2026. Result file · Self-test file
Error counters: error counters quiet.
Show all 15 steps from the result file
| Step in the result file | Size | Worst error / bound | Verdict |
|---|---|---|---|
softmax_fp32 | 25 runs | 0.005 | no-silent-errors |
softmax_fp16 | 25 runs | 0.999 | no-silent-errors |
softmax_bf16 | 25 runs | 0.936 | no-silent-errors |
layernorm_fp32 | 25 runs | under 0.001 | no-silent-errors |
layernorm_fp16 | 25 runs | 0.718 | no-silent-errors |
layernorm_bf16 | 25 runs | 0.943 | no-silent-errors |
gelu_fp32 | 25 runs | 0.162 | no-silent-errors |
gelu_fp16 | 25 runs | 0.992 | no-silent-errors |
gelu_bf16 | 25 runs | 0.975 | no-silent-errors |
rope_fp32 | 25 runs | 0.122 | no-silent-errors |
rope_fp16 | 25 runs | 0.807 | no-silent-errors |
rope_bf16 | 25 runs | 0.824 | no-silent-errors |
attention_fp32 | 25 runs | 0.001 | no-silent-errors |
attention_fp16 | 25 runs | 0.112 | no-silent-errors |
attention_bf16 | 25 runs | 0.189 | no-silent-errors |
Checksum probe
A matrix multiply protected by row and column checksums (Huang and Abraham) with proven thresholds, so a wrong element is located to its exact row and column.
Tool v0.1.0, PyTorch 2.8.0+cu128, 19 October 2026. Result file · Self-test file
Error counters: error counters quiet.
Show all 6 steps from the result file
| Step in the result file | Size | Worst error / bound | Verdict |
|---|---|---|---|
abft_fp32_1024x1024x1024 | 20 runs | no-silent-errors | |
abft_fp16_1024x1024x1024 | 20 runs | no-silent-errors | |
abft_bf16_1024x1024x1024 | 20 runs | no-silent-errors | |
abft_fp32_32x4096x11008 | 20 runs | no-silent-errors | |
abft_fp16_32x4096x11008 | 20 runs | no-silent-errors | |
abft_bf16_32x4096x11008 | 20 runs | no-silent-errors |
Data pattern probe
Inputs built to reach particular bits (wide exponents, long mantissas, cancellation, alternating signs, sparse inputs, subnormals and values near the top of the range), fed through the same matrix multiply checks.
Tool v0.1.4, PyTorch 2.8.0+cu128, 19 October 2026. Result file · Self-test file
Error counters: error counters quiet.
Show all 56 steps from the result file
| Step in the result file | Size | Worst error / bound | Verdict |
|---|---|---|---|
gemm_fp32_wide_1024x1024x1024 | 20 runs | 0.014 | no-silent-errors |
gemm_fp32_mantissa_1024x1024x1024 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp32_cancel_1024x1024x1024 | 20 runs | 0.003 | no-silent-errors |
gemm_fp32_alternate_1024x1024x1024 | 20 runs | 0.039 | no-silent-errors |
gemm_fp32_sparse_1024x1024x1024 | 20 runs | 0.004 | no-silent-errors |
gemm_fp32_subnormal_1024x1024x1024 | 20 runs | 0.004 | no-silent-errors |
gemm_fp32_near_max_1024x1024x1024 | 20 runs | 0.003 | no-silent-errors |
gemm_fp16_wide_1024x1024x1024 | 20 runs | 0.513 | no-silent-errors |
gemm_fp16_mantissa_1024x1024x1024 | 20 runs | 0.281 | no-silent-errors |
gemm_fp16_cancel_1024x1024x1024 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp16_alternate_1024x1024x1024 | 20 runs | 0.618 | no-silent-errors |
gemm_fp16_sparse_1024x1024x1024 | 20 runs | 0.659 | no-silent-errors |
gemm_fp16_subnormal_1024x1024x1024 | 20 runs | 0.145 | no-silent-errors |
gemm_fp16_near_max_1024x1024x1024 | 20 runs | 0.180 | no-silent-errors |
gemm_bf16_wide_1024x1024x1024 | 20 runs | 0.934 | no-silent-errors |
gemm_bf16_mantissa_1024x1024x1024 | 20 runs | 0.751 | no-silent-errors |
gemm_bf16_cancel_1024x1024x1024 | 20 runs | under 0.001 | no-silent-errors |
gemm_bf16_alternate_1024x1024x1024 | 20 runs | 0.863 | no-silent-errors |
gemm_bf16_sparse_1024x1024x1024 | 20 runs | 0.935 | no-silent-errors |
gemm_bf16_subnormal_1024x1024x1024 | 20 runs | 0.569 | no-silent-errors |
gemm_bf16_near_max_1024x1024x1024 | 20 runs | 0.634 | no-silent-errors |
gemm_int8_alternate_1024x1024x1024 | 20 runs | exact | no-silent-errors |
gemm_int8_sparse_1024x1024x1024 | 20 runs | exact | no-silent-errors |
gemm_int8_extremes_1024x1024x1024 | 20 runs | exact | no-silent-errors |
gemm_fp8_alternate_1024x1024x1024 | 20 runs | exact | no-silent-errors |
gemm_fp8_sparse_1024x1024x1024 | 20 runs | exact | no-silent-errors |
gemm_fp8fast_alternate_1024x1024x1024 | 20 runs | exact | no-silent-errors |
gemm_fp8fast_sparse_1024x1024x1024 | 20 runs | exact | no-silent-errors |
gemm_fp32_wide_32x4096x11008 | 20 runs | 0.001 | no-silent-errors |
gemm_fp32_mantissa_32x4096x11008 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp32_cancel_32x4096x11008 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp32_alternate_32x4096x11008 | 20 runs | 0.002 | no-silent-errors |
gemm_fp32_sparse_32x4096x11008 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp32_subnormal_32x4096x11008 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp32_near_max_32x4096x11008 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp16_wide_32x4096x11008 | 20 runs | 0.126 | no-silent-errors |
gemm_fp16_mantissa_32x4096x11008 | 20 runs | 0.049 | no-silent-errors |
gemm_fp16_cancel_32x4096x11008 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp16_alternate_32x4096x11008 | 20 runs | 0.318 | no-silent-errors |
gemm_fp16_sparse_32x4096x11008 | 20 runs | 0.260 | no-silent-errors |
gemm_fp16_subnormal_32x4096x11008 | 20 runs | 0.021 | no-silent-errors |
gemm_fp16_near_max_32x4096x11008 | 20 runs | 0.027 | no-silent-errors |
gemm_bf16_wide_32x4096x11008 | 20 runs | 0.764 | no-silent-errors |
gemm_bf16_mantissa_32x4096x11008 | 20 runs | 0.286 | no-silent-errors |
gemm_bf16_cancel_32x4096x11008 | 20 runs | under 0.001 | no-silent-errors |
gemm_bf16_alternate_32x4096x11008 | 20 runs | 0.722 | no-silent-errors |
gemm_bf16_sparse_32x4096x11008 | 20 runs | 0.730 | no-silent-errors |
gemm_bf16_subnormal_32x4096x11008 | 20 runs | 0.167 | no-silent-errors |
gemm_bf16_near_max_32x4096x11008 | 20 runs | 0.181 | no-silent-errors |
gemm_int8_alternate_32x4096x11008 | 20 runs | exact | no-silent-errors |
gemm_int8_sparse_32x4096x11008 | 20 runs | exact | no-silent-errors |
gemm_int8_extremes_32x4096x11008 | 20 runs | exact | no-silent-errors |
gemm_fp8_alternate_32x4096x11008 | 20 runs | exact | no-silent-errors |
gemm_fp8_sparse_32x4096x11008 | 20 runs | exact | no-silent-errors |
gemm_fp8fast_alternate_32x4096x11008 | 20 runs | exact | no-silent-errors |
gemm_fp8fast_sparse_32x4096x11008 | 20 runs | exact | no-silent-errors |
Memory probe
Most of the device memory written with six patterns, left to dwell, and read back word by word.
Tool v0.1.1, 19 October 2026. Result file · Self-test file
Error counters: error counters quiet.
Show all 1 steps from the result file
| Step in the result file | Size | Worst error / bound | Verdict |
|---|---|---|---|
memory_sweep_pass1 | 142.00 GiB | no-memory-errors |
Hours under load probe
One fixed matrix multiply run back to back for as long as asked, one precision at a time, every result compared bit for bit with a first result that was checked against the proven bound. Each one-minute window records the chip's temperature, clocks, power and throttling reasons beside its verdict.
Tool v0.1.0, PyTorch 2.8.0+cu128, 19 October 2026. Result file
Error counters: error counters quiet.
Show all 16 steps from the result file
| Step in the result file | Size | Worst error / bound | Verdict |
|---|---|---|---|
soak_setup_bf16 | 3 repeats | 0.204 | first-result-verified |
soak_setup_fp16 | 3 repeats | 0.032 | first-result-verified |
soak_setup_fp32 | 3 repeats | 0.002 | first-result-verified |
soak_setup_int8 | 3 repeats | exact | first-result-verified |
soak_setup_fp8 | 3 repeats | exact | first-result-verified |
soak_window_0001_bf16 | 116,290 runs | no-silent-errors | |
soak_window_0002_fp16 | 113,835 runs | no-silent-errors | |
soak_window_0003_fp32 | 7,035 runs | no-silent-errors | |
soak_window_0004_int8 | 159,411 runs | no-silent-errors | |
soak_window_0005_fp8 | 156,916 runs | no-silent-errors | |
soak_window_0006_bf16 | 117,781 runs | no-silent-errors | |
soak_window_0007_fp16 | 112,111 runs | no-silent-errors | |
soak_window_0008_fp32 | 7,041 runs | no-silent-errors | |
soak_window_0009_int8 | 156,038 runs | no-silent-errors | |
soak_window_0010_fp8 | 149,662 runs | no-silent-errors | |
soak_summary | 1,096,120 runs | no-silent-errors |
Setup and files
The chip
The software
The test
NVIDIA driver 580.126.09, read with nvidia-smi on the pod after the run; the files were written by v0.4.2, which did not record the driver (v0.4.3 and later do). Power limit 1000 W, 183,359 MiB total memory, as nvidia-smi reported them.
Result files
- b200_abft.jsonl result
- b200_abft_inject.jsonl self-test
- b200_clean.jsonl result
- b200_inject.jsonl self-test
- b200_kernels.jsonl result
- b200_kernels_inject.jsonl self-test
- b200_memcheck.jsonl result
- b200_memcheck_inject.jsonl self-test
- b200_patterns.jsonl result
- b200_patterns_inject.jsonl self-test
- b200_soak.jsonl result
What this result shows
These numbers describe one unit of this chip, tested on the dates above. A clean result means no silent error showed up in these runs under these checks. It cannot rule out a fault that appears under other workloads, temperatures or ages, and another unit of the same model can behave differently. What a PASS means explains the limits in full.
Run it on your chip
The same tests on your own hardware, in one command. Every result file it writes can be published here as a new row.
pip install ai-chip-integrity chip-integrity run --name nvidia-b200
Cite the tool as: Yasha Khandelwal, ai-chip-integrity, version 0.4.3, 2026, https://doi.org/10.5281/zenodo.23393790
Other chips measured
Apple GPU (MPS) arm64
Tested 10 October 2026. 1,785 compute runs, 0 silent faults, 264 of 264 planted faults caught.
NVIDIA A100-SXM4-80GB
Tested 7 October 2026. 600 compute runs, 0 silent faults, 90 of 90 planted faults caught.
NVIDIA GeForce RTX 4090
Tested 11 October 2026. 2,515 compute runs, 0 silent faults, 351 of 351 planted faults caught.
NVIDIA H100 80GB HBM3
Tested 10 October 2026. 2,515 compute runs, 0 silent faults, 351 of 351 planted faults caught.
NVIDIA H200
Tested 8 October 2026. 600 compute runs, 0 silent faults, 90 of 90 planted faults caught.
NVIDIA RTX A5000
Tested 11 October 2026. 2,055 compute runs, 0 silent faults, 297 of 297 planted faults caught.