CUDA Academy · Урок

Измерение эффективной пропускной способности

Сравнивайте достигнутую и пиковую пропускную способность.

Урок 4 из 413 шагов

«Измерение эффективной пропускной способности» — бесплатный урок CUDA Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.

От теории к числам

Объединение доступа помогает, но это следует подтвердить измерениями. Метрика, которая показывает реальную картину, — эффективная пропускная способность Вашего ядра в гигабайтах в секунду.

Что означает «эффективная»

Эффективная пропускная способность — это количество байтов, действительно необходимых Вашему ядру, делённое на затраченное время. Она отражает полезную работу, а не передачу лишних строк.

Простая формула

Сложите число прочитанных и записанных байтов, затем разделите результат на прошедшее время в секундах. Это отношение и есть достигнутая пропускная способность.

double gbps = (bytesRead + bytesWritten) / seconds / 1e9;

Измеряйте время с помощью событий

Используйте события CUDA, чтобы отметить начало и конец выполнения ядра. Они точно измеряют работу GPU, не добавляя шум от таймеров на стороне CPU.

cudaEventRecord(start);
myKernel<<<g, b>>>(...);
cudaEventRecord(stop);

Считывайте прошедшее время

После синхронизации с событием остановки запросите у CUDA разницу во времени. Результат возвращается в миллисекундах, поэтому перед подстановкой в формулу разделите его на тысячу.

float ms;
cudaEventElapsedTime(&ms, start, stop);

Знайте объём данных в байтах

Для C = A + B по n значений с плавающей точкой Вы читаете 2n и записываете n, то есть перемещаете 3n значений. Умножьте это число на четыре, чтобы получить объём перемещённых байтов.

size_t bytes = 3 * n * sizeof(float);

Найдите пиковое значение

Для каждого GPU указывается теоретическая пиковая пропускная способность. Ваше эффективное значение имеет смысл только как доля этого предела.

Отношение эффективности

Разделите эффективную пропускную способность на пиковую, чтобы получить процент. Ядра, ограниченные пропускной способностью памяти и использующие объединённый доступ, часто достигают 70–90 процентов от пикового значения; при доступе с шагом результат намного хуже.

Сначала выполните прогрев

Первый запуск оплачивает единовременные затраты на настройку. Выполните ядро один раз для прогрева, затем усредните результаты нескольких измерений, чтобы получить стабильное число.

Пусть профилировщики подтвердят результат

Nsight Compute напрямую показывает пропускную способность памяти, поэтому Вы можете проверить свои вычисления. Он также отмечает лишние байты, возникающие из-за плохого объединения доступа. 🔧

Используйте это для принятия решений

Низкое отношение означает, что узким местом является память, поэтому сосредоточьтесь на объединении доступа и размещении данных. Высокое отношение означает, что источник ускорения следует искать в другом месте.

Быстрая проверка

Вычислите эффективную пропускную способность.

Повторение

Теперь Вы умеете измерять эффективную пропускную способность с помощью событий, сравнивать её с пиковой и использовать это отношение, чтобы определить, является ли память узким местом. 🎉

Можно начать бесплатно

Изучай C++ с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

Часто задаваемые вопросы

Урок «Измерение эффективной пропускной способности» бесплатный?

Да — полный текст урока «Измерение эффективной пропускной способности» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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 — локальная установка не требуется.

Все уроки этого курса

  1. Что такое транзакция памяти
  2. Согласованные и страйдовые чтения
  3. Массив структур и структура массивов
  4. Измерение эффективной пропускной способности
← Назад к CUDA Academy