PantheonSim / Compared with other tools

PantheonSim compared with GPGPU-Sim, Mokka, ZLUDA and other tools

PantheonSim, the GPU simulator for CUDA and ROCm, runs unmodified CUDA and HIP programs on a CPU to check what they do, not how fast they are. Several other projects sit near it and answer different questions. This page says what each is for, in their own words where they have published them, so you can pick the right tool or combine them.

The short version

Different tools answer different questions. Pick by the question you have:

What each is for

ToolWhat it is forSource for the description
PantheonSimA functional simulator: unmodified CUDA and HIP programs run on the CPU, with nvidia-smi and rocm-smi, and checks for races and memory errors. No timing model. Its README and status page
GPGPU-SimA cycle-level simulator for NVIDIA-style GPUs that runs CUDA or OpenCL workloads, for architecture research. GPGPU-Sim README
Accel-SimA framework for cycle-level GPU simulation that replays SASS traces recorded with NVBit on a real NVIDIA GPU, on a GPGPU-Sim 4.x performance model, and also has a PTX execution-driven mode. Accel-Sim README
gem5-gpuA research simulator that integrates GPGPU-Sim's GPU model into the gem5 system simulator. Its source tree (the repository has no description)
NVIDIA Mokka (k8s-test-infra)Simulates the software contracts around NVIDIA devices on CPU nodes, for testing GPU-dependent software in Kubernetes: allocation, telemetry, topology and injected faults. k8s-test-infra README
compute-sanitizerNVIDIA's functional correctness checking suite in the CUDA toolkit: memcheck, racecheck, initcheck and synccheck. NVIDIA's documentation
ZLUDAA drop-in replacement for CUDA on non-NVIDIA GPUs, to run unmodified CUDA applications. ZLUDA README
hipotherThe non-AMD back-end implementation for HIP. Its README says the repository is retired and development moved to ROCm's rocm-systems repository. hipother README
GPU OcelotA dynamic compilation framework for PTX. Repository description

These descriptions follow what each project says about itself on the page linked. Where a project has changed since, its own page wins. If a statement here is out of date, please open an issue.

Cycle-level research simulators

GPGPU-Sim describes itself as a cycle-level simulator modelling contemporary GPUs and running CUDA or OpenCL workloads. It models how a GPU's hardware behaves cycle by cycle, which is what you want when designing or studying an architecture, and Accel-Sim, according to its README, pairs that model with traces of real SASS execution and reports how closely it correlates with measured hardware. gem5-gpu puts the GPU model inside gem5 so the CPU and GPU can be studied together.

PantheonSim makes the opposite trade. It has no timing, cache or thermal model, so it can say nothing about cycles, stalls or hit rates. In exchange it aims at being a drop-in for software testing: the real nvcc or hipcc builds your program, the runtime and libraries are present under their real names, and nvidia-smi and rocm-smi answer. If you want to know how a new cache would change a kernel's runtime, use a research simulator. If you want your test suite to run on a runner with no GPU, use PantheonSim. They are complements.

Both families need care about how the program links the CUDA runtime. GPGPU-Sim's README says programs must be dynamically linked to the CUDA runtime, and PantheonSim likewise needs nvcc -cudart shared.

Mokka and other mocks of the software around a GPU

NVIDIA's k8s-test-infra describes Mokka as simulating the software contracts around NVIDIA devices rather than the devices themselves, and says real hardware is required for CUDA execution, NCCL, GPUDirect and RDMA data paths. It is built for testing GPU-dependent software in Kubernetes without GPUs: scheduling, the device plugin, telemetry that NVML, nvidia-smi and DCGM read, topology and injected faults.

There is overlap in what a monitoring tool sees: PantheonSim also serves NVML and a drop-in nvidia-smi, with topology, ECC and PCIe fault injection (see the simulated nvidia-smi). The difference is that PantheonSim also runs the CUDA kernels. If your question is cluster plumbing, Mokka is aimed at that and PantheonSim is not a Kubernetes tool. If your question is whether a CUDA program works, Mokka's README says that needs real hardware, and that is where PantheonSim applies.

compute-sanitizer

compute-sanitizer is NVIDIA's own checking suite, included in the CUDA toolkit. Its tools find memory errors, shared memory data races, uses of uninitialized global memory and invalid synchronization. PantheonSim has overlapping checks (out-of-bounds and use-after-free detection, a shared-memory race detector with a scheduler that interleaves warps adversarially, and a strict mode), and it runs without a GPU. NVIDIA's tool is authoritative for what the real hardware and driver do. Use the vendor's tool where you have the hardware, and PantheonSim where you do not or where you want a result that replays the same way every time.

ZLUDA and HIP back-ends: translation layers

ZLUDA's README describes it as a drop-in replacement for CUDA on non-NVIDIA GPUs, running unmodified CUDA applications. A translation layer runs CUDA programs on another vendor's real hardware, so it needs that hardware. HIP's non-AMD back-end goes the other way, letting HIP source target other vendors' GPUs. Both answer the question of running on a GPU you own. PantheonSim answers the question of running when you own none, and says nothing about speed.

Compile-only workflows are a related approach: hipcc or nvcc can build GPU code without a GPU in the machine, which catches compile errors but runs nothing. PantheonSim goes one step further and runs what was built.

Physical GPU CI

Running tests on real GPUs, for example on self-hosted runners with cards, is the reference for performance, numerics on the exact part, and the real driver. It costs hardware and queue time. The usual pattern is to run the fast, broad checks on every pull request on a simulator and keep a run on physical GPUs for a nightly or release job. PantheonSim says the same itself: keep a run on physical GPUs before a release. See CUDA and HIP tests in GitHub Actions.

Where PantheonSim is the wrong tool

Questions

Is PantheonSim a replacement for GPGPU-Sim?

No. GPGPU-Sim models cycles for architecture research. PantheonSim checks function for software testing and has no timing model.

Can I run CUDA on an AMD GPU with PantheonSim?

No. It does not run CUDA on AMD hardware. It runs CUDA and HIP programs on the CPU against simulated GPUs. A translation layer such as ZLUDA is for running CUDA on a GPU that is not NVIDIA's.

Next steps

Try running CUDA without a GPU or ROCm and HIP without an AMD GPU, browse the simulated GPUs, or open the playground. The docs list every command.