Куда пропадают терафлопсы? Разбираем память GPU, Bank Conflicts и Pinned Memory
Описание
🔔 https://t.me/akhtyamov_base - подписывайтесь на Telegram-канал «Матчасть Ахтямова»: здесь больше про DevOps, ИИ и фундаментальную математику.
Вы купили мощную видеокарту на десятки терафлопс, написали параллельный код, запускаете... и он работает медленно. Почему? Потому что уперлись в «бутылочное горлышко» памяти. В 9 случаях из 10 ваш GPU не считает, он просто ждет данные из оперативной памяти.
Во второй лекции курса по CUDA мы лезем в архитектуру памяти видеокарт. Разбираем жизненный цикл потоков, учимся правильно замерять время (спойлер: обычный таймер покажет ноль) и выясняем, как легально «хакнуть» операционную систему, чтобы ускорить передачу данных.
⚡ В этом видео:
* Почему вызов ядра (Kernel) работает асинхронно и как правильно синхронизировать CPU и GPU .
* Математика пропускной способности: считаем гигабайты в секунду на примере RTX 3090.
* Обход правил ОС: что такое Pinned (Page-locked) память и как cudaHostAlloc ускоряет копирование, отключая виртуальную фрагментацию.
* Иерархия памяти CUDA: от медленной Global Memory до сверхбыстрых регистров и Shared Memory .
* Что такое Bank Conflicts в разделяемой памяти и как они убивают распараллеливание .
Атомарные операции (Atomics): почему они работают быстрее, чем мы думаем, и как NVIDIA спасает плохой код от дедлоков (__syncthreads).
⏳ Таймкоды:
00:00 - Вступление. Зачем замерять время на видеокарте?
02:50 - Жизненный цикл CUDA: синхронные и асинхронные вызовы (CPU vs GPU)
08:00 - Ошибка новичка: почему замер времени вокруг вызова ядра выдает 0 секунд?
11:20 - Оптимизация замеров: cudaEventSynchronize и хитрые барьеры
15:40 - Арифметика производительности: ожидание vs реальность (10^11 вместо 10^13 операций)
24:40 - Считаем пропускную способность памяти RTX 3090 (GDDR6X и 16N fetch)
30:20 - Главный инсайт: 85% времени GPU тратит на копирование данных, а не на математику
38:00 - Ускоряем шину: Pinned Memory (cudaHostAlloc) и обход виртуальной памяти ОС
46:40 - Иерархия кэшей: L1, L2 и почему размер кэшлинии GPU ровно 128 байт
53:00 - Разделяемая память (Shared Memory) и как читать спецификации архитектуры CUDA
01:01:20 - Bank Conflicts: как два потока могут заблокировать весь Warp
01:09:20 - Синхронизация потоков __syncthreads() и предсказательные вычисления на GPU
01:12:20 - Атомарные операции и почему сделать Deadlock на GPU сложнее, чем кажется
#cuda #gpu #nvidia #cplusplus #highload #оптимизация #программирование #видеокарта #память
Рекомендуемые видео


















