A prototype tool to check the idempotence of SASS programs. It analyzes GPU kernel assembly (SASS) to determine whether repeated execution of a kernel produces the same memory state. The project includes both static analysis (from SASS/cubin) and runtime tracing.
picker/
├── main.py # CLI entry point; runs checker and optional codegen
├── idem_checker/ # Python static checker: parser, executor, codegen
├── antlr4/ # ANTLR grammars and generated parsers for SASS (sm_70)
├── testdata/ # Sample SASS, CUDA sources
├── tracing/ # NVBIT-based runtime tracer for CUDA kernels (see tracing/README.md)
├── online_validation/ # C++ runtime validation / instrumentation
└── environment.yml # Conda environment for the Python checker
conda env create -f environment.yml
See python3 main.py --help
python main.py --sass testdata/sass/sm70/vectoradd.sass -o vectoradd.cppCurrently, this tool only supports ISA of sm_70 GPUs (e.g., V100).
# Get cubin file
nvcc -cubin -arch=sm_70 code.cu -o code.cubin
# Get sass file
cuobjdump -sass code.cubin > code.sassThis project is licensed under the Apache License 2.0 — see the LICENSE file for details.