NVIDIA RTX A5000
Across 2,055 compute runs, every output element stayed inside its proven error bound and every repeat matched the first run bit for bit. All 4,966,055,936 memory words read back correctly. The self-tests caught 297 of the 297 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: INT8 matrix multiply, 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.2, PyTorch 2.8.0+cu128, 11 October 2026. Result file · Self-test file
Error counters: ECC off, so the error counters cannot see memory errors.
Show all 18 steps from the result file
| Step in the result file | Size | Worst error / bound | Verdict |
|---|---|---|---|
gemm_fp32_1024x1024x1024 | 50 runs | 0.002 | 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 | not supported on this device | ||
gemm_fp8fast_1024x1024x1024 | not supported on this device | ||
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 | not supported on this device | ||
gemm_fp8fast_4096x4096x4096 | not supported on this device | ||
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 | not supported on this device | ||
gemm_fp8fast_32x4096x11008 | not supported on this device |
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.2, PyTorch 2.8.0+cu128, 11 October 2026. Result file · Self-test file
Error counters: ECC off, so the error counters cannot see memory errors.
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, 11 October 2026. Result file · Self-test file
Error counters: ECC off, so the error counters cannot see memory errors.
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.2, PyTorch 2.8.0+cu128, 11 October 2026. Result file · Self-test file
Error counters: ECC off, so the error counters cannot see memory errors.
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.009 | no-silent-errors |
gemm_fp32_mantissa_1024x1024x1024 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp32_cancel_1024x1024x1024 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp32_alternate_1024x1024x1024 | 20 runs | 0.020 | no-silent-errors |
gemm_fp32_sparse_1024x1024x1024 | 20 runs | 0.003 | no-silent-errors |
gemm_fp32_subnormal_1024x1024x1024 | 20 runs | 0.002 | no-silent-errors |
gemm_fp32_near_max_1024x1024x1024 | 20 runs | 0.002 | 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 | 0.001 | no-silent-errors |
gemm_fp16_alternate_1024x1024x1024 | 20 runs | 0.623 | 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 | not supported on this device | ||
gemm_fp8_sparse_1024x1024x1024 | not supported on this device | ||
gemm_fp8fast_alternate_1024x1024x1024 | not supported on this device | ||
gemm_fp8fast_sparse_1024x1024x1024 | not supported on this device | ||
gemm_fp32_wide_32x4096x11008 | 20 runs | 0.002 | 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.003 | 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.333 | 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.727 | 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 | not supported on this device | ||
gemm_fp8_sparse_32x4096x11008 | not supported on this device | ||
gemm_fp8fast_alternate_32x4096x11008 | not supported on this device | ||
gemm_fp8fast_sparse_32x4096x11008 | not supported on this device |
Memory probe
Most of the device memory written with six patterns, left to dwell, and read back word by word.
Tool v0.1.1, 11 October 2026. Result file · Self-test file
Error counters: ECC off, so the error counters cannot see memory errors.
Show all 1 steps from the result file
| Step in the result file | Size | Worst error / bound | Verdict |
|---|---|---|---|
memory_sweep_pass1 | 18.50 GiB | no-memory-errors |
Setup and files
The chip
The software
The test
Result files
- rtxa5000_abft.jsonl result
- rtxa5000_abft_inject.jsonl self-test
- rtxa5000_clean.jsonl result
- rtxa5000_inject.jsonl self-test
- rtxa5000_kernels.jsonl result
- rtxa5000_kernels_inject.jsonl self-test
- rtxa5000_memcheck.jsonl result
- rtxa5000_memcheck_inject.jsonl self-test
- rtxa5000_patterns.jsonl result
- rtxa5000_patterns_inject.jsonl self-test
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-rtx-a5000
Cite the tool as: Yasha Khandelwal, ai-chip-integrity, version 0.4.2, 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.