17. Вычисления на GPU: локальная память и рабочие группы | Параллельное программирование 2026
Курс "Параллельное программирование" специальность 09.03.04 "Программная инженерия", 3 курс. Про подготовку программистов в Институте iSpring здесь: https://ispring.institute/software-engineering Продолжаем разбираться в программировании на GPU и OpenCL и переходим от базовых принципов к реальной оптимизации вычислений. В этой лекции на примере умножения матриц посмотрим, почему простого переноса вычислений на GPU недостаточно для получения максимальной производительности и как организация памяти и потоков может ускорить программу в несколько раз. Сначала реализуем классическое параллельное умножение матриц, где каждый поток вычисляет один элемент результата. Затем разберём его главное узкое место — большое количество обращений к глобальной памяти — и перейдём к тайловому умножению матриц. Вы увидите, как рабочие группы потоков совместно загружают данные в локальную память, зачем внутри ядра нужен барьер, как потоки переиспользуют данные и почему правильно организованный доступ к памяти настолько сильно влияет на производительность GPU. На практических замерах сравним разные реализации умножения матриц на CPU и GPU и увидим, как правильный доступ к памяти помогает достичь ускорения в тысячу раз. Также разберём более продвинутые возможности OpenCL: — рабочие группы и локальная память — тайловое умножение матриц — синхронизацию потоков через барьер — In-order и Out-of-order очереди команд — события и графы зависимостей — асинхронное копирование данных и выполнение kernels — профилирование GPU-кода средствами OpenCL — Occupancy и загрузка Streaming Multiprocessor — влияние размера рабочей группы и расхода регистров на производительность — стоимость передачи данных между CPU и GPU — почему GPU ускоряет далеко не каждую задачу Главная идея этой лекции: быстрый GPU-код — это не просто много потоков. Производительность определяется тем, как организованы вычисления, доступ к памяти, синхронизация и передача данных между CPU и GPU. Если вы хотите понимать не только как запустить код на видеокарте, но и почему одна GPU-программа работает в несколько раз быстрее другой, эта лекция поможет разобраться в ключевых принципах оптимизации. Полезные ссылки Слайды и задачи по этому курсу: https://github.com/alexey-malov/pc Мой Telegram для связи с подписчиками: https://t.me/vivid_coding Поддержать меня на Boosty: https://boosty.to/vivid-bw Тайм-коды: 0:00 — Цифровые сигналы и их обработка 4:19 — Дискретизация, квантование, dithering 11:20 — Семплинг, теорема Котельникова 14:03 — Алиасинг и методы его устранения 21:15 — Частотный анализ и обработка изображений 31:45 — Частотное сжатие изображений В заставке использована композиция "Папа может в Си" музыкального коллектива "Научно-технический рэп" (https://vk.com/nii_rap) Во вступительной заставке используется шейдер "Enter The Matrix" https://www.shadertoy.com/view/cl3XRX (автор kishimisu).
Название:
17. Вычисления на GPU: локальная память и рабочие группы | Параллельное программирование 2026
Категория:
Разное