From cd4f3114d66bfd625fd08653a27414c41b79c825 Mon Sep 17 00:00:00 2001 From: Evgeny Demchenko Date: Wed, 3 Jun 2026 07:51:57 +0100 Subject: [PATCH] =?UTF-8?q?docker:=20CUDA=2012.4=20builder=20+=20runtime?= =?UTF-8?q?=20+=20PTX=20forward-compat=20=D0=B4=D0=BB=D1=8F=20Pascal+Black?= =?UTF-8?q?well?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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'. --- .dockerignore | 9 +++++++++ docker/Dockerfile | 19 +++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..228e9ae --- /dev/null +++ b/.dockerignore @@ -0,0 +1,9 @@ +build/ +build-*/ +cmake-build-*/ +*.o +*.so +*.a +.vscode/ +.idea/ +docs/ diff --git a/docker/Dockerfile b/docker/Dockerfile index 32b73e4..fde1a76 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -18,7 +18,10 @@ # Лицензия: LGPL-2.1+ # ── 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 \ build-essential cmake git \ @@ -31,17 +34,25 @@ COPY . . 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 && \ 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) # ── 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 \ - libpng16-16t64 libfreetype6 \ + libpng16-16 libfreetype6 \ libzmq5 libjson-c5 libmosquitto1 \ fonts-dejavu-core \ && rm -rf /var/lib/apt/lists/*