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.VersionYou 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 promptedAfter restart, verify WSL2 installation:
wsl --versionYou 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.04Set 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 nvidiaUpdate Ubuntu packages:
# Update package listssudo apt update && sudo apt upgrade -y
# Install essential packagessudo apt install curl wget software-properties-commonStep 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-toolkitStep 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 startConfigure Docker for NVIDIA GPUs:
# Configure NVIDIA runtimesudo nvidia-ctk runtime configure --runtime=docker
# Restart Dockersudo service docker restartStep 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-smiYou 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/gpuflowRun 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:latestVerify provider is running:
docker psdocker logs gpuflow-providerLook 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.shAdd to Windows startup:
- Press Win + R, typeshell:startup, press Enter
- Create a new file called GPUFlow.batwith this content:
@echo offwsl -d Ubuntu-22.04 -u your-username /home/your-username/start-gpuflow.sh- Replace your-usernamewith 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-providerPerformance 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-providerWindows 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