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:
@@ -0,0 +1,9 @@
|
|||||||
|
build/
|
||||||
|
build-*/
|
||||||
|
cmake-build-*/
|
||||||
|
*.o
|
||||||
|
*.so
|
||||||
|
*.a
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
docs/
|
||||||
+15
-4
@@ -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/*
|
||||||
|
|||||||
Reference in New Issue
Block a user