docker: CUDA 12.4 builder + runtime + PTX forward-compat для Pascal+Blackwell

CUDA 13 убрал sm_61 (Pascal), CUDA 12.4 убрал sm_120 (Blackwell).
Sweet spot: CUDA 12.4 с PTX-only для sm_89, JIT compile на Blackwell.

CMAKE_CUDA_ARCHITECTURES=61-real;75-real;86-real;89-real;89-virtual
покрывает Pascal/Turing/Ampere/Ada native + PTX для forward JIT.

Ubuntu 22.04 jammy glibc 2.35 forward-compatible с host 24.04 noble.

.dockerignore исключает build/ (от хостовой cmake) — иначе
docker build падает с 'CMakeCache directory mismatch'.
This commit is contained in:
2026-06-03 07:51:57 +01:00
parent b8661f4017
commit cd4f3114d6
2 changed files with 24 additions and 4 deletions
+9
View File
@@ -0,0 +1,9 @@
build/
build-*/
cmake-build-*/
*.o
*.so
*.a
.vscode/
.idea/
docs/
+15 -4
View File
@@ -18,7 +18,10 @@
# Лицензия: LGPL-2.1+ # Лицензия: LGPL-2.1+
# ── Builder ────────────────────────────────────────────────────────────── # ── Builder ──────────────────────────────────────────────────────────────
FROM nvidia/cuda:12.6.0-devel-ubuntu24.04 AS builder # CUDA 12 (не 13) — нужен для sm_61 (Pascal GTX 1050) в production.
# CUDA 13 deprecated Pascal. Ubuntu 22.04 jammy glibc 2.35 forward-compat
# на хосте 24.04 noble (glibc 2.39).
FROM nvidia/cuda:12.4.1-devel-ubuntu22.04 AS builder
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake git \ build-essential cmake git \
@@ -31,17 +34,25 @@ COPY . .
RUN git submodule update --init --recursive || true RUN git submodule update --init --recursive || true
# CUDA architectures: production targets compiled to real binary,
# а sm_89-virtual генерит PTX для forward JIT на newer GPU (Blackwell sm_120
# = JIT на старте при первом kernel'е). Это избавляет нас от требования
# CUDA 12.8+ который sm_120 native. CUDA 12.4 здесь — sweet spot между
# Pascal (sm_61) и Ada (sm_89).
RUN mkdir -p build && cd build && \ RUN mkdir -p build && cd build && \
cmake -DCMAKE_BUILD_TYPE=Release \ cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CUDA_ARCHITECTURES="61;75;86;89;120" \ -DCMAKE_CUDA_ARCHITECTURES="61-real;75-real;86-real;89-real;89-virtual" \
.. && \ .. && \
make -j$(nproc) make -j$(nproc)
# ── Runtime ────────────────────────────────────────────────────────────── # ── Runtime ──────────────────────────────────────────────────────────────
FROM nvidia/cuda:12.6.0-runtime-ubuntu24.04 AS runtime # runtime variant включает libcudart12 (нужен grid_record/simple_record).
FROM nvidia/cuda:12.4.1-runtime-ubuntu22.04 AS runtime
# Ubuntu 22.04 jammy: package names иные чем noble (libpng16-16 без t64).
# libcudart12 уже в runtime image; здесь только наши user-space deps.
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
libpng16-16t64 libfreetype6 \ libpng16-16 libfreetype6 \
libzmq5 libjson-c5 libmosquitto1 \ libzmq5 libjson-c5 libmosquitto1 \
fonts-dejavu-core \ fonts-dejavu-core \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*