From a185efe37ea685daeb2dc652ab9e7bef0f159bef Mon Sep 17 00:00:00 2001 From: Benson Wong Date: Sat, 4 Apr 2026 08:49:59 +0800 Subject: [PATCH] docker: make CMAKE_CUDA_ARCHITECTURES configurable via build arg (#625) Expose CMAKE_CUDA_ARCHITECTURES as a Docker build ARG so users can customize CUDA architectures via --build-arg without editing the Dockerfile. - convert hardcoded ENV to ARG with default, feeding into ENV - replace silent fallback defaults (:-) in scripts with :? guards to fail fast if the env var is missing - add usage example to Dockerfile header Follow up to: #624 https://claude.ai/code/session_01EWiUe7jNABX7Uz95dUGJqK Co-authored-by: Claude --- docker/unified/Dockerfile | 4 +++- docker/unified/install-ik-llama.sh | 2 +- docker/unified/install-llama.sh | 2 +- docker/unified/install-sd.sh | 2 +- docker/unified/install-whisper.sh | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docker/unified/Dockerfile b/docker/unified/Dockerfile index b38e5e9..04e9dce 100644 --- a/docker/unified/Dockerfile +++ b/docker/unified/Dockerfile @@ -4,6 +4,7 @@ # Usage: # docker buildx build --build-arg BACKEND=cuda -t llama-swap:unified-cuda . # docker buildx build --build-arg BACKEND=vulkan -t llama-swap:unified-vulkan . +# docker buildx build --build-arg BACKEND=cuda --build-arg CMAKE_CUDA_ARCHITECTURES="86;89" -t llama-swap:unified-cuda . # # Each project has its own install script that handles cloning, building, # and installing binaries. Build stages are independent for cache efficiency. @@ -14,8 +15,9 @@ ARG BACKEND=cuda FROM nvidia/cuda:12.9.1-devel-ubuntu24.04 AS builder-base-cuda +ARG CMAKE_CUDA_ARCHITECTURES="60;61;75;86;89" ENV DEBIAN_FRONTEND=noninteractive -ENV CMAKE_CUDA_ARCHITECTURES="60;61;75;86;89" +ENV CMAKE_CUDA_ARCHITECTURES=${CMAKE_CUDA_ARCHITECTURES} ENV CCACHE_DIR=/ccache ENV CCACHE_MAXSIZE=2G ENV PATH="/usr/lib/ccache:${PATH}" diff --git a/docker/unified/install-ik-llama.sh b/docker/unified/install-ik-llama.sh index f78ecd2..75744ac 100644 --- a/docker/unified/install-ik-llama.sh +++ b/docker/unified/install-ik-llama.sh @@ -26,7 +26,7 @@ CMAKE_FLAGS=( -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DGGML_CUDA=ON - "-DCMAKE_CUDA_ARCHITECTURES=${CMAKE_CUDA_ARCHITECTURES:-60;61;75;86;89}" + "-DCMAKE_CUDA_ARCHITECTURES=${CMAKE_CUDA_ARCHITECTURES:?CMAKE_CUDA_ARCHITECTURES must be set}" "-DCMAKE_CUDA_FLAGS=-allow-unsupported-compiler" "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath-link,/usr/local/cuda/lib64/stubs -lcuda -Wl,--allow-shlib-undefined" ) diff --git a/docker/unified/install-llama.sh b/docker/unified/install-llama.sh index f73460e..ddc75cb 100755 --- a/docker/unified/install-llama.sh +++ b/docker/unified/install-llama.sh @@ -33,7 +33,7 @@ if [ "$BACKEND" = "cuda" ]; then CMAKE_FLAGS+=( -DGGML_CUDA=ON -DGGML_VULKAN=OFF - "-DCMAKE_CUDA_ARCHITECTURES=${CMAKE_CUDA_ARCHITECTURES:-60;61;75;86;89}" + "-DCMAKE_CUDA_ARCHITECTURES=${CMAKE_CUDA_ARCHITECTURES:?CMAKE_CUDA_ARCHITECTURES must be set}" "-DCMAKE_CUDA_FLAGS=-allow-unsupported-compiler" "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath-link,/usr/local/cuda/lib64/stubs -lcuda" ) diff --git a/docker/unified/install-sd.sh b/docker/unified/install-sd.sh index e8db701..54fdb52 100755 --- a/docker/unified/install-sd.sh +++ b/docker/unified/install-sd.sh @@ -33,7 +33,7 @@ if [ "$BACKEND" = "cuda" ]; then CMAKE_FLAGS+=( -DGGML_CUDA=ON -DGGML_VULKAN=OFF - "-DCMAKE_CUDA_ARCHITECTURES=${CMAKE_CUDA_ARCHITECTURES:-60;61;75;86;89}" + "-DCMAKE_CUDA_ARCHITECTURES=${CMAKE_CUDA_ARCHITECTURES:?CMAKE_CUDA_ARCHITECTURES must be set}" "-DCMAKE_CUDA_FLAGS=-allow-unsupported-compiler" "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath-link,/usr/local/cuda/lib64/stubs -lcuda" "-DCMAKE_SHARED_LINKER_FLAGS=-Wl,-rpath-link,/usr/local/cuda/lib64/stubs -lcuda" diff --git a/docker/unified/install-whisper.sh b/docker/unified/install-whisper.sh index 74d38c9..2e0feb8 100755 --- a/docker/unified/install-whisper.sh +++ b/docker/unified/install-whisper.sh @@ -31,7 +31,7 @@ if [ "$BACKEND" = "cuda" ]; then CMAKE_FLAGS+=( -DGGML_CUDA=ON -DGGML_VULKAN=OFF - "-DCMAKE_CUDA_ARCHITECTURES=${CMAKE_CUDA_ARCHITECTURES:-60;61;75;86;89}" + "-DCMAKE_CUDA_ARCHITECTURES=${CMAKE_CUDA_ARCHITECTURES:?CMAKE_CUDA_ARCHITECTURES must be set}" "-DCMAKE_CUDA_FLAGS=-allow-unsupported-compiler" "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath-link,/usr/local/cuda/lib64/stubs -lcuda" "-DCMAKE_SHARED_LINKER_FLAGS=-Wl,-rpath-link,/usr/local/cuda/lib64/stubs -lcuda"