0Pricing
CUDA Academy · Урок

Запуск с тройными угловыми скобками

Вызывайте ядро с помощью >>.

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

Запуск устроен иначе

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

Синтаксис <<< >>>

Для запуска используются специальные тройные угловые скобки CUDA. Внутри них перед обычным списком аргументов указывается конфигурация запуска.

myKernel<<<blocks, threads>>>(args);

Первое число: блоки

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

myKernel<<<4, threads>>>(args); // 4 blocks

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

Второе значение задаёт количество потоков в блоке. Общее число запущенных потоков равно произведению числа блоков на число потоков в блоке.

myKernel<<<4, 256>>>(args); // 1024 threads

Аргументы указываются после

После скобок передайте обычные аргументы ядра в круглых скобках — так же, как при любом вызове C++.

doubleIt<<<1, 256>>>(devicePtr);

Запуски выполняются асинхронно

Запуск является асинхронным: CPU ставит работу в очередь и сразу продолжает выполнение. GPU выполняет ядро в фоновом режиме.

Конфигурацию можно хранить в переменных

Числа запуска не обязаны быть литералами. Часто количество блоков вычисляют по размеру данных во время выполнения.

int blocks = (n + 255) / 256;
add<<<blocks, 256>>>(c, a, b, n);

Использование dim3 для двумерных данных

Для сеток и блоков в 2D или 3D используется значение dim3. Оно объединяет размеры по x, y и z в конфигурации запуска.

dim3 threads(16, 16);
blur<<<grid, threads>>>(img);

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

Безопасное значение по умолчанию для потоков в блоке — 128 или 256. Значения должны быть кратны 32 и не превышать 1024.

kernel<<<blocks, 128>>>(data);

Неправильная конфигурация приводит к сбою

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

kernel<<<1, 2048>>>(p); // too big, fails

Читайте слева направо

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

vectorAdd<<<grid, block>>>(c, a, b, n);

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

Проверим конфигурацию запуска.

Итоги: запуск

Вы запускаете ядро с помощью kernel<<>>(args). Произведение числа блоков на число потоков даёт их общее количество, а запуски выполняются асинхронно. Теперь вы запускаете ядра как профессионал! 🎉

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

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

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

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

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

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

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

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

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

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

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

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

  1. Анатомия ядра
  2. Запуск с тройными угловыми скобками
  3. printf внутри ядра
  4. Объяснение cudaDeviceSynchronize
← Назад к CUDA Academy