0Pricing
CUDA Academy · Урок

Циклы с шагом, равным размеру сетки

Обрабатывайте массивы, превышающие размер сетки.

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

Когда массив огромен

Иногда данных намного больше, чем запущенных потоков. Один поток на элемент уже не подходит, поэтому каждый поток должен обрабатывать несколько элементов.

У сетки есть размер

Общее число потоков — это размер сетки: число блоков, умноженное на число потоков на блок. Этот шаг определяет расстояние между элементами, обрабатываемыми одним потоком.

int stride = blockDim.x * gridDim.x;

Начало, затем шаг

Каждый поток начинает со своего обычного глобального индекса, затем снова и снова перескакивает вперёд на размер сетки, пока не выйдет за пределы массива.

Цикл с шагом сетки

Этот цикл реализует весь шаблон: начать с i, увеличивать на шаг и остановиться на n. Массив любого размера будет охвачен независимо от числа запущенных потоков.

for (int i = blockIdx.x * blockDim.x + threadIdx.x;
     i < n;
     i += stride) {
    out[i] = a[i] + b[i];
}

Встроенная защита

Обратите внимание: условие цикла i < n само является проверкой границ. Потоки, начинающие за концом массива, просто не входят в цикл.

Как распределяется работа

При шаге, равном 4 потокам, поток 0 обрабатывает элементы 0, 4, 8, а поток 1 — 1, 5, 9. Работа чередуется, а не делится на последовательные части.

Чередование помогает объединению обращений

Поскольку соседние потоки на каждом шаге обращаются к соседним адресам, доступ остаётся объединённым, а пропускная способность памяти — высокой.

Отделите потоки от данных

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

Настраивайте под оборудование

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

Работает и для маленьких массивов

Если n меньше размера сетки, каждый поток выполняет тело цикла не более одного раза. Шаблон плавно сводится к простому случаю.

Надёжное значение по умолчанию

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

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

Определите шаг.

Итоги

Вы изучили цикл с шагом сетки: он начинается с глобального индекса и увеличивает его на blockDim.x * gridDim.x, пока i не достигнет n. Теперь одно ядро обрабатывает массив любого размера. 🎉

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

Урок «Циклы с шагом, равным размеру сетки» бесплатный?

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