AMD Radeon Pro 5500M (MPS) x86_64
Across 1,190 compute runs, every repeat matched the first run bit for bit, and 140 results sat outside their proven bound while agreeing with every repeat, which is either a faulty unit or a software stack outside the arithmetic model; the step tables below say which steps, and the note under them what was measured about the cause. All 1,006,632,960 memory words read back correctly. The self-tests caught 186 of the 186 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.
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.2.2, 21 October 2026. Result file · Self-test file
Error counters: no error counters.
Show all 18 steps from the result file
| Step in the result file | Size | Worst error / bound | Verdict |
|---|---|---|---|
gemm_fp32_1024x1024x1024 | 50 runs | 0.001 | no-silent-errors |
gemm_fp16_1024x1024x1024 | 50 runs | 0.433 | no-silent-errors |
gemm_bf16_1024x1024x1024 | not supported on this device | ||
gemm_int8_1024x1024x1024 | not supported on this device | ||
gemm_fp8_1024x1024x1024 | not supported on this device | ||
gemm_fp8fast_1024x1024x1024 | not supported on this device | ||
gemm_fp32_4096x4096x4096 | 50 runs | under 0.001 | no-silent-errors |
gemm_fp16_4096x4096x4096 | 50 runs | 0.071 | no-silent-errors |
gemm_bf16_4096x4096x4096 | not supported on this device | ||
gemm_int8_4096x4096x4096 | not supported on this device | ||
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.056 | no-silent-errors |
gemm_bf16_32x4096x11008 | not supported on this device | ||
gemm_int8_32x4096x11008 | not supported on this device | ||
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.3, PyTorch 2.2.2, 21 October 2026. Result file · Self-test file
Error counters: no error counters.
Show all 15 steps from the result file
| Step in the result file | Size | Worst error / bound | Verdict |
|---|---|---|---|
softmax_fp32 | 25 runs | 0.010 | no-silent-errors |
softmax_fp16 | 25 runs | 0.999 | no-silent-errors |
softmax_bf16 | not supported on this device | ||
layernorm_fp32 | 25 runs | under 0.001 | no-silent-errors |
layernorm_fp16 | 25 runs | 1.853 | outside-error-bound |
layernorm_bf16 | not supported on this device | ||
gelu_fp32 | 25 runs | 0.228 | no-silent-errors |
gelu_fp16 | 25 runs | 2.053 | outside-error-bound |
gelu_bf16 | not supported on this device | ||
rope_fp32 | 25 runs | 120.597 | outside-error-bound |
rope_fp16 | 25 runs | 7.595 | outside-error-bound |
rope_bf16 | not supported on this device | ||
attention_fp32 | 25 runs | 0.001 | no-silent-errors |
attention_fp16 | 25 runs | 0.575 | no-silent-errors |
attention_bf16 | not supported on this device |
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.2.2, 21 October 2026. Result file · Self-test file
Error counters: no error counters.
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 | not supported on this device | ||
abft_fp32_32x4096x11008 | 20 runs | no-silent-errors | |
abft_fp16_32x4096x11008 | 20 runs | no-silent-errors | |
abft_bf16_32x4096x11008 | not supported on this device |
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.2.2, 21 October 2026. Result file · Self-test file
Error counters: no error counters.
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.004 | 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.011 | no-silent-errors |
gemm_fp32_sparse_1024x1024x1024 | 20 runs | 0.001 | no-silent-errors |
gemm_fp32_subnormal_1024x1024x1024 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp32_near_max_1024x1024x1024 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp16_wide_1024x1024x1024 | 20 runs | 1.152 | outside-error-bound |
gemm_fp16_mantissa_1024x1024x1024 | 20 runs | 0.471 | no-silent-errors |
gemm_fp16_cancel_1024x1024x1024 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp16_alternate_1024x1024x1024 | 20 runs | 0.791 | no-silent-errors |
gemm_fp16_sparse_1024x1024x1024 | 20 runs | 1.567 | outside-error-bound |
gemm_fp16_subnormal_1024x1024x1024 | 20 runs | 0.323 | no-silent-errors |
gemm_fp16_near_max_1024x1024x1024 | 20 runs | 0.309 | no-silent-errors |
gemm_bf16_wide_1024x1024x1024 | not supported on this device | ||
gemm_bf16_mantissa_1024x1024x1024 | not supported on this device | ||
gemm_bf16_cancel_1024x1024x1024 | not supported on this device | ||
gemm_bf16_alternate_1024x1024x1024 | not supported on this device | ||
gemm_bf16_sparse_1024x1024x1024 | not supported on this device | ||
gemm_bf16_subnormal_1024x1024x1024 | not supported on this device | ||
gemm_bf16_near_max_1024x1024x1024 | not supported on this device | ||
gemm_int8_alternate_1024x1024x1024 | not supported on this device | ||
gemm_int8_sparse_1024x1024x1024 | not supported on this device | ||
gemm_int8_extremes_1024x1024x1024 | not supported on this device | ||
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 | under 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.001 | 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.179 | no-silent-errors |
gemm_fp16_mantissa_32x4096x11008 | 20 runs | 0.072 | no-silent-errors |
gemm_fp16_cancel_32x4096x11008 | 20 runs | under 0.001 | no-silent-errors |
gemm_fp16_alternate_32x4096x11008 | 20 runs | 0.336 | no-silent-errors |
gemm_fp16_sparse_32x4096x11008 | 20 runs | 0.331 | no-silent-errors |
gemm_fp16_subnormal_32x4096x11008 | 20 runs | 0.042 | no-silent-errors |
gemm_fp16_near_max_32x4096x11008 | 20 runs | 0.040 | no-silent-errors |
gemm_bf16_wide_32x4096x11008 | not supported on this device | ||
gemm_bf16_mantissa_32x4096x11008 | not supported on this device | ||
gemm_bf16_cancel_32x4096x11008 | not supported on this device | ||
gemm_bf16_alternate_32x4096x11008 | not supported on this device | ||
gemm_bf16_sparse_32x4096x11008 | not supported on this device | ||
gemm_bf16_subnormal_32x4096x11008 | not supported on this device | ||
gemm_bf16_near_max_32x4096x11008 | not supported on this device | ||
gemm_int8_alternate_32x4096x11008 | not supported on this device | ||
gemm_int8_sparse_32x4096x11008 | not supported on this device | ||
gemm_int8_extremes_32x4096x11008 | not supported on this device | ||
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.3, 21 October 2026. Result file · Self-test file
Error counters: no error counters.
Show all 1 steps from the result file
| Step in the result file | Size | Worst error / bound | Verdict |
|---|---|---|---|
memory_sweep_pass1 | 3.75 GiB | no-memory-errors |
Setup and files
The chip
The software
The test
The discrete GPU of a 2019 16-inch MacBook Pro (Intel Core i9-9980HK), driven through Apple's Metal Performance Shaders by PyTorch 2.2.2, the last PyTorch built for Intel Macs; 8 GB of GPU memory as system_profiler reports it. On this backend bf16, int8 and FP8 matrix multiplies do not exist and were skipped. The results outside the bound are all repeatable, and for RoPE the probe measured the backend's own sin and cos at 1.22e-4 absolute error against the model's 9.5e-7 allowance, so there the cause is the function library; see the finding on Metal through PyTorch 2.2.2 for what was measured about the other steps.
Result files
- radeon5500m_abft.jsonl result
- radeon5500m_abft_inject.jsonl self-test
- radeon5500m_clean.jsonl result
- radeon5500m_inject.jsonl self-test
- radeon5500m_kernels.jsonl result
- radeon5500m_kernels_inject.jsonl self-test
- radeon5500m_memcheck.jsonl result
- radeon5500m_memcheck_inject.jsonl self-test
- radeon5500m_patterns.jsonl result
- radeon5500m_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 amd-radeon-pro-5500m-mps-x86-64
Cite the tool as: Yasha Khandelwal, ai-chip-integrity, version 0.4.3, 2026, https://doi.org/10.5281/zenodo.23505677
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 B200
Tested 19 October 2026. 2,515 compute runs, 0 silent faults, 351 of 351 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.