Get Mock NVML running in 5 minutes.
- Linux (x86_64 or arm64)
- Go 1.25+ with CGo
- GCC toolchain (
build-essentialon Debian/Ubuntu) nvidia-smibinary (from NVIDIA driver or CUDA toolkit)
cd pkg/gpu/mocknvml
makeThis creates:
libnvidia-ml.so.550.163.01 # Versioned library
libnvidia-ml.so.1 # Soname symlink
libnvidia-ml.so # Linker symlink
# 8x Mock A100 GPUs with default settings
LD_LIBRARY_PATH=. nvidia-smi# A100 profile (40GB, 400W)
LD_LIBRARY_PATH=. MOCK_NVML_CONFIG=configs/mock-nvml-config-a100.yaml nvidia-smi
# GB200 profile (192GB, 1000W)
LD_LIBRARY_PATH=. MOCK_NVML_CONFIG=configs/mock-nvml-config-gb200.yaml nvidia-smiBuild Linux binaries from macOS or other platforms:
cd pkg/gpu/mocknvml
make docker-buildLD_LIBRARY_PATH=. nvidia-smi -LExpected output:
GPU 0: NVIDIA A100-SXM4-40GB (UUID: GPU-12345678-1234-1234-1234-123456780000)
GPU 1: NVIDIA A100-SXM4-40GB (UUID: GPU-12345678-1234-1234-1234-123456780001)
...
LD_LIBRARY_PATH=. MOCK_NVML_CONFIG=configs/mock-nvml-config-a100.yaml nvidia-smi -qLD_LIBRARY_PATH=. MOCK_NVML_CONFIG=configs/mock-nvml-config-a100.yaml nvidia-smi -x -qLD_LIBRARY_PATH=. nvidia-smi --query-gpu=index,name,uuid,memory.total --format=csvEnable verbose logging to see NVML function calls:
LD_LIBRARY_PATH=. MOCK_NVML_DEBUG=1 nvidia-smiOutput includes:
[CONFIG] Loaded YAML config: 8 devices, driver 550.163.01
[ENGINE] Creating devices from YAML config
[DEVICE 0] Created: name=NVIDIA A100-SXM4-40GB uuid=GPU-12345678-...
[NVML] nvmlDeviceGetHandleByIndex(0)
[NVML] nvmlDeviceGetTemperature(sensor=0) -> 33
| Variable | Description | Default |
|---|---|---|
MOCK_NVML_CONFIG |
Path to YAML config file | (none) |
MOCK_NVML_NUM_DEVICES |
Number of GPUs (without YAML) | 8 |
MOCK_NVML_DRIVER_VERSION |
Driver version (without YAML) | 550.163.01 |
MOCK_NVML_DEBUG |
Enable debug logging | (disabled) |
- Configuration Reference - Customize GPU properties
- Examples - Common usage patterns
- Architecture - Understand how it works