GPU Hardware

CUDA

Параллельная вычислительная платформа NVIDIA для программирования GPU, стандарт в ML.

Что такое CUDA

CUDA (Compute Unified Device Architecture) — программно-аппаратная платформа NVIDIA для выполнения вычислений общего назначения на GPU. Разработана в 2006 году и стала стандартом де-факто для ML: PyTorch, TensorFlow, JAX, vLLM и практически все ML-фреймворки работают поверх CUDA.

CUDA состоит из нескольких уровней: аппаратная поддержка в GPU, драйвер CUDA, runtime-библиотеки (cuDNN, cuBLAS, NCCL) и языковые расширения C++ (__global__, __device__ и т.д.).

CUDA в контексте ML

Большинству ML-инженеров не нужно писать CUDA-код напрямую. PyTorch автоматически распределяет тензорные операции на GPU через CUDA-ядра. Однако понимание CUDA важно для:

  • Диагностики ошибок (CUDA out of memory, версии драйвера)
  • Понимания, почему PyTorch нужен pin_memory, non_blocking, cuda.synchronize()
  • Работы с кастомными расширениями (Triton, torch.compile)
  • Выбора совместимой версии PyTorch для конкретного CUDA

Версии CUDA

CUDA-версия определяется драйвером, установленным на хосте. PyTorch требует совместимой версии.

# Проверить версию CUDA и драйвера
nvidia-smi   # → Driver Version: 545.xx, CUDA Version: 12.3
nvcc --version  # версия CUDA Toolkit

# Установить PyTorch для CUDA 12.1
pip install torch --index-url https://download.pytorch.org/whl/cu121

Правило совместимости: PyTorch, собранный с CUDA 12.1, работает на драйвере, поддерживающем CUDA 12.1 и выше.

cuDNN и cuBLAS

  • cuDNN — библиотека примитивов для нейросетей (свёртки, нормализация, attention). Большинство операций PyTorch использует её
  • cuBLAS — высокопроизводительная BLAS для матричных умножений на GPU
  • NCCL — коллективные коммуникации для multi-GPU (AllReduce, AllGather)

Связанные термины

  • GPU — аппаратная база CUDA
  • Tensor Core — аппаратные блоки, используемые CUDA для матричных операций
  • NVIDIA H100 — GPU с поддержкой CUDA 12.x и FP8
  • PyTorch — основной ML-фреймворк поверх CUDA

Готовы запустить GPU-задачу?

Запустить GPU-сервер