Введение Для широкого класса задач — линейной алгебры (умножение матриц, решение систем уравнений) и преобразования Фурье — NVIDIA предоставляет высокооптимизированные библиотеки cuBLAS и cuFFT, реализующие эти операции на…
Введение Традиционная модель CUDA требует явного управления двумя отдельными областями памяти — host (CPU) и device (GPU) — с явным копированием данных между ними. Unified Memory (управляемая память)…
Введение Оптимизация CUDA-кода «на глаз» — ненадёжный подход: интуиция о том, где находится узкое место, часто ошибочна. NVIDIA Nsight Systems и Nsight Compute — инструменты профилирования, которые дают…
Введение При построении Qt-приложений с GPU-ускоренной обработкой изображений (фильтры, свёртки, цветокоррекция) возникает задача эффективной передачи данных между CUDA-буферами на GPU и Qt-классами для отображения, такими как QImage. В…
Введение Когда приложение многократно выполняет одну и ту же последовательность операций CUDA (например, серию ядер в цикле обучения нейросети или итеративном численном алгоритме), накладные расходы CPU на запуск…
Введение CUDA API возвращает коды ошибок практически из каждого вызова, но в отличие от исключений в C++, эти ошибки не прерывают выполнение программы автоматически — если не проверять…
Введение Не всегда необходимо писать собственные CUDA-ядра вручную — для многих стандартных операций (сортировка, поиск, свёртка, преобразование коллекций) есть библиотека Thrust, которая предоставляет интерфейс, похожий на STL, но…
Введение Написать корректное CUDA-ядро — относительно простая задача; написать эффективное ядро, использующее реальную пропускную способность GPU, требует понимания двух ключевых концепций: coalesced memory access (объединённый доступ к памяти)…
Введение По умолчанию операции CUDA (запуск ядра, копирование памяти) выполняются в «default stream» — это означает, что операции в этом потоке исполнения GPU сериализуются друг за другом, даже…
Введение Производительность CUDA-кода в значительной степени определяется тем, как эффективно используется память — у GPU есть несколько физически разных видов памяти с очень разной латентностью, объёмом и областью…
Нравится qthelper.ru? 💚
Сайт живёт без пейволов и обязательной подписки. Если статьи помогают вам в работе — поддержите проект.