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/*