Проблема повторного использования данных
Почему наивные ядра повторно читают глобальную память.
«Проблема повторного использования данных» — бесплатный урок CUDA Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
The Hidden Cost
A kernel can be correct yet slow because it keeps fetching the same data from slow global memory over and over. 🐢
Memory Is the Bottleneck
On the GPU, arithmetic is cheap but reaching global memory is expensive. Many kernels wait on memory far more than they compute.
Data Reuse Defined
Data reuse means one value loaded from global memory is used by many computations instead of being read again each time.
A Naive Stencil
Picture blurring an image. Each output pixel averages its neighbors, so every input pixel gets read by several different threads.
out[i] = (in[i-1] + in[i] + in[i+1]) / 3.0f;Counting the Reads
In that blur, the value in[i] is read by threads i-1, i, and i+1. The same byte travels across the slow PCIe-fed bus three times.
Redundancy Adds Up
With a wider window or a 2D grid, each element may be re-read dozens of times. This redundant traffic dominates the runtime.
Bandwidth Is Finite
Global memory has a fixed peak bandwidth. Reading the same data repeatedly wastes that budget on bytes you already had.
Compute Sits Idle
While warps stall waiting on repeated global loads, the math units sit idle. You paid for cores you are barely using. 😴
Arithmetic Intensity
Arithmetic intensity is the ratio of math operations to bytes moved. Low intensity means memory, not compute, limits you.
The Goal: Read Once
The fix is to load each needed value once into fast on-chip storage, then let many threads reuse it from there.
Enter Shared Memory
That fast on-chip storage is shared memory. Staging data there is the foundation of every tiling optimization ahead.
Quick Check
Why is a naive stencil kernel often slow?
Recap
Naive kernels re-read shared data from global memory, wasting bandwidth and stalling compute. Tiling exists to load once and reuse. ✅
Часто задаваемые вопросы
Урок «Проблема повторного использования данных» бесплатный?
Да — полный текст урока «Проблема повторного использования данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.
Чему я научусь в уроке «Проблема повторного использования данных»?
Почему наивные ядра повторно читают глобальную память. Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CUDA Academy?
Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Проблема повторного использования данных»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CUDA Academy?
Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Проблема повторного использования данных
- Шаблон «загрузка — синхронизация — вычисление»
- Трафареты и скользящие окна
- Обработка крайних фрагментов