CUDA Academy · Урок

Квалификатор функции __global__

Помечайте функцию как ядро GPU.

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

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

Два мира, два компилятора

Ваш файл CUDA содержит код и CPU, и GPU. Небольшое ключевое слово сообщает компилятору, к какой стороне относится функция. Это ключевое слово называется квалификатором функции. ⚡

Знакомство с __global__

Квалификатор __global__ обозначает функцию как ядро GPU: код, который запускает CPU, но фактически выполняет GPU в множестве потоков.

__global__ void myKernel() {
    // runs on the GPU
}

Вызывается здесь, выполняется там

Функция __global__ — единственный вид функции, который может вызвать хост, а выполнить устройство. Она служит мостом между двумя мирами.

Всегда возвращает void

Ядро должно возвращать void. Оно не может передать значение обратно CPU, поэтому результаты передаются через память.

__global__ void addOne(int* data) {
    data[0] += 1;
}

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

При запуске ядра __global__ CPU не ждёт. Вызов немедленно возвращает управление, пока GPU работает в фоновом режиме. 🚀

Много потоков, одна функция

Одно определение __global__ выполняется одновременно в тысячах потоков. Вы пишете тело один раз, а GPU распределяет эту работу по ядрам.

Синтаксис запуска

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

myKernel<<<1, 256>>>();

Параметры передаются по значению

Аргументы ядра копируются на устройство. Для массивов передавайте указатели на память устройства, поскольку указатель хоста не имеет смысла на GPU.

Не путайте с __device__

Не путайте их: __global__ — это точка входа, которую можно запустить, а функции __device__ — вспомогательные функции, вызываемые только из кода GPU.

Без рекурсии в точке входа

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

Почему это важно

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

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

Проверим, насколько хорошо вы поняли квалификатор __global__.

Итоги

Вы узнали, что __global__ обозначает ядро GPU: его вызывает хост, выполняет устройство, оно возвращает void и запускается тройными угловыми скобками. 🎉

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

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

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

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

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

Урок «Квалификатор функции __global__» бесплатный?

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

Чему я научусь в уроке «Квалификатор функции __global__»?

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

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

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

Сколько времени занимает урок «Квалификатор функции __global__»?

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

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

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

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

  1. Квалификатор функции __global__
  2. Функции __device__ и __host__
  3. Раздельные адресные пространства
  4. Жизненный цикл программы CUDA
← Назад к CUDA Academy