gpuemu vs NVIDIA Compute Sanitizer
Compute Sanitizer (memcheck, racecheck, synccheck) finds memory and synchronization bugs. It is blind to silent numerical wrong-output — the kernel that runs cleanly and returns the wrong answer. gpuemu covers exactly that gap.
| Capability | gpuemu | NVIDIA Compute Sanitizer |
|---|---|---|
| Out-of-bounds / memory errors | No | Yes |
| Race / sync detection | No | Yes |
| Silent numerical wrong-output | Yes | No |
| Reference-oracle comparison | Yes | No |
| Runs without a GPU | Yes | No |
| Op-schema-aware input generation | Yes | No |
NVIDIA Compute Sanitizer is the standard suite for memory correctness on the GPU: memcheck
for out-of-bounds and leaks, racecheck for shared-memory hazards, synccheck for barrier
misuse. If your kernel corrupts memory, it will tell you.
It says nothing about whether your kernel computes the right answer. A flash-attention that
forgets to rescale after a max update reads and writes every address legally — and returns
wrong numbers. To memcheck, that kernel is perfect.
gpuemu occupies the orthogonal slot: it compares output against a high-precision reference across adversarial inputs. Run both. Compute Sanitizer for memory safety, gpuemu for numerical correctness.
Frequently Asked Questions
Should I use Compute Sanitizer or gpuemu?
Both — they cover different failure modes. Compute Sanitizer catches memory and race bugs; gpuemu catches numerical wrong-output. A kernel that passes memcheck can still return subtly wrong values, which is what gpuemu validates.