Перейти к содержимому
ПереводыMeta, NVIDIA, Mistral, Amazon

Accelerated Computing Hub, часть 1: путеводитель

Карта открытого учебного репозитория NVIDIA по программированию GPU: руководство Accelerated Python, курсы CUDA Python и CUDA C++, CUDA Tile, nvmath-python, Warp — что из этого нужно LLM-инженеру, в каком порядке проходить и как запускать на своих видеокартах.

Accelerated Computing Hub — открытый репозиторий NVIDIA с учебными материалами по вычислениям на GPU: руководства, ноутбуки с упражнениями и решениями, слайды лекций и готовые Docker-образы. Всё это можно проходить самостоятельно, бесплатно и без регистрации.

Страница — путеводитель по репозиторию (ветка main, коммит c16da25). Вводные материалы переведены полностью:

  • Зачем LLM-инженеру. Почти всё время обучения и инференса LLM уходит в ядра на GPU: умножение матриц, внимание, обмен данными между картами. Этот репозиторий показывает, из чего такие ядра сделаны, — без C++ на старте: через CuPy, Numba и новый CUDA Tile.
  • Ступень курса. 5.7 «GPU изнутри» и 7.1 «Инференс». Основу (части 2–3) можно читать и раньше, после NumPy.
  • Уровень. Нужен уверенный Python и NumPy. Для треков по CUDA C++ и Standard Parallelism — C++.
  • Железо. Нужна видеокарта NVIDIA. Ваши RTX 4080 подходят ко всем одиночным ноутбукам; треки, где в README указаны «4xL4 или 2xL4», рассчитаны на несколько GPU — у вас их четыре.
flowchart TB
H["accelerated-computing-hub"] --> UG["Accelerated_Python_User_Guide/<br/>руководство: 10 глав + multi-GPU"]
H --> T["tutorials/"]
T --> AP["accelerated-python/<br/>CUDA Python: CuPy, Numba, cuDF,<br/>CCCL, CUDA Tile, MPI, JAX"]
T --> CPP["cuda-cpp/<br/>современный CUDA C++"]
T --> SP["stdpar/<br/>параллелизм ISO C++ и Fortran"]
T --> NM["nvmath-python/"]
T --> WP["warp/<br/>симуляции и графика"]
T --> GD["gpu-deployment/<br/>свой GPU в облаке"]
H --> RS["resources/<br/>статьи и примеры кода"]
H --> EV["events/<br/>код к докладам GTC"]
Основные папки репозитория
ГлаваО чёмУрок курсаВажность
1. GPU Computing BasicsCPU и GPU: сильные и слабые стороны, SM, виды GPU (перевод)5.7★★★
2. Brief Intro to CUDAЯдра, потоки, варпы, блоки, сетки, иерархия памяти (перевод)5.7★★★
3. Python on the GPUGIL, почему NumPy быстрый, CuPy как замена NumPy (перевод)0.3★★
4. Scientific Computing with CuPyCuPy подробно5.7★★
5. CUDA Kernels with NumbaСвои ядра на Python: @cuda.jit, потоки и блоки (перевод)Triton★★★
6. Intro to nvmath-pythonМатематические библиотеки CUDA-X из Python—★
7–9. cuDF, cuML, cuGraphТаблицы, классический ML и графы на GPU (RAPIDS)2.4★
10. Developer ToolsПрофилировщики и отладчики5.7★★
cuda.core, cuda.cccl.parallelНовые «питоничные» API CUDA и параллельные алгоритмы—★
NVSHMEM4Py, NCCLОбмен данными между GPU, свои коллективные операции (AlltoAllV)4 GPU★★

Ноутбуки пронумерованы по темам; у каждого упражнения есть решение в папке solutions/. Из них собраны «силлабусы» — готовые программы курсов разной длины.

БлокНоутбукиО чёмВажность
Fundamentals00–07Что такое GPU (перевод урока 00), NumPy, SVD, переход на CuPy (перевод урока 03), пространства памяти, асинхронность, cuda.core: устройства, потоки команд, память★★★
Libraries20–28cuDF и cudf.pandas, cuML, CCCL (свои алгоритмы), nvmath-python (слияние ядер, масштабирование), pynvml (мониторинг GPU)★★
Kernels40–47Свои ядра на Numba: копирование, гистограмма по книге, размытие по Гауссу; CUDA Tile на Python: сложение векторов, умножение матриц, транспонирование, функции активации★★★
Distributed60–62mpi4py, Dask, уравнение теплопроводности на нескольких GPU★★
Applications80–87Одна задача (уравнения мелкой воды) на NumPy, JAX, PyOMP, nanobind, CUB, mpi4py — и сравнение скоростей★

Готовые программы (папка notebooks/syllabi/):

  • CUDA Python — CuPy, cuDF, CCCL и ядра, 8 часов: ноутбуки 01, 03, 05, 06, 20, 23, 40, 41.
  • CUDA Python — CuPy, SIMT и Tile, 8 часов: основы CuPy и ядер на Numba, затем CUDA Tile (ноутбуки 44–47).
  • CUDA Python — cuda.core и CCCL, 2 часа.
  • CUDA Tile — отдельный курс по тайловому программированию.
  • PyHPC — NumPy, CuPy и mpi4py, 4 часа и PyHPC — 2 дня (ядра, MPI, JAX, OpenMP, связка с C++).
КурсО чёмКому
tutorials/cuda-cpp — Fundamentals of Accelerated Computing with Modern CUDA C++Три части: параллельные алгоритмы, асинхронность и потоки команд (Nsight, NVTX, закреплённая память), свои ядра (гистограмма, синхронизация, разделяемая память, кооперативные группы). Есть лекции на YouTubeТем, кто знает C++ и хочет понять ядра «по-настоящему»
tutorials/stdparУскорение HPC-кода средствами стандартного C++ и FortranВычислительная физика, не LLM
tutorials/nvmath-pythonМатематика CUDA-X из Python: совместимость с CuPy и PyTorch, слияние ядер, stateful API, масштабированиеДля оптимизации собственных вычислений
tutorials/warpNVIDIA Warp — симуляции и графика на PythonРобототехника, физика
tutorials/gpu-deploymentКак получить GPU в облаке (Brev), программное окружение, пакеты Python с CUDA, мониторингЕсли своих видеокарт нет