Квалификатор функции __global__
Помечайте функцию как ядро GPU.
«Квалификатор функции __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 — локальная установка не требуется.
Все уроки этого курса
- Квалификатор функции __global__
- Функции __device__ и __host__
- Раздельные адресные пространства
- Жизненный цикл программы CUDA