Измерение ускорения
Сравните производительность наивного варианта и варианта с фрагментами.
«Измерение ускорения» — бесплатный урок CUDA Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Prove the Win
You built a tiled kernel, but how much faster is it really? Measuring turns a guess into a number you can trust. 📊
Time on the GPU's Clock
Use CUDA events to time kernels. They sit in the GPU stream and measure exactly when work starts and finishes.
cudaEvent_t start, stop;
cudaEventCreate(&start);
cudaEventCreate(&stop);Bracket the Kernel
Record an event before the launch and another after, then synchronize so the timing actually waits for the GPU to finish.
cudaEventRecord(start);
matmul<<<g,b>>>(...);
cudaEventRecord(stop);
cudaEventSynchronize(stop);Read the Elapsed Time
Ask for the gap between events in milliseconds. That single number is your kernel's measured runtime.
float ms;
cudaEventElapsedTime(&ms, start, stop);Warm Up First
The very first launch pays one-time setup costs. Run a warm-up kernel before timing so you measure steady-state speed, not startup.
Average Several Runs
One sample is noisy. Time the kernel several times and take the average for a stable, honest result.
Compute Speedup
Speedup is simply naive time divided by tiled time. A value of 4x means the tiled kernel ran four times faster.
float speedup = naive_ms / tiled_ms;Think in GFLOPS
Matmul does about 2 * N^3 floating-point operations. Divide that by your time to report performance in GFLOPS, the standard yardstick.
double gflops = (2.0*N*N*N) / (ms * 1e6);Why Tiling Wins
The speedup comes from slashing global memory traffic. Shared-memory reuse keeps the cores fed instead of waiting on slow loads.
Always Verify Correctness
A fast wrong answer is useless. Compare your GPU result against a CPU reference before you celebrate the speedup. ✅
Know Your Ceiling
Even tiled matmul trails hand-tuned cuBLAS. Knowing the gap tells you when to optimize further and when to call a library.
Quick Check
Recall the right tool for timing GPU kernels.
Recap
You timed with CUDA events, warmed up, averaged, computed speedup and GFLOPS, and verified correctness. You now prove your optimizations. 🏁
Часто задаваемые вопросы
Урок «Измерение ускорения» бесплатный?
Да — полный текст урока «Измерение ускорения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.
Чему я научусь в уроке «Измерение ускорения»?
Сравните производительность наивного варианта и варианта с фрагментами. Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CUDA Academy?
Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Измерение ускорения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CUDA Academy?
Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Наивное ядро умножения матриц
- Разбиение скалярного произведения на фрагменты
- Цикл по этапам обработки фрагментов
- Измерение ускорения