CUDA Academy · Урок

Выбор числа потоков в блоке

Разумные значения по умолчанию, например 128 и 256.

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

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

Практическое решение

При запуске ядра необходимо выбрать число потоков на блок. Этот небольшой выбор действительно влияет на производительность. 🎚️

Кратные 32

GPU выполняет потоки группами по 32, называемыми варпами, поэтому всегда выбирайте число, кратное 32. Нечётные размеры приводят к потере дорожек в неполном варпе.

Безопасные значения по умолчанию

Хороший начальный выбор — 128 или 256 потоков на блок. Эти числа кратны 32 и хорошо работают почти на любом GPU.

int threadsPerBlock = 256;

Жёсткий верхний предел

На современных GPU блок может содержать не более 1024 потоков. Если запросить больше, запуск завершится ошибкой.

Слишком мало потоков

Очень маленькие блоки, например на 32 потока, могут недостаточно загружать GPU. У планировщика остаётся меньше варпов, которыми можно скрывать задержку памяти.

Слишком много потоков

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

Вычисление числа блоков

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

int blocks = (n + threadsPerBlock - 1) / threadsPerBlock;

Всегда добавляйте проверку границ

Из-за округления появляются несколько лишних потоков. Защитите ядро условием if, чтобы они не обращались к памяти за пределами массива.

if (i < n) out[i] = a[i] + b[i];

Позвольте CUDA предложить размер

Можно автоматически запросить у CUDA подходящий размер блока с помощью помощника оценки загрузки, а затем настроить его значение.

cudaOccupancyMaxPotentialBlockSize(&grid, &block, kernel);

Измеряйте, а не угадывайте

Оптимальный размер зависит от ядра и GPU. Начните с 256, затем сравните производительность нескольких значений и оставьте самое быстрое.

Практическое правило

Для большинства учебных ядер 256 потоков на блок и округлённое вверх число блоков — надёжная и быстрая отправная точка.

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

Выберите наиболее обоснованное число потоков на блок.

Повторение: выбор размера блоков

Вы научились выбирать размер блоков: использовать числа, кратные 32, брать по умолчанию 256, не превышать 1024, округлять число блоков вверх и сравнивать производительность. 🏁

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

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

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

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

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

Урок «Выбор числа потоков в блоке» бесплатный?

Да — полный текст урока «Выбор числа потоков в блоке» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.

Чему я научусь в уроке «Выбор числа потоков в блоке»?

Разумные значения по умолчанию, например 128 и 256. Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать CUDA Academy?

Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Выбор числа потоков в блоке»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке CUDA Academy?

Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Иерархия потоков
  2. threadIdx, blockIdx, blockDim
  3. Зачем нужны блоки
  4. Выбор числа потоков в блоке
← Назад к CUDA Academy