Skip to content

Puhti and Mahti computing services have been decommissioned. Puhti and Mahti login nodes and storage services will remain available until 15 October 2026, but are no longer covered by service contracts. Please clean up and migrate your data to Roihu ASAP. See Roihu data migration guide for instructions.

compute-sanitizer: functional correctness checking suite for CUDA programs

Available

  • Puhti: version depends on the CUDA environment
  • Mahti: version depends on the CUDA environment
  • Roihu-GPU: version depends on the CUDA environment

License

Usage is possible for both academic and commercial purposes.

Usage

compute-sanitizer is a functional correctness checking suite included in the CUDA toolkit (cuda module needs to be loaded). In order to use the tool, the CUDA code has to be compiled with the extra flags -g and -G.

Running the tool can be done either in an interactive session or in a batch job. The application is started as (prepend compute-sanitizer by srun in a batch job):

compute-sanitizer  --tool <tool> ./cuda_program
where <tool> is one of the several sub-tools for different type of checks:

  • memcheck: is capable of precisely detecting and attributing out of bounds and misaligned memory access errors in CUDA applications. It can also report hardware exceptions encountered by the GPU (default)

  • racecheck: can report shared memory data access hazards that can cause data races.

  • initcheck: can report cases where the GPU performs uninitialized accesses to global memory

  • synccheck: can report cases where the application is attempting invalid usages of synchronization primitives

Info

Sometimes external libraries (e.g. MPI) generate a lot of false positives