Blog
Building GPUVision: A GPU Warp Scheduling Simulator
An inside look at how I built a configurable C++17 GPU simulator, benchmarked warp scheduling strategies, validated the engine with Google Test, and visualized execution data through a Next.js dashboard.
July 2026 | Systems Programming
The Purpose of GPU Warp Scheduling
Warp scheduling determines which groups of threads advance during simulated GPU execution. GPUVision focuses on making those scheduling decisions observable so scheduler behavior can be compared through metrics instead of treated as a black box.
Simulator Architecture
The simulator is written in C++17 and models warp execution, streaming multiprocessor activity, instruction progress, and memory-delay behavior. The goal is a configurable study tool for warp execution and scheduling behavior, not a cycle-perfect model of a physical GPU.
Configurable Workloads and Memory Latency
Workload configuration makes it possible to vary instruction mixes and memory delays across benchmark runs. That lets scheduler results be compared under different execution patterns without rewriting the simulation engine.
Performance Metrics
GPUVision tracks IPC, total cycles, SM utilization, and warp completion time. These metrics give the dashboard enough structure to explain both aggregate scheduler performance and lower-level execution behavior.
Testing With Google Test
More than 14 Google Test unit tests validate core simulator behavior. The tests keep scheduler comparisons grounded by checking the engine logic before performance results are exported.
Exporting Benchmark Data
Benchmark runs export CSV and JSON data so results can be inspected outside the simulator and consumed by the dashboard. Keeping the export formats simple made it easier to debug metrics and build frontend visualizations.
Building the Next.js Dashboard
The Next.js dashboard visualizes warp states, SM activity, execution timelines, and scheduler metrics. It turns simulation output into a more readable interface for comparing scheduler behavior across benchmark runs.
Lessons Learned
The project reinforced how systems work benefits from tight feedback between tests, metrics, and visualization. Clear exports and focused validation made the simulator easier to reason about as features were added.