CUDA: основы программирования на GPU

Программирование GPU на CUDA: модель памяти, ядра, потоки и блоки, оптимизация вычислений. Разборы с полным кодом и замерами производительности — от первого запуска до практических приёмов ускорения.

CUDA

cuBLAS и cuFFT: готовые GPU-библиотеки вместо своих ядер

Введение Для широкого класса задач — линейной алгебры (умножение матриц, решение систем уравнений) и преобразования Фурье — NVIDIA предоставляет высокооптимизированные библиотеки cuBLAS и cuFFT, реализующие эти операции на…

CUDA

CUDA Unified Memory: упрощённое управление памятью CPU/GPU

Введение Традиционная модель CUDA требует явного управления двумя отдельными областями памяти — host (CPU) и device (GPU) — с явным копированием данных между ними. Unified Memory (управляемая память)…

CUDA

Интеграция CUDA-буферов с QImage/QPixmap для GPU-обработки изображений в Qt

Введение При построении Qt-приложений с GPU-ускоренной обработкой изображений (фильтры, свёртки, цветокоррекция) возникает задача эффективной передачи данных между CUDA-буферами на GPU и Qt-классами для отображения, такими как QImage. В…

CUDA

CUDA Graphs: снижение оверхеда запуска при повторяющихся вычислениях

Введение Когда приложение многократно выполняет одну и ту же последовательность операций CUDA (например, серию ядер в цикле обучения нейросети или итеративном численном алгоритме), накладные расходы CPU на запуск…

CUDA

CUDA + Thrust: высокоуровневые алгоритмы вместо ручных ядер

Введение Не всегда необходимо писать собственные CUDA-ядра вручную — для многих стандартных операций (сортировка, поиск, свёртка, преобразование коллекций) есть библиотека Thrust, которая предоставляет интерфейс, похожий на STL, но…

CUDA

Оптимизация CUDA-ядер: coalesced memory access и occupancy

Введение Написать корректное CUDA-ядро — относительно простая задача; написать эффективное ядро, использующее реальную пропускную способность GPU, требует понимания двух ключевых концепций: coalesced memory access (объединённый доступ к памяти)…