Files
cuframes/docker/Dockerfile.dev
T
gx ad543054fc spike-v2: validate sync semantics (R1/R2 architectural review)
Architectural review (2026-05-15) указал что cudaStreamSynchronize-only на
producer-side не достаточен для cross-process visibility — NVIDIA Programming
Guide §3.2.8 требует cudaIpcEventHandle_t. Phase 0 PoC v1 не проверял этот
случай из-за cudaMemcpy который имеет implicit barriers.

spike-v2 воспроизводит правильный сценарий: consumer запускает verify_kernel
на ОТДЕЛЬНОМ stream'е (real-world use case — PyTorch / OpenCV CUDA), pattern
включает row-based component для отлова partial-frame torn.

Запуск 4 scenarios × 1500/600 frames:
  A-fhd60 (stream sync, FHD@60):  0 torn, p99=267µs, max=14.7ms
  B-fhd60 (event  sync, FHD@60):  0 torn, p99=344µs, max=5.2ms
  A-4k30  (stream sync, 4K@30):   0 torn, p99=606µs, max=4.4ms
  B-4k30  (event  sync, 4K@30):   0 torn, p99=437µs, max=3.7ms

Все 4 показали 0 torn frames. R1 на single-host single-GPU фактически
не воспроизводится — но NVIDIA contractually не гарантирует это.

Decision: events as default (R1/R2 resolved). Architecture.md §6.6 закрыт.
Tradeoff: mean latency +20µs, max latency в 3× ниже (predictable tail) +
future-proof для multi-GPU.

Также Dockerfile.dev — апдейт CUDA до 13.0.3 (12.4 не существует с devel-ubuntu24.04).

Связано с PR review: R1, R2, R3 (R3, R4 — в следующих коммитах).
2026-05-14 23:00:13 +01:00

74 lines
2.4 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Dev-окружение для cuframes — содержит CUDA toolkit (с nvcc), build tools,
# линкеры/анализаторы. GPU прокидывается через `--gpus all` на runtime.
#
# Base: nvidia/cuda devel-image c CUDA 13.0 + cuDNN на Ubuntu 24.04.
# devel-вариант (не runtime) — нужен для компиляции CUDA-кода (nvcc, headers).
# CUDA 13.x — текущая stable линейка с поддержкой sm_120 (Blackwell, RTX 5090).
FROM nvidia/cuda:13.0.3-cudnn-devel-ubuntu24.04
# Не запрашивать tzdata interactive при apt
ENV DEBIAN_FRONTEND=noninteractive
# Build tools
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
clang \
clang-format \
clang-tidy \
cmake \
ninja-build \
pkg-config \
gcc-12 g++-12 \
gdb \
git \
nasm \
yasm \
libtool \
autoconf \
automake \
# Системные libs (для FFmpeg build в Phase 2 и для examples)
libavcodec-dev \
libavformat-dev \
libavutil-dev \
libavfilter-dev \
libswscale-dev \
libssl-dev \
# Python для bindings (Phase 3)
python3 \
python3-dev \
python3-pip \
# Profiling / debug tools
valgrind \
strace \
ltrace \
linux-tools-common \
# Просмотр и работа в контейнере
vim \
curl \
wget \
less \
htop \
sudo \
&& rm -rf /var/lib/apt/lists/*
# Симлинки для удобства (CUDA устанавливает специфичные пути)
ENV CUDA_HOME=/usr/local/cuda
ENV PATH=${CUDA_HOME}/bin:${PATH}
ENV LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH}
# Поднятие лимита открытых файлов для Unix sockets + eventfd (cuframes producer
# может держать N consumers × M eventfds)
RUN echo '* soft nofile 65536' >> /etc/security/limits.conf && \
echo '* hard nofile 65536' >> /etc/security/limits.conf
# Working directory совпадает с bind-mount из docker-compose
WORKDIR /workspace
# Default shell — bash с history-file под /workspace/.bash_history (persistent)
ENV HISTFILE=/workspace/.bash_history
SHELL ["/bin/bash", "-c"]
CMD ["/bin/bash"]