The ROCetta Project

The ROCetta Project (pron. rosetta) aims to formally specify GPU virtual instruction sets (e.g. PTX) and hardware instruction sets (e.g. SASS). The emphasis is on specifying all the components of these instruction sets in a modular, reusable fashion.

Note: (May 2024) Some of the links below may not work since they point to private repositories. We're working to release them.

Our current focus is to produce for NVIDIA's PTX:

  1. A complete grammar
  2. A test suite
  3. An interpreter
  4. Executable semantics (in Python and C)
  5. Formal semantics (in SMT2)

We've also produced semantics for NVIDIA's SASS for the Pascal architecture:

  1. Interpreter/VM (Includes build scripts to construct C definitions from the semantics database)
  2. Semantics Database (SMT)
  3. SASS AST
  4. SASS math (derived from PTX math tweaked slightly for functions to correspond to SASS instructions)
  5. CUDA-GDB State Grabber (for obtaining register maps for validation)

Team

  1. Amr S. Elhelw
  2. Benjamin Valpey
  3. Benjamin Carleton
  4. Yanji Gao
  5. Sreepathi Pai

Artifacts

We're slowly but surely preparing artifacts for public release. Here is a list of artifacts currently available:

  1. A C implementation of the PTX Elementary Math Functionality (due to Benjamin Carleton)

Publications

  1. Amr S. Elhelw and Sreepathi Pai, Horus: A Modular GPU Emulator Framework (Poster), ISPASS 2020, August 2020