Исследование возможностей для работы с графикой у процессоров различного типа - Студенческий научный форум

XI Международная студенческая научная конференция Студенческий научный форум - 2019

Исследование возможностей для работы с графикой у процессоров различного типа

Буршин Д.А. 1, Абрамова О.Ф. 1
1Волжский политехнический институт (филиал) ВолгГТУ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

15 ноября 1971 года корпорация Intel представляет свой первый в мире 4-разрядный процессор Intel 4004. Позже появились 8 - разрядный Intel 8080 и 16 - разрядный 8086, заложившие основы архитектуры всех настольных процессоров. С развитием технологий появилась потребность в создании процессоров нового типа для обработки графики.

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

Какими возможностями обладают GPU и почему они являются лучшим решением для обработки графики, нежели CPU?

Архитектура

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

Рассмотрим архитектуры CPU и GPU:

GPU имеет тысячи ядер, которые будут работать одновременно. Хоть и каждое ядро графического процессора медленнее ядра центрального процессора, это все равно эффективнее для выполнения простых математических вычислений, необходимых для отображения графики. Этот массивный параллелизм является тем, что делает GPU способным к рендерингу сложной 3D графики.

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

Возможности

Первые GPU использовали аппаратную реализацию алгоритмов, в том числе отсечения невидимых поверхностей при помощи буфера глубины, и аппаратное распараллеливание. Описание трёхмерной сцены и параметры наблюдателя (расстояние, угол и т.д.) передавались в GPU в виде массивов вершин и треугольников, по этим данным строилось трехмерное изображение. Поддерживалось отсечение невидимых граней, задание цвета вершин и интерполяционная закраска, а также текстуры объектов и вычисление освещенности без учета теней. Тени можно было добавить при помощи алгоритмов расчета теней на GPU, таких как теневые карты или теневые объемы. Первые GPU 1-ого поколения появились в середине 90-х годов в ответ на возрастающее потребление вычислительных ресурсов компьютерными играми. Основной проблемой таких GPU была низкая точность вычислений (только 16 – битные числа с фиксированной запятой) и отсутствие возможностей программирования.

GPU второго поколения добавили возможности программирования к GPU первого поколения. Фиксированный алгоритм вычисления освещенности и преобразования координат вершин был заменен на алгоритм, задаваемый пользователем. Затем появилась возможность писать программы для вычисления цвета пиксела на экране. По этой причине программы для GPU стали называть шейдерами, (от англ. shade – закрашивать). Первые шейдеры писались на ассемблере GPU, их длина не превосходила 20 команд, не было поддержки команд переходов, а вычисления производились в формате с фиксированной точкой. По мере роста популярности использования шейдеров появлялись высокоуровневые шейдерные языки, например, Cg от Nvidia и HLSL от Microsoft, увеличивалась максимальная длина шейдера. В 2003 году на GPU впервые появилась поддержка вычислений с 32-разрядной точностью. В качестве основного интерфейса программирования выделился Direct3D, первым обеспечивший поддержку шейдеров. Обозначились основные производители дискретных графических процессоров: компании ATI и Nvidia. Появились первые приложения, использующие GPU для высокопроизводительных вычислений. Для программирования GPU предложен подход потокового программирования. Этот подход предполагает разбиение программы на относительно небольшие этапы (ядра), которые обрабатывают элементы потоков данных. Ядра отображаются на шейдеры, а потоки данных - на текстуры в GPU. Основными проблемами GPU 2-го поколения было отсутствие сложных управляющих конструкций и небольшое количество инструкций.

GPU третьего поколения характеризуются расширенными возможностями программирования. Появляются операции ветвления и циклов, что позволяет создавать более сложные шейдеры. Поддержка 32-битных вычислений с плавающей точкой становится повсеместной. OpenGL в версии 2.0 добавляет поддержку высокоуровневого шейдерного языка GLSL. Производительность GPU на реальных задачах достигает сотен гигафлоп/с1. В более поздних представителях третьего поколения появляется поддержка целочисленных операций, а также операций с двойной точностью. Появляются специализированные средства, позволяющее взаимодействовать с GPU напрямую, минуя уровень интерфейса программирования трехмерной графики. Появляются потоковые библиотеки программирования GPU (RapidMind, Accelerator).

Заключение

Графический процессоры позволяют реализовывать огромное количество возможностей для обработки графики и обеспечивают значительно большую производительность, чем CPU. Параллельные вычисления позволяют выполнять несколько задач одновременно намного быстрее, чем центральный процессор. Даже несмотря на то, что графические процессоры предназначены для рендеринга, они способны на большее. Обработка графики - это только вид повторяющихся параллельных вычислений. Другие задачи, такие как обучение ИИ, анализ больших данных, и взлом паролей полагаются на одни и те же виды массивных наборов данных и простых математических вычислений. Именно поэтому видеокарты используется не только для графических операций, хотя это и позволяет создавать новые методы обработки графики, например, совсем недавно компания Nvidia представила технологию DLSS (Deep Learning Super Sampling), которая позволяет осуществлять сглаживание с использованием искусственного интеллекта в реальном времени.

Литература

Абрамова, О.Ф. Компьютерная графика: конспект лекций для студентов направлений 230100.62 «Информатика и вычислительная техника» и 231000.62 «Программная инженерия» [Электронный ресурс]: учеб. пособие / О.Ф. Абрамова; ВПИ (филиал) ВолгГТУ // Учебные пособия: сб. Серия «Естественнонаучные и технические дисциплины». Вып. 3. - 1 электрон. опт. диск (CD-ROM); формат pdf. - Волжский, 2012. - 165 с.

https://ru.bmstu.wiki/GPU_(Graphics_Processing_Unit) [Электронный ресурс]

https://www.overclockers.ua/video/gpu-evolution/ [Электронный ресурс]

https://tproger.ru/articles/cpu-and-gpu/ [Электронный ресурс]

https://compress.ru/article.aspx?id=23724 [Электронный ресурс]

1FLOPS (акроним от англ. FLoating-point Operations Per Second) — внесистемная единица, используемая для измерения производительности компьютеров, показывающая, сколько операций с плавающей запятой в секунду выполняет данная вычислительная система. Гигафлопс - Флопс.

Просмотров работы: 5