Skip to content

Commit 62657ea

Browse files
committed
add automatic hardware detection and WSL2 validation
1 parent c906561 commit 62657ea

1 file changed

Lines changed: 54 additions & 4 deletions

File tree

docker-entrypoint.sh

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1+
#!/bin/bash
12
set -e
3+
VARIANT="${QUADTRIX_VARIANT:-auto}"
4+
5+
if [ "$VARIANT" = "auto" ]; then
6+
if command -v nvidia-smi &>/dev/null && nvidia-smi &>/dev/null 2>&1; then
7+
VARIANT="cuda"
8+
else
9+
VARIANT="cpu"
10+
fi
11+
fi
12+
213
echo ""
314
echo " ██████╗ ██╗ ██╗ █████╗ ██████╗ ████████╗██████╗ ██╗██╗ ██╗"
415
echo " ██╔═══██╗██║ ██║██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗██║╚██╗██╔╝"
@@ -9,14 +20,48 @@ echo " ╚══▀▀═╝ ╚═════╝ ╚═╝ ╚═╝╚═
920
echo ""
1021
echo " Starting Quadtrix.cpp..."
1122
echo ""
12-
echo " FastAPI backend at http://localhost:3001"
23+
echo " FastAPI backend at http://localhost:3001"
1324
echo " React frontend at http://localhost:8080"
1425
echo " Models volume at /app/models"
1526
echo ""
27+
28+
if [ "$VARIANT" = "cuda" ]; then
29+
echo " Mode: CUDA / GPU"
30+
echo ""
31+
if command -v nvidia-smi &>/dev/null; then
32+
if nvidia-smi &>/dev/null 2>&1; then
33+
GPU_NAME=$(nvidia-smi --query-gpu=name --format=csv,noheader 2>/dev/null | head -1 || echo "Unknown")
34+
GPU_MEM=$(nvidia-smi --query-gpu=memory.total --format=csv,noheader 2>/dev/null | head -1 || echo "?")
35+
echo " GPU detected: $GPU_NAME ($GPU_MEM)"
36+
else
37+
echo " WARNING: nvidia-smi present but GPU is not accessible."
38+
echo ""
39+
echo " Running on WSL2? Make sure you have:"
40+
echo " 1. NVIDIA Game/Studio/Data-Centre driver ≥ 515 on Windows"
41+
echo " 2. WSL2 (not WSL1): wsl --set-version <distro> 2"
42+
echo " 3. The CUDA toolkit installed inside WSL is optional;"
43+
echo " the driver bridge handles it automatically."
44+
echo " Docs: https://developer.nvidia.com/cuda/wsl"
45+
fi
46+
else
47+
echo " WARNING: No NVIDIA driver found. CUDA image started without GPU."
48+
echo ""
49+
echo " On WSL2, install the NVIDIA driver on Windows (not inside WSL)."
50+
echo " GPU passthrough is handled automatically by WSL2."
51+
echo " Docs: https://developer.nvidia.com/cuda/wsl"
52+
echo ""
53+
echo " To run without a GPU, use the CPU image instead:"
54+
echo " docker pull ghcr.io/eamon2009/quadtrix-cpu:sha-3b65553"
55+
fi
56+
echo ""
57+
else
58+
echo " Mode: CPU"
59+
echo ""
60+
fi
1661
WEIGHTS_FOUND=0
1762

1863
if [ -f "/app/models/best_model.pt" ]; then
19-
echo " PyTorch checkpoint found: /app/models/best_model.pt"
64+
echo " PyTorch checkpoint found: /app/models/best_model.pt"
2065
WEIGHTS_FOUND=1
2166
fi
2267

@@ -29,8 +74,13 @@ if [ "$WEIGHTS_FOUND" = "0" ]; then
2974
echo ""
3075
echo " WARNING: No model weights found in /app/models"
3176
echo " The backend will start but inference will fail until weights are mounted."
32-
echo " Mount your weights directory:"
33-
echo " docker run -v /path/to/your/models:/app/models ..."
77+
echo ""
78+
echo " Mount your weights at run-time:"
79+
if [ "$VARIANT" = "cuda" ]; then
80+
echo " docker run --gpus all -v /path/to/models:/app/models ghcr.io/eamon2009/quadtrix-cuda:sha-3b65553"
81+
else
82+
echo " docker run -v /path/to/models:/app/models ghcr.io/eamon2009/quadtrix-cpu:sha-3b65553"
83+
fi
3484
echo ""
3585
fi
3686
exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf

0 commit comments

Comments
 (0)