CUDA

CUDA — платформа NVIDIA для параллельных вычислений на GPU

Раздел
Инструменты
Сокращ.
Compute Unified Device Architecture
Обновлено
18.05.26

CUDA (Compute Unified Device Architecture) — платформа и язык параллельных вычислений от NVIDIA. Это слой, через который PyTorch, TensorFlow, Stable Diffusion и ComfyUI обращаются к видеокарте. CUDA даёт NVIDIA монополию на AI: альтернативы (ROCm у AMD, MPS у Apple, Vulkan) работают, но хуже. Когда говорят «модель работает на GPU» — это почти всегда означает «работает через CUDA на NVIDIA».

Коротко

Коротко. CUDA — это интерфейс, через который AI-программы говорят с видеокартой NVIDIA. PyTorch и TensorFlow — это всего лишь обёртки над CUDA-вызовами. Стандарт с 2007 года, не имеет полноценных конкурентов. AMD и Apple предлагают альтернативы (ROCm, MPS), но 95% AI-разработки идёт на CUDA. Поэтому для AI-задач выбирают NVIDIA: совместимость, оптимизации, документация.

Что это такое

Декабрь 2022-го. Hugging Face публикует Stable Diffusion. Инструкция: «pip install diffusers torch, запустить скрипт». Владельцы NVIDIA-карт ставят и через 30 секунд получают первую картинку. Владельцы AMD-карт три часа собирают ROCm, переключаются между Linux-дистрибутивами, патчат библиотеки. Кто-то справляется, кто-то нет.

Это и есть CUDA-монополия. Не потому что у NVIDIA лучшее железо (у AMD сравнимое), а потому что весь AI-софт по умолчанию написан под CUDA.

CUDA — это набор инструментов и API:

  • Драйвер NVIDIA — низкий уровень, ставится в систему.
  • CUDA Toolkit — компилятор nvcc, библиотеки cuBLAS, cuDNN, cuFFT.
  • CUDA Runtime API — то, что вызывают PyTorch и TensorFlow.
  • CUDA-язык — расширение C++ для написания GPU-кода (kernels).

Когда вы пишете model.cuda() в PyTorch — за кулисами это: проверка драйвера, выделение VRAM, копирование тензора через PCIe, постановка задачи в очередь CUDA-потоков. Всё это происходит за миллисекунды и спрятано за одной строкой.

История начинается в 2006-м. NVIDIA выпускает CUDA — первый язык, на котором GPU можно программировать как обычный процессор, а не только для рендеринга. Никто этого не оценил кроме физиков и биологов. Через 7 лет AlexNet выиграл ImageNet, написанный на CUDA. Через 14 лет — CUDA-монополия в индустрии стоимостью триллион долларов.

Как это работает

Архитектура CUDA-программы:

  1. Host (CPU) — обычный код на Python/C++.
  2. Device (GPU) — параллельный код, который выполняется на тысячах ядер одновременно.
  3. Память. Host и Device имеют свою память. Данные копируются через PCIe явно или скрыто.
  4. Kernels — функции, которые запускаются на GPU параллельно. У каждого вызова — индекс потока, по которому он знает, какую часть данных обрабатывать.

Когда PyTorch выполняет c = a + b, где a и b лежат в VRAM:

  • Python через PyTorch отправляет команду в CUDA Runtime.
  • CUDA ставит kernel add в очередь GPU.
  • GPU запускает kernel на 1024 потоках параллельно — каждый поток обрабатывает свои несколько чисел.
  • Результат остаётся в VRAM, готовый к следующей операции.

cuDNN и cuBLAS — оптимизированные библиотеки от NVIDIA, написанные вручную на CUDA для типовых операций: свёртка, перемножение матриц, attention. PyTorch не пишет всё с нуля — он вызывает функции этих библиотек, и за счёт этого работает быстро.

Пример на практике

Дизайнер устанавливает Stable Diffusion на RTX 4070. Ставит Python, делает pip install torch. Внутри установщика происходит вот что:

Installing torch (2.5.1+cu124)
  - downloading torch-2.5.1+cu124-cp310-win_amd64.whl (2.3 GB)
  - includes: CUDA 12.4 runtime, cuDNN 9.1, cuBLAS

Скачиваются 2,3 ГБ — большую часть составляют сами CUDA-библиотеки, потому что NVIDIA лицензирует их так, что PyTorch распространяет их вместе с собой. Это удобно: не нужно отдельно ставить CUDA Toolkit, всё уже внутри pip-пакета.

Запускает ComfyUI:

Total VRAM 12282 MB, total RAM 32687 MB
xformers version: 0.0.28
Set vram state to: NORMAL_VRAM
Device: cuda:0 NVIDIA GeForce RTX 4070

cuda:0 — первая (и единственная) видеокарта в системе. Если бы их было две, появилась бы и cuda:1. ComfyUI автоматически выбирает первую, можно явно указать через --cuda-device 1.

Тот же ComfyUI на Mac M2 Pro покажет другое:

Device: mps NVIDIA не обнаружено, используется Metal Performance Shaders

mps — Apple-аналог CUDA. Работает медленнее в 3–5 раз, плюс не все ноды совместимы.

С чем часто путают

  • CUDA и GPU — GPU это железо, CUDA — программный слой для общения с ним. На AMD-GPU CUDA нет, есть ROCm.
  • CUDA Cores и Tensor Cores — Cores это базовые вычислительные блоки. Tensor Cores — специализированные под матричные операции и FP16/BF16/FP8-форматы. Оба компонента общаются через CUDA.
  • CUDA Toolkit и CUDA Driver — драйвер ставится в систему (Windows Update / NVIDIA installer), нужен любому AI. Toolkit — для разработчиков, для запуска моделей сам по себе не обязателен (PyTorch носит свой).
  • CUDA и OpenCL — OpenCL это открытый стандарт параллельных вычислений, конкурент CUDA. Работает на всех GPU, но в AI используется редко из-за худших оптимизаций.
  • CUDA и DirectML — DirectML это Windows-API от Microsoft для AI на любых GPU. Альтернатива CUDA для AMD/Intel-карт под Windows.

Частые ошибки и заблуждения

  • «CUDA нужно отдельно скачивать перед установкой PyTorch». Нет. PyTorch 2.x распространяет CUDA-runtime внутри себя. Нужен только NVIDIA-драйвер.
  • «CUDA — это язык программирования». Не только. Это и язык (расширение C++), и библиотеки, и набор API. Большинство AI-разработчиков с CUDA-кодом напрямую не работают.
  • «Чем новее CUDA, тем быстрее». Не обязательно. Прирост скорости между версиями обычно 1–5%. Куда важнее версия драйвера и cuDNN.
  • «CUDA-программу можно запустить на AMD». В чистом виде — нет. Есть проект ZLUDA, который транслирует CUDA-вызовы в HIP для AMD; работает, но непредсказуемо.
  • «ROCm и CUDA — это одно и то же». ROCm от AMD пытается быть «CUDA-совместимым», но на практике многие вещи требуют отдельных портов. Stable Diffusion на ROCm работает, но через дополнительные обёртки.

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

  • GPU — само железо, для которого CUDA служит интерфейсом.
  • VRAMпамять видеокарты, управляемая через CUDA.
  • cuDNN — оптимизированная библиотека CUDA для нейросетей.
  • PyTorch / TensorFlow — фреймворки, работающие поверх CUDA.
  • ROCm — альтернатива CUDA от AMD.
  • MPS (Metal Performance Shaders) — альтернатива CUDA от Apple.
  • Tensor Cores — специализированные блоки GPU, доступные через CUDA.

Частые вопросы

Нужно ли отдельно устанавливать CUDA Toolkit перед PyTorch? В большинстве случаев нет. pip install torch тянет нужные CUDA-библиотеки. Toolkit ставят только разработчики, которые компилируют свои CUDA-kernels.

Какая версия CUDA нужна для Stable Diffusion в 2026? CUDA 12.1–12.6, в зависимости от версии PyTorch. ComfyUI и AUTOMATIC1111 обычно указывают совместимые сборки.

Можно ли запустить CUDA-программу на CPU? Нет. CUDA — это интерфейс к GPU. Без видеокарты программа упадёт с CUDA driver not found. Альтернатива — CPU-инференс через ONNX или llama.cpp.

Почему AMD не делает свой CUDA? Делает — это ROCm. Но он стартовал на 10 лет позже, поддерживает меньше карт, хуже совместим с фреймворками. К 2026-му ROCm прогрессирует, но всё ещё отстаёт.

Что такое compute capability? Версия CUDA-архитектуры конкретной видеокарты. RTX 4090 — 8.9, H100 — 9.0, RTX 50-серии — 10.0. Чем выше, тем больше новых фич (FP8, transformer engine).

Можно ли использовать CUDA через WSL2? Да. NVIDIA выпустила специальный драйвер для WSL2 в 2020-м. Многие AI-разработчики работают именно так: Windows для удобства, Linux-окружение для CUDA-совместимости.

Главное

CUDA — это слой, который превратил видеокарты NVIDIA в стандарт AI-вычислений. Это и API, и язык, и набор библиотек. PyTorch, TensorFlow, ComfyUI, llama.cpp — всё работает через CUDA на NVIDIA-карте. Альтернативы (ROCm, MPS, DirectML) существуют, но проигрывают по совместимости и оптимизациям. Когда выбираете GPU для AI, выбираете не просто железо, а доступ к экосистеме CUDA — отсюда и доминирование NVIDIA на рынке. Драйвер ставится один раз, дальше всё работает через pip install torch без дополнительных шагов.