CUDA Academy · Урок

SIMT: одна инструкция, множество потоков

Модель выполнения, благодаря которой GPU работают быстро.

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

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

How the GPU Stays Busy

Тысячам ядер нужен умный способ управления их работой. Ответ графического процессора — SIMT: одна инструкция, множество потоков. ⚡

One Instruction, Many Threads

В SIMT одна инструкция транслируется на всю группу потоков одновременно. Каждый поток выполняет один и тот же шаг, но над своими собственными данными.

Один рецепт, разные ингредиенты

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

Знакомьтесь: варп

GPU объединяет потоки в группы по 32, которые называются варпами. Варп — это настоящая единица выполнения: его потоки работают вместе, синхронно, выполняя по одной инструкции за раз.

Почему группы по 32 потока

Выдать одну инструкцию сразу 32 потокам намного дешевле, чем отправить 32 отдельные команды. Именно благодаря такому совместному выполнению достигается эффективность GPU.

У каждого потока свои данные

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

SIMT — это не совсем SIMD

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

Проблема ветвлений

Что произойдёт, если половина варпа выберет ветвь if, а другая половина — нет? Потоки в варпе должны двигаться вместе, поэтому ветвление может разделить группу.

if (x > 0) {
  y = x * 2;
} else {
  y = -x;
}

Расхождение потоков в варпе

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

Расхождение снижает скорость

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

Почему SIMT так хорошо масштабируется

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

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

Давайте убедимся, что основные термины SIMT Вам понятны.

Итоги: SIMT

SIMT передаёт одну инструкцию варпу из 32 потоков, каждый из которых работает со своими данными. Избегайте расходящихся ветвлений, чтобы все потоки продолжали двигаться вместе. 👍

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

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

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

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

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

Урок «SIMT: одна инструкция, множество потоков» бесплатный?

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

Чему я научусь в уроке «SIMT: одна инструкция, множество потоков»?

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

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

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

Сколько времени занимает урок «SIMT: одна инструкция, множество потоков»?

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

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

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

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

  1. CPU и GPU: задержка и пропускная способность
  2. SIMT: одна инструкция, множество потоков
  3. Что такое CUDA на самом деле
  4. Задачи, которым подходит GPU
← Назад к CUDA Academy