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-сервер