An original synthetic reproduction of SOL-ExecBench issue #25 on CPU and CUDA: identity-valued inputs hid six affine errors. Small elementwise perturbations exposed all six while preserving the copied expected-output control.
One synthetic CPU float32 case (4×64, seed 42): all six deliberately incorrect affine formulas were accepted with identity inputs, and none with varied inputs. The copied-reference control passed both. Original issue reported by zzw4257; Nodus CPU reproduction. No GPU performance or training benefit measured.
Key takeaways
- All six deliberately incorrect formulas passed with identity affine inputs and failed after the input change in our synthetic CPU case and separate CUDA confirmation.
- A random activation tensor does not test whether a program uses its weights and biases correctly. Those parameters must exercise the behavior being checked.
- These are correctness-generator observations on one synthetic workload, with separate CPU and CUDA results. They do not measure GPU leaderboard effects, kernel speed, or training improvement.
The check passed because the inputs hid the mistake
We sent six deliberately incorrect normalization formulas through SOL-ExecBench’s numerical checker on an original synthetic CPU workload. Every formula was accepted. After changing the generated normalization weights and biases from identity values to small elementwise random perturbations, all six were rejected. The correct-output control remained accepted. 2
The underlying issue and proposed perturbation were reported by zzw4257 in SOL-ExecBench issue #25. Our contribution is an independent CPU reproduction using a new synthetic Definition and Workload, explicit-constant controls, and a local regression patch. We published the reproduction as a follow-up to that report. 1 2
We later confirmed the same before-and-after verdicts on a Tesla T4 with PyTorch 2.9.0+cu130. That CUDA run is reported separately below; the graphic and six numerical error values remain results from the original CPU run. 7 8
When six different mistakes produce the same answer
Write the normalized activation as z = layer_norm(x). The intended affine result is y = z × weight + bias. In the pinned default generator, recognized normalization weights become all ones and normalization biases become all zeros—even when the workload requests random inputs. 3
For these inputs, the expected result is simply z. Leaving out the weight, leaving out the bias, or leaving out both produces the same result. Reading element zero of each affine tensor also works because every element is identical. Applying the identity affine transform twice changes nothing. Applying it to x before normalization changes nothing either.
Randomizing x cannot separate those formulas while weight and bias remain identity values. This is an input-coverage problem: on this restricted input set, the checker receives the same output from the intended computation and each wrong variant.
The six observed CPU results
The case uses x with shape 4 × 64, 64-element affine tensors, float32, and seed 42. We called the real gen_inputs and compute_error_stats functions from upstream commit a9fa0804c793d438e70850c33fe34426e66d53dd. The checker used max_atol = 0.01, max_rtol = 0.01, and required_matched_ratio = 0.99. No benchmark dataset was loaded. 2 4
Each row shows acceptance before → after, followed by the maximum absolute error after the change. All six errors were exactly 0.0 before the change. Error values below are rounded to six decimal places; the public reproduction records full precision. 2
- Omit both weight and bias — accepted → rejected; max absolute error 0.523450.
- Omit the weight — accepted → rejected; max absolute error 0.540673.
- Omit the bias — accepted → rejected; max absolute error 0.214417.
- Use weight[0] and bias[0] for every element — accepted → rejected; max absolute error 0.635101.
- Apply the affine transform twice — accepted → rejected; max absolute error 0.473204.
- Apply the affine transform before normalization — accepted → rejected; max absolute error 0.092222.
A narrow change to the default generator
The local patch draws each weight element as 1 + 0.1 × N(0,1), and each bias element as 0.1 × N(0,1). Values remain near familiar normalization parameters, but the tensors no longer act as identity constants. In this run, each affine tensor changed from one unique value to 64. These are Gaussian draws, not strict numerical bounds. 2
The change applies to the default random-input path. Explicit custom and safetensor inputs retain their values, and the existing low-precision fallback remains unchanged. Intentional constants still have a valid place in a test contract. Dataset-specific get_inputs functions need their own review; this two-branch change does not audit them. 3 2
The CPU correct control was a copy of the expected affine output. It passed before and after with zero error. That confirms the positive case for this numerical-checker experiment; it is not an independent correct implementation. 2
What the CPU run verified
The original CPU experiment ran on macOS arm64 with Python 3.12.14 and PyTorch 2.14.1. The upstream project pins PyTorch 2.9.0 with a CUDA stack. The CPU error values and test results retain their original environment scope; the later CUDA confirmation is a separate run. 2 5
With the patch, the input-generation and numerical-correctness test files passed all 197 tests on CPU. The focused regression covers float32, float16 and bfloat16, the six wrong affine transformations, and preservation of explicit custom/safetensor constants. Ruff checks and git diff --check also passed. These checks validate the local CPU change; they are not a GPU benchmark. 2
The published issue follow-up records that CPU reproduction and proposes the limited change for maintainer feedback. It does not establish that a fix has been accepted upstream. 2
CUDA confirmation on one Tesla T4
On November 9, 2026, we ran the original synthetic workload through the selected public SOL-ExecBench input-generation and numerical-checker paths on CUDA. All six incorrect formulas were accepted with identity affine inputs and rejected after the narrow generator change. The copied-reference control passed both conditions. These are 14 candidate observations—seven outputs under two input conditions—on one float32 case with shape 4×64 and seed 42. 7
The recorded environment was a Tesla T4, Python 3.12.10, PyTorch 2.9.0+cu130 and NVIDIA driver 610.57.04, reported through NVML. The selected public source was pinned to a9fa0804c793d438e70850c33fe34426e66d53dd. The numerical checker was unchanged; the input-generator patch varied the normalization weights and biases. The run synchronized CUDA after generation, reference computation, each candidate and each checker call. 8
The activation tensor was identical across the before and after phases within this CUDA run. CPU and CUDA random-number streams are not asserted to be bit-identical, so the historical CPU error values above must not be read as CUDA measurements. The downloadable result records the CUDA tensors, numerical errors and verdicts; its provenance file records the result hash, source pins, runtime and review scope. 7 8
To repeat the CUDA check, download the public source bundle, runtime lock bundle, instructions and SHA-256 checksum file linked here. The procedure targets Linux x86_64 with Python 3.12. Installing the locked runtime downloads 30 pinned wheels, about 2.74 GB; the bundles contain no wheels, and Modal is not required. The instruction file provides the CPU composition check and CUDA commands. 9 10 11 12
This confirmation used one original synthetic fixture and selected public functions. It did not execute the full SOL evaluator or its dataset, rerun the 197-test CPU suite on GPU, measure kernel speed, evaluate a model, establish training benefit, or qualify a production environment. An earlier invocation failed while transporting its output; no numerical result was recovered from that invocation. The successful run used the same built runtime with a corrected result-transport path, as disclosed in the provenance. 8
Repeat the original CPU reproduction
Our linked issue follow-up contains the complete standalone Python script, the two-line source change, and the observed results. It constructs its own Definition and Workload and calls the upstream generator and numerical checker directly. 2
To repeat the comparison, use an isolated checkout at a9fa0804c793d438e70850c33fe34426e66d53dd and save the script as reproduce_sol_norm_affine.py. With the Python dependencies available, run PYTHONPATH=src python reproduce_sol_norm_affine.py from the checkout root. Save the JSON, apply the two-line generator change shown in the issue follow-up, then run the same script again. The output includes the device, Torch version, seed, tolerance and verdict for every candidate. 2
Treat the recorded environment as part of the result. Other Torch versions or hardware can produce different random samples and numerical values. A six-case result does not establish exhaustive correctness, and our synthetic script makes no claim about the benchmark’s full task distribution.
Inspect the recorded outputs
The interactive fixture lets you switch between identity and varied affine inputs, inspect all six incorrect variants, and locate individual output differences. It displays the recorded Python tensor values and checker decisions. The browser does not execute a GPU kernel or rerun the checker; the copied expected-output control remains a sanity check. 6
A correctness label can become training data
In a kernel-writing environment, the correctness decision can determine whether a candidate receives a performance reward. If a wrong affine computation is indistinguishable from the reference on generated inputs, the resulting label can look valid. That creates a plausible route to misleading training feedback. We have demonstrated the input blind spot here; we have not measured its effect on a trained model.
This gives evaluator authors a concrete check: deliberately omit a scale, omit a bias, reuse the wrong parameter index, or apply a transformation twice. Confirm that the intended reference passes and that each relevant mutation fails under the declared numerical contract. Record which behavior each input distribution exercises. A larger number of evaluations cannot compensate for an operation the inputs never test.
For labs training kernel-writing agents, we would like to compare a small set of meaningful wrong-program controls against your current evaluator and scope a Nodus environment or data pilot. The useful starting point is a specific skill, a protected correctness contract, and a result both sides can reproduce.
Sources
- Original report by zzw4257: SOL-ExecBench issue #25
- Nodus follow-up: standalone synthetic CPU reproduction, observed results and proposed patch
- Pinned SOL-ExecBench input generator
- Pinned SOL-ExecBench numerical checker
- Pinned SOL-ExecBench dependency versions
- Interactive LayerNorm counterexample with recorded CPU tensors and provenance
- Download: original synthetic CUDA result (JSON)
- Download: CUDA result provenance, source pins and scope (JSON)
- Download: public CUDA reproduction source bundle
- Download: pinned CUDA runtime lock bundle (no wheels)
- Read: CUDA reproduction instructions
- Download: SHA-256 checksums for the reproduction files
Original article: Six wrong normalization formulas passed a correctness check

Top comments (0)