Понимание анатомии графических процессоров с помощью Pokémon

Поприветствуйте этого прекрасного новорожденного в GPGPU Nvidia Family Ampere

ОБНОВЛЕНИЕ БЛОГА ОТ 14 МАЯ 2020





В предыдущем выпуске …

В нашем предыдущем сообщении блога о глубоком обучении мы объяснили, что эта технология предназначена для массивных параллельных вычислений матриц и что эти вычисления являются упрощенными операциями: + и x.



Факт 1. Графические процессоры хороши для (барабанной дроби)…

Как только вы поймете, что глубокое обучение — это просто массовое параллельное умножение и сложение матриц, происходит волшебство. Графические процессоры общего назначения (GPGPU) (то есть графические процессоры или варианты графических процессоров, предназначенные для чего-то другого, кроме графической обработки) идеально подходят для…



Прекрасно, не правда ли? Но почему? Позвольте мне рассказать вам небольшую историю

Факт 2: было время, когда графические процессоры были просто графическими процессорами.

Да, Вы прочли это правильно…

Первые графические процессоры в 90-х годах были разработаны очень линейно. Инженер взял инженерный процесс, используемый для графического рендеринга, и реализовал его на оборудовании.

Для простоты вот как выглядит процесс графического рендеринга:



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

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

Короче говоря, видеокарты изначально были предназначены для графической обработки. Какой сюрприз!

Факт 3: процессоры — это спортивные автомобили, а графические процессоры — массивные грузовики

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

Это полная противоположность логике ЦП, где операции должны выполняться последовательно. В результате GPGPU нуждались в массивно-параллельной архитектуре общего назначения, чтобы иметь возможность обрабатывать все точки (вершины), строить все сетки (тесселяцию), создавать освещение, выполнять преобразование объекта из абсолютной ссылки, применять текстуру и выполнить штриховку (мне, наверное, еще не хватает некоторых частей!). Однако цель этого сообщения не состоит в том, чтобы подробно рассматривать обработку и рендеринг изображений, поскольку мы сделаем это в другом сообщении в будущем.

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

Вот красивое видео от Mythbusters, в котором объясняются две концепции CPU и GPU:


Факт 4: 2006 — NVIDIA убила тейлоризм обработки изображений



Предыдущий метод обработки изображений был реализован с использованием специализированного персонала (оборудования) на каждом этапе производственной линии на фабрике изображений.

Все изменилось в 2006 году, когда NVIDIA решила представить универсальные графические процессоры, использующие арифметические логические единицы (ALU), также известные как ядра CUDA, которые могли выполнять многоцелевые вычисления (что-то вроде вычислений на GPU Жан-Клода Ван Дамма. единицы измерения!).



Даже сегодня современные архитектуры графических процессоров (такие как Fermi, Kepler или Volta) состоят из необщих ядер, называемых модулями специальных функций (SFU), для выполнения высокопроизводительных математических графических операций, таких как sin, косинус, обратное и квадратное root, а также блоки наложения текстуры (TMU) для операций с матрицами большой размерности, участвующих в наложении текстуры изображения.

Факт 5: GPGPU можно просто объяснить с помощью Pokémon!

Поначалу может показаться, что архитектура графического процессора трудна для понимания, но поверьте мне… это не так!

Вот мой подарок вам: Pokédex, который поможет вам понять графические процессоры простым языком.

Micro-Architecture Family

Вот как вы его используете… В основном у вас есть четыре семейства карт:

Эта семья уже многим из вас будет известна. Речь, конечно же, идет о Ферми, Максвелле, Кеплере, Вольте, Ампера и т. Д.



Архитектура семьи

Это центр, где происходит волшебство: оркестровка, кеш, планирование рабочих нагрузок… Это мозг графического процессора.



Многоядерная Units (ака CUDA Cores) Семейный

Это представляет собой физическое ядро, где на самом деле происходят математические вычисления.



Программирование Модель семьи

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



Как играть?

  • Начните с выбора карты из Micro-Architecture семьи
  • Посмотрите на компоненты, и выберите соответствующую карту из архитектуры семьи
  • Посмотрите на компоненты в семействе Micro-Architecture и выберите их из семейства Multi-Core Units , затем поместите их под карточкой « Архитектура».
  • Теперь, если вы хотите знать , как программировать GPU, место Programming Model — Multi-Core Units специальную карту поверх многоядерных блоков  карт
  • Наконец, поверх специальной карты Programming Model — Multi-Core Units поместите все карты Programming Model  рядом с SM.
  • Тогда у вас должно получиться что-то вроде этого:



Примеры конфигураций карт:

Ферми


Кеплер


Максвелл


Паскаль


Вольта


Тьюринг


Немного поигравшись с различными микроархитектурами, архитектурами и многоядерными модулями, вы должны увидеть, что графические процессоры так же просты, как и Pokémon!

0 комментариев

Оставить комментарий