Windows NVIDIA Setup
Run GPUFlow on Windows with NVIDIA GPUs using Windows Subsystem for Linux 2 (WSL2). This setup allows your Windows PC to act as a GPU provider while maintaining normal Windows functionality.
Prerequisites
Section titled “Prerequisites”Before starting, verify your system meets these requirements:
- Windows 10 version 2004+ or Windows 11 (any version)
- NVIDIA GPU with 8GB+ VRAM (GTX 1060 or newer)
- 16GB+ system RAM (32GB recommended)
- Administrator access to install software
- Stable internet connection (25+ Mbps upload)
Step 1: Check Windows version
Section titled “Step 1: Check Windows version”Open PowerShell as Administrator and check your Windows version:
# Check Windows versionwinver
# Check Windows build number[System.Environment]::OSVersion.Version
You need Windows 10 build 19041 or newer, or any Windows 11 version.
Step 2: Enable WSL2
Section titled “Step 2: Enable WSL2”WSL2 is required for GPU passthrough to Linux containers.
Install WSL2:
# Run as Administratorwsl --install
# Restart your computer when prompted
After restart, verify WSL2 installation:
wsl --version
You should see WSL version 1.0.0 or newer.
Step 3: Install Ubuntu on WSL2
Section titled “Step 3: Install Ubuntu on WSL2”Install Ubuntu as your Linux distribution:
# Install Ubuntu 22.04 LTSwsl --install -d Ubuntu-22.04
# Set Ubuntu as defaultwsl --set-default Ubuntu-22.04
Set up Ubuntu:
- Launch Ubuntu from Start menu
- Create a username and password when prompted
- Wait for initial setup to complete
Step 4: Install NVIDIA drivers for Windows
Section titled “Step 4: Install NVIDIA drivers for Windows”Install NVIDIA drivers that support WSL2:
- Visit NVIDIA’s WSL2 driver page
- Download NVIDIA Drivers for CUDA on WSL2
- Run the installer as Administrator
- Restart your computer
Step 5: Configure WSL2 with GPU support
Section titled “Step 5: Configure WSL2 with GPU support”Verify GPU access in WSL2:
# Launch WSL2 Ubuntuwsl
# Check if GPU is visiblelspci | grep -i nvidia
Update Ubuntu packages:
# Update package listssudo apt update && sudo apt upgrade -y
# Install essential packagessudo apt install curl wget software-properties-common
Step 6: Install NVIDIA Container Toolkit in WSL2
Section titled “Step 6: Install NVIDIA Container Toolkit in WSL2”Install the container toolkit inside your WSL2 Ubuntu environment:
# Add NVIDIA repositorydistribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# Install toolkitsudo apt updatesudo apt install nvidia-container-toolkit
Step 7: Install Docker in WSL2
Section titled “Step 7: Install Docker in WSL2”Install Docker inside your WSL2 Ubuntu environment:
# Install Dockercurl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh
# Add your user to docker groupsudo usermod -aG docker $USER
# Start Docker servicesudo service docker start
Configure Docker for NVIDIA GPUs:
# Configure NVIDIA runtimesudo nvidia-ctk runtime configure --runtime=docker
# Restart Dockersudo service docker restart
Step 8: Test GPU access in containers
Section titled “Step 8: Test GPU access in containers”Verify that containers can access your NVIDIA GPU:
# Test GPU accessdocker run --rm --gpus all nvidia/cuda:12.0-base-ubuntu22.04 nvidia-smi
You should see your GPU information displayed, confirming GPU passthrough works.
Step 9: Deploy GPUFlow provider
Section titled “Step 9: Deploy GPUFlow provider”Create data directory:
sudo mkdir -p /opt/gpuflowsudo chown $USER:$USER /opt/gpuflow
Run GPUFlow provider:
docker run -d \ --name gpuflow-provider \ --restart=unless-stopped \ --gpus=all \ --network=host \ -v /opt/gpuflow:/data \ -e GPUFLOW_API_KEY="get-from-dashboard" \ ghcr.io/gpuflow/provider:latest
Verify provider is running:
docker psdocker logs gpuflow-provider
Look for these success messages in the logs:
- GPU detection successful
- Network connectivity established
- Provider registered with GPUFlow
Step 10: Auto-start services
Section titled “Step 10: Auto-start services”Configure services to start automatically when Windows boots:
Create startup script:
# Create startup scriptcat > ~/start-gpuflow.sh << 'EOF'#!/bin/bashsudo service docker startsleep 5docker start gpuflow-providerEOF
chmod +x ~/start-gpuflow.sh
Add to Windows startup:
- Press
Win + R
, typeshell:startup
, press Enter - Create a new file called
GPUFlow.bat
with this content:
@echo offwsl -d Ubuntu-22.04 -u your-username /home/your-username/start-gpuflow.sh
- Replace
your-username
with your actual WSL2 username
Managing your provider
Section titled “Managing your provider”Common management commands (run in WSL2):
# Check provider statusdocker ps
# View logsdocker logs gpuflow-provider -f
# Restart providerdocker restart gpuflow-provider
# Stop provider (to use GPU for gaming)docker stop gpuflow-provider
# Start provider againdocker start gpuflow-provider
Performance considerations
Section titled “Performance considerations”Resource allocation:
- WSL2 uses about 1-2GB RAM overhead
- GPU switching between Windows and containers is seamless
- Negligible performance impact on Windows gaming
Gaming while providing:
- Stop the provider before launching games:
docker stop gpuflow-provider
- Start provider after gaming:
docker start gpuflow-provider
- Consider scheduling based on your gaming hours
Next steps
Section titled “Next steps”Your Windows NVIDIA provider is now running:
- Create your GPUFlow account
- Claim your hardware in the dashboard
- Configure your GPU listings
- Set up Windows-specific automation
Monitoring and optimization
Section titled “Monitoring and optimization”Check system resource usage:
# In WSL2, monitor container resourcesdocker stats gpuflow-provider
Windows Task Manager:
- GPU usage appears under “GPU Engine” tabs
- WSL2 appears as “Vmmem” process in memory usage
- Docker containers don’t appear directly in Windows processes