1+ #! /bin/bash
12set -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+
213echo " "
314echo " ██████╗ ██╗ ██╗ █████╗ ██████╗ ████████╗██████╗ ██╗██╗ ██╗"
415echo " ██╔═══██╗██║ ██║██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗██║╚██╗██╔╝"
@@ -9,14 +20,48 @@ echo " ╚══▀▀═╝ ╚═════╝ ╚═╝ ╚═╝╚═
920echo " "
1021echo " Starting Quadtrix.cpp..."
1122echo " "
12- echo " FastAPI backend at http://localhost:3001"
23+ echo " FastAPI backend at http://localhost:3001"
1324echo " React frontend at http://localhost:8080"
1425echo " Models volume at /app/models"
1526echo " "
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
1661WEIGHTS_FOUND=0
1762
1863if [ -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
2166fi
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 " "
3585fi
3686exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
0 commit comments