Железо и инфраструктура 24 просмотра

CUDA

Compute Unified Device Architecture

CUDA — платформа параллельных вычислений NVIDIA, включающая SDK, компилятор (nvcc) и runtime. Каждая GPU имеет Compute Capability (CC) — версию аппаратных возможностей, определяющую совместимость с CUDA Toolkit и ML-фреймворками.

Что такое CUDA

CUDA (Compute Unified Device Architecture) — проприетарная платформа NVIDIA для параллельных вычислений на GPU. Включает:

  • CUDA Toolkit — SDK с компилятором nvcc, библиотеками (cuBLAS, cuDNN, cuFFT) и профилировщиком
  • CUDA Runtime — API для запуска вычислений на GPU
  • CUDA Driver — низкоуровневый драйвер GPU

Compute Capability (CC)

Каждая GPU NVIDIA имеет версию Compute Capability — число вида X.Y (например, 8.9), определяющее аппаратные возможности чипа.

CC Архитектура Примеры GPU Ключевые возможности
7.0 Volta V100 Tensor Cores 1-го поколения
7.5 Turing T4, RTX 2080 INT8 Tensor Cores
8.0 Ampere A100 TF32, BF16 Tensor Cores, Sparsity
8.6 Ampere RTX 3090, A40 То же, но меньше SM
8.9 Ada Lovelace RTX 4090, L40S FP8 Tensor Cores
9.0 Hopper H100, H200 Transformer Engine, FP8
10.0 Blackwell B200, GB200 FP4, 5-е поколение Tensor Cores
12.0 Blackwell Ultra B300, GB300 Улучшенный NVLink

SM-коды и компиляция

Compute Capability транслируется в SM-код для компилятора nvcc:

# CC 8.0 → sm_80
nvcc -gencode arch=compute_80,code=sm_80 kernel.cu

# Несколько архитектур (fat binary)
nvcc -gencode arch=compute_70,code=sm_70 \\
     -gencode arch=compute_80,code=sm_80 \\
     -gencode arch=compute_90,code=sm_90 kernel.cu

Fat binary содержит код для нескольких архитектур. Размер бинарника растёт, но обеспечивает совместимость.

Жизненный цикл поддержки

NVIDIA постепенно прекращает поддержку старых архитектур:

  1. Supported — полная поддержка в текущем CUDA Toolkit
  2. Deprecated — работает, но будет удалена в следующих версиях
  3. Dropped — код не компилируется, GPU не поддерживается

Пример: Kepler (CC 3.x) поддерживался в CUDA 5-11, deprecated в CUDA 11, полностью удалён в CUDA 12. Maxwell (CC 5.x) deprecated в CUDA 12.

Это критично для ML: если PyTorch собран с CUDA 12, он не будет работать на Kepler GPU.

Совместимость с ML-фреймворками

Фреймворк Минимальный CC Рекомендуемый CC
PyTorch 2.x 3.7 (скоро 5.0) 7.0+ (Tensor Cores)
TensorFlow 2.x 3.5 7.0+
vLLM 7.0 8.0+ (BF16)
Flash Attention 2 8.0 8.0+
TensorRT 6.1 7.0+

Mixed Precision и CC

Tensor Cores (CC 7.0+) критичны для производительности mixed precision:

  • CC < 7.0 — mixed precision работает, но без аппаратного ускорения
  • CC 7.0-7.5 — FP16 Tensor Cores (2-8× ускорение)
  • CC 8.0+ — BF16 + TF32 (проще в использовании, нет проблем с overflow)
  • CC 8.9+ — FP8 (ещё 2× ускорение при инференсе)

CUDA vs ROCm

Параметр CUDA (NVIDIA) ROCm (AMD)
GPU GeForce, Tesla, Quadro Radeon, Instinct
Экосистема Огромная Растущая
ML-поддержка Полная PyTorch, частично
Аналог CC Compute Capability GFX version

Практические советы

  1. Проверка CC вашей GPU: nvidia-smi --query-gpu=compute_cap --format=csv
  2. При сборке PyTorch из исходников: укажите TORCH_CUDA_ARCH_LIST="7.0 8.0 9.0"
  3. Не собирайте для CC < 7.0 если не нужно — это замедляет компиляцию и увеличивает бинарник
  4. При аренде GPU для ML: выбирайте CC 8.0+ (Ampere и новее) для полной поддержки BF16 и Flash Attention

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

Является частью
Используется в

Попробуйте на практике

Арендуйте GPU и запустите ML-модели в Intelion Cloud

Начать работу