История появления графических процессоров

Авторы: 
Виктор Скрябин

Содержание


1. История появления графических процессоров
    1.1 Коротко о главном
    1.2 История развития gpu
        1.2.1 Первое поколение gpu
        1.2.2 Второе поколение gpu
        1.2.3 Третье поколение gpu
        1.2.4 Четвертое поколение gpu
        1.2.5 Пятое поколение gpu
    1.3 Особенности архитектуры современных gpu
2. Gpgpu на примере использования технологии cuda
    2.1 Что такое вычисления на gpu?
    2.2 История вычислений на gpu
    2.3 Архитектура параллельных вычислений cuda
    2.4 Наиболее яркие результаты и классические задачи
        2.4.1 Умножение матриц
        2.4.2 Расчет цены опционов по формуле блэка-шоулза
        2.4.3 Обработка изображений
        2.4.4 Преобразование фурье
3. Будущее графических процессоров
4. Литература

1. История появления графических процессоров

"GPU уже достигли той точки
развития, когда многие приложения
реального мира могут с легкостью
выполняться на них, причем быстрее,
чем на многоядерных системах. Будущие
вычислительные архитектуры станут
гибридными системами с графическими
процессорами, состоящими из
параллельных ядер и работающими в
связке с многоядерными CPU".









Профессор Джек Донгарра (Jack Dongarra)
Директор Innovative Computing Laboratory
Университет штата Теннесси





1.1 Коротко о главном

Вычислительная математика благодаря развитию компьютерных технологий получила возможность решать важные практические задачи за достаточно приемлемое время. К тому же появляются все новые и более быстрые способы обработки данных. Сегодня становится популярным использование современных графических процессоров для осуществления высокопроизводительных математических вычислений. Это позволяет значительно увеличить скорость вычислений по сравнению с теми, что обычно выполняются на центральном процессоре компьютера.
Графическое процессорное устройство (англ. Graphics Processing Unit, GPU) – программируемое вычислительное устройство, изначально предназначенное для обработки графической информации. Оно занимается расчётами выводимого изображения, освобождая от этой обязанности центральный процессор (англ. Central Processing Unit, CPU), а также производит расчёты для обработки команд трёхмерной графики (геометрическая трансформация, моделирование освещения). В силу ряда особенностей архитектуры GPU стали использоваться как платформа для высокопроизводительных математических вычислений.

1.2 История развития gpu

Трудно, наверное, сейчас представить, что были времена, когда видеоадаптеры, такие, например, как S3 ViRGE (Рис. 1), специализировались в основном на ускорении вывода 2D-графики. В то время считалось, что обработка трехмерных данных просто не целесообразна.

Рис. 1. Модель S3 ViRGE (1995 г.)
Существует два противоположных мнения насчет того, верно ли связывать подобные модели видеоадаптеров и графические процессоры первого поколения, или же история развития GPU начинается с момента появления в середине 90-х годов прошлого столетия 3D-акселераторов. Сам термин GPU впервые был использован в августе 1999 года в отношении главного чипа видеокарты модели nVidia GeForce 256, основная функция которого заключалась в ускорении вывода трехмерной графики. Поэтому условимся, что в дальнейшем повествовании речь пойдет о поколениях GPU как 3D-ускорителях, а не об этапах развития видеоадаптеров как таковых. Однако не исключается, что между развитием и тех, и других существует достаточно тесная связь.
Каждый новый виток развития GPU представляет собой некое поколение, поэтому для начала следует ввести стандартизацию поколений. Понимать поколения можно по-разному – ниже предлагается лишь один из вариантов.

1.2.1 Первое поколение GPU

GPU первого поколения являлись специализированными процессорами для ускорения операций с трехмерной графикой и предназначались для построения двумерных изображений трехмерных сцен в режиме реального времени. Для увеличения скорости данных операций использовались аппаратная реализация алгоритмов, в том числе отсечения невидимых поверхностей при помощи буфера глубины, и аппаратное распараллеливание. GPU первого поколения принимали на вход описание трехмерной сцены в виде массивов вершин и треугольников, а также параметры наблюдателя, и формировали по ним на экране двумерное изображение сцены для этого наблюдателя. Еще графические процессоры могли осуществлять текстурирование объектов, задание цвета вершин, а также интерполяционную закраску. Все предшествующие этапы выполнялись на CPU.
История современных 3D-акселераторов, предназначенных для домашнего использования, всерьез началась с компании 3Dfx. Видеокарты на основе процессора Voodoo Graphics (Рис. 2), который впоследствии стал называться Voodoo I, производства 3Dfx появились в 1996 году и надолго сделали название производящей их компании синонимом слова 3D-акселератор. Типичное рабочее разрешение для Voodoo I составляло 512 x 384 пикселей, максимальное – 640 x 480 при глубине цвета в 16 бит, поддерживалось до 4 МБ видеопамяти.

Рис. 2. Модель 3Dfx Voodoo I (1996 г.)
Одним из факторов успеха молодой компании 3Dfx было использование исключительно новой модели построения 3D-объектов, которая получила название Glide. Сущность модели заключалась в обмене информацией между чипом видеоплаты и видеопамятью, при этом практически вся нагрузка ложилась на последнюю.
Поддержало репутацию 3Dfx и следующая серия – Voodoo II. Отличия были значительны: вдвое большее количество текстурных блоков, что позволяло использовать мультитекстурирование (параллельную обработку текстур). Тактовые частоты чипов (на плате их было два) и памяти значительно повысились. Размер видеопамяти увеличился до 8-12 Мбайт, что позволяло использовать большие разрешения. Впервые за всю историю появился акселератор, на котором была реализована трилинейная фильтрация. В это же время на конвейере 3Dfx была разработана урезанная версия Voodoo II с уже встроенной поддержкой 2D/3D, что впоследствии стало стандартом. Здесь необходимо уточнить, что первые 3D-ускорители 3Dfx (как и первые ускорители других производителей) представляли собой дополнительную плату, которая устанавливалась и подключалась к обычному 2D-видеоадаптеру.
Не следует забывать еще одного игрока на этом рынке – nVidia, начавшую с весьма приличных процессоров Riva128 и Riva128ZX. Кроме того, в 1998 году она выпустила новый чип – Riva TNT (Рис. 3).

Рис. 3. Модель nVidia Riva TNT (1998 г.)
Компании nVidia пришлось бросить все силы на разработку 3D-ускорителей, дабы обогнать 3Dfx в кратчайшие сроки. Появившись практически в одно время с Voodoo II, Riva TNT поддерживала 32-битный цвет, которого не было в акселераторах Voodoo (они работали исключительно с 16-битными цветами), интерфейс AGP 2x, и частоту работы чипа 90 МГц. Но в целом, если делать выводы, исходя из сравнения этих двух моделей, то можно сказать, что nVidia слишком поторопилась и сделала очень мощный, но слишком ресурсоемкий акселератор. Это можно было бы считать шагом в будущее, но результат оказался обратным, Riva TNT проигрывала 3Dfx везде, кроме тех случаев, когда использовалась всего лишь одна текстура, мощности остальных компонентов компьютера просто не хватало, чтобы Riva смогла раскрыть весь свой потенциал. Это было только начало гонки, которую nVidia впоследствии выиграет у 3Dfx, но это будет уже в рамках следующего поколения.
Конкуренцию 3Dfx также составляла компания ATI, хотя ее первый процессор – Rage 3D – значительно проигрывал Voodoo I. Но уже в 1999 году в продаже появились карты на базе чипа Rage 128 и Rage 128 PRO (они же Rage Fury и Rage Fury PRO). Микрочип с пометкой PRO представлял собой разогнанный вариант Rage 128 (Рис. 4). В них впервые появилась аппаратная поддержка MPEG-2.

Рис. 4. Модель ATI Rage Fury PRO (1999 г.)
Графические акселераторы появились в ответ на значительно возрастающее потребление вычислительных ресурсов компьютерными играми, где обычные 2D-видеоадаптеры просто перестали справляться. Так летом 1996 выходит 3D-шутер от первого лица Quake (Рис. 5), разработанный id Software, в котором был реализован уже полностью полигональный трехмерный мир. До этого лишь частично использовались спрайтовые модели некоторых предметов.

Рис. 5. Скриншот из игры Quake (1996 г.)
В 1998 году вышла, ставшая культовой, игра Half-Life (Рис. 6), разработанная Valve Software и изданная Sierra Studios на основе значительно переработанного движка Quake. Несомненно, Half-Life произвёл революцию в жанре шутера от первого лица и положил начало новому этапу его развития.

Рис. 6. Скриншот из игры Half-Life (1998 г.)
В мае того же года на основе абсолютно нового игрового движка вышел 3D-шутер Unreal (Рис. 7), разработанный компанией Epic Games. Игра была рекомендована для видеоадаптеров 3Dfx Voodoo II, которые на ней показывали большую производительность, чем аналогичные и даже более новые видеокарты других производителей.

Рис. 7. Скриншот из игры Unreal (1998 г.)
Современный «избалованный» пользователь, вряд ли назовет высоко реалистичными трехмерные сцены, сформированные с помощью акселераторов того поколения. Однако не стоит забывать, что это был всего лишь первый шаг на пути к тому, что мы можем наблюдать сегодня.

1.2.2 Второе поколение GPU

Основоположником GPU следующего поколения принято считать главный чип видеокарты nVidia GeForce 256 (Рис. 8), появившийся в августе 1999 года, и привнесший в 3D-графику принципиально новые возможности. От предшествующих графических чипов его отличала поддержка технологии Transform&Lighting (T&L). Эта технология заключается в преобразовании координат вершин в плоские координаты, отображаемые на мониторе, и вычислении их освещенности. Это весьма ресурсоемкие и сложные вычисления, особенно при большом количестве вершин. Ранее они выполнялись на центральном процессоре, что отнимало значительную часть процессорного времени, либо на отдельных процессорах освещения и трансформации. Поэтому, благодаря появлению графических процессоров второго поколения, с одной стороны, с CPU снималась часть нагрузки, что позволяло использовать его для решения других, не менее важных задач. С другой стороны, появилась возможность увеличения количества объектов и степени их прорисовки, что позволило добиться нового уровня реалистичности в 3D-приложениях, а особенно в компьютерных играх.

Рис. 8. Модель nVidia GeForce 256 (1999 г.)
Плата GeForce 256 была дорогой и непроизводительной на приложениях, которые не использовали возможностей аппаратного T&L, и по-прежнему пользовались услугами CPU для ручных вычислений. Поэтому другие производители видеокарт, например, ATI, 3Dfx Interactive, Matrox, не поддержали новой технологии и пророчили ей скорейшее забвение.

Рис. 9. Скриншот из игры Quake III Arena (1999 г.)
Ситуация изменилась с выходом игр, поддерживающих аппаратно реализованную технологию T&L – Quake III Arena (Рис. 9) от компании id Software, Unreal Tournament (Рис. 10) от Epic Games и других.

Рис. 10. Скриншот из игры Unreal Tournament (1999 г.)
Ввиду неоспоримых преимуществ аппаратного T&L перед программным вскоре он стал де-факто стандартом при программировании трехмерных игр. Компания ATI выпустила платы Radeon (Рис. 11) с его поддержкой, а два других конкурента просто вынуждены были уйти с рынка игровых видеоадаптеров.

Рис. 11. Модель ATI Radeon SDR (2000 г.)

1.2.3 Третье поколение GPU

GPU третьего поколения добавили возможности программирования к графическим процессорам предыдущего поколения. Изначально фиксированный алгоритм вычисления освещенности и преобразования координат вершин был заменен на алгоритм, задаваемый пользователем. Позже появилась возможность писать программы для вычисления цвета пикселя на экране. По этой причине программы для GPU стали называть шейдерами (вершинные и пиксельные). Вершинные шейдеры позволяют определять параметры пикселя (освещенность, прозрачность, отражающую способность, координаты, текстуру), исходя из параметров вершин треугольника, содержащего его. Пиксельные шейдеры позволяют работать с каждым пикселем индивидуально, уже после проведения геометрических преобразований. Шейдеры для третьего поколения GPU писались на ассемблере графического процессора, их длина не превосходила 20 команд, не было поддержки команд переходов, а вычисления производились в формате с фиксированной запятой.
Обозначились основные производители дискретных графических процессоров: компании nVidia и ATI. К представителям 3D-акселераторов третьего поколения можно отнести nVidia GeForce 2 – 4 (Рис. 12), ATI Radeon 8500 – 9200.

Рис. 12. Модель nVidia GeForce 3 (2001 г.)
Изменения в GPU, произошедшие на данном этапе, носили эволюционных характер, значительных подвижек по сравнению с предыдущим поколением не наблюдалось. Это можно отследить и в игровой индустрии. Трехмерная графика виртуального мира в них становится еще реалистичнее, однако ничего сверхкардинального не произошло. В качестве примеров можно привести шутеры от первого лица Serious Sam: The First Encounter (Рис. 13) и Serious Sam: The Second Encounter, созданные хорватской компанией Croteam в 2001 и 2002 годах соответственно.

Рис. 13. Скриншот из игры Serious Sam: The First Encounter (2001 г.)

1.2.4 Четвертое поколение GPU

Представители следующего поколения GPU стали уже полностью программируемыми. В качестве основного интерфейса программирования выделился Direct3D, который первым обеспечил поддержку шейдеров (язык HLSL). OpenGL, начиная с версии 2.0, также добавляет поддержку высокоуровневого языка программирования шейдеров GLSL. Не стоит забывать и о языке Cg от nVidia. Появление операций ветвления и циклов позволило создавать более сложные шейдеры. В 2003 году на GPU впервые появилась поддержка вычислений с 32-разрядной точностью. Появились приложения, использующие графические процессоры для высокопроизводительных вычислений, таким образом, начало складываться направление общих вычислений GPGPU (англ. General Purpose GPU). Для программирования GPU был предложен SIMD-подход (англ. Single Instruction Multiple Data). Этот подход предполагает, что группа параллельно работающих процессоров осуществляют действия над разными данными, но при этом все они в произвольный момент времени должны выполнять одинаковую команду. В качестве примеров GPU четвертого поколения можно назвать графические процессоры моделей nVidia GeForce 5 – 7 и ATI Radeon 9500 – X800 (Рис. 14). На этом этапе наблюдается повсеместное вытеснение стандарта AGP более быстрым PCI Express.

Рис. 14. Модель ATI Radeon X850 XT Platinum (2004 г.)
За счет использования шейдерного рендеринга удалось достичь высочайшего уровня реалистичности виртуального мира за весьма приемлемое время. Так, например, в 2004 году появились такие шедевры игровой индустрии, как Half-Life 2 (Рис. 15) от компании Valve Corporation и Doom 3 (Рис. 16), разработанный id Software и изданный Activision.

Рис. 15. Скриншот из игры Half-Life 2 (2004 г.)
Помимо неплохого сюжета, эти игры обладали еще и потрясающей графикой, что, естественно, привело к быстрому росту их популярности среди любителей жанра фантастического 3D-шутера от первого лица.

Рис. 16. Скриншот из игры Doom 3 (2004 г.)

1.2.5 Пятое поколение GPU

GPU пятого поколения характеризуются расширенными возможностями программирования. На этом этапе GPU начинает поддерживать геометрические шейдеры, которые, в отличие от вершинных, позволяют обрабатывать не только одну вершину, но и целый примитив. Также появляется полная поддержка унифицированной шейдерной архитектуры, за счет которой осуществляется более гибкое использование ресурсов графического процессора. Например, в условиях с симуляцией тяжелой геометрии сцены унифицированная шейдерная архитектура может задействовать все блоки GPU для вычисления вершинных и геометрических шейдеров. И наоборот; когда геометрия не является сложной, а симулируется множество сложных пиксельных эффектов, все вычислительные блоки могут быть направлены на выполнение только пиксельных шейдеров. Кроме этого, GPU пятого поколения начинают поддерживать целочисленные операции, а также операции с двойной точностью. Появляются специализированные средства, позволяющие взаимодействовать с GPU напрямую, минуя уровень интерфейса программирования трехмерной графики. Поддержка 32-битных вычислений с плавающей запятой становится повсеместной, и это способствует активному росту направления GPGPU, для которого создаются средства программирования. Появляются потоковые библиотеки программирования GPU (RapidMind, Accelerator), а также первые коммерческие применения GPGPU (nVidia CUDA, AMD FireStream). Более того, отпадает необходимость в использовании специализированного физического ускорителя (англ. Physics Processing Unit, PPU) PhysX, поскольку GPU получили возможность аппаратно ускорять физические расчеты и освобождать, тем самым, CPU от излишних вычислений. Этот этап продолжается по настоящее время.

Рис. 17. Модель nVidia GeForce GTX 295 (2009 г.)
Представителями GPU пятого поколения являются модели nVidia GeForce 8 – GTX 200 (Рис. 17), ATI Radeon X 1K – HD 5K (Рис. 18).

Рис. 18. Модель ATI Radeon HD 5970 Black Edition (2009 г.)
Несомненно, все, произошедшие на этом этапе нововведения, нашли свое отражение и в игровой индустрии. Графика виртуальных сцен в играх достигает небывалого уровня реализма. Так в 2007 году была разработана немецкой компанией Crytek и изданная Electronic Arts игра Crysis (Рис. 19), которая на момент своего выхода считалась самой передовой в области графических технологий, а также демонстрировала новые возможности DirectX 10.

Рис. 19. Скриншот из игры Crysis (2007 г.)
Не менее популярным оказался 3D-шутер от первого лица Call of Duty: Modern Warfare 2 (Рис. 20), разработанный американской компанией Infinity Ward и изданный Activision в 2009 году. В первый же день продаж было реализовано более 4 млн. копий игры. Таким образом, она установила новый мировой суточный рекорд продаж и оставила позади предыдущего лидера – Grand Theft Auto IV.

Рис. 20. Скриншот из игры Call of Duty: Modern Warfare 2 (2009 г.)
Помимо великолепной графики в современных играх можно отметить высокий уровень просчета игровой физики объектов, а также отличную скорость симуляции виртуального мира даже с очень тяжелой геометрией. И это, в большинстве своем, стало возможно благодаря эволюции графических процессоров, которые всего за 15 лет своей истории претерпели такие значительные изменения. И это еще не предел.

1.3 Особенности архитектуры современных gpu

Современные графические процессоры пятого поколения, такие, как nVidia GeForce 8 – GTX 200 и AMD (ATI) HD 2K – 5K, имеют довольно схожую архитектуру (Рис. 21), они содержат набор одинаковых вычислительных устройств (потоковых процессоров, ПП), работающих с общей памятью графического процессора (видеоОЗУ). Число ПП, а также размер видеоОЗУ может быть различным, в зависимости от модели GPU. Все ПП синхронно исполняют одну и ту же команду, что позволяет отнести GPU к классу SIMD. Система команд ПП включает арифметические команды для вещественных и целочисленных вычислений с 32-разрядной точностью, команды управления (ветвления и циклы), а также команды обращения к памяти. Из-за высоких задержек команды доступа к оперативной памяти выполняются асинхронно. С целью сокрытия задержек в очереди выполнения GPU может одновременно находиться несколько сотен потоков, и если текущий поток блокируется по доступу к памяти, на исполнение ставится следующий. Поскольку контекст потока полностью хранится на регистрах графического процессора, переключение осуществляется за один такт. За переключение потоков отвечает диспетчер потоков, который не является программируемым.

Рис. 21. Общая схема графической карты, GPU и его соединения с системными устройствами
Тактовые частоты GPU ниже, чем у центрального процессора компьютера. Однако благодаря большому количеству потоковых процессоров производительность GPU весьма значительна, а если еще учесть, что существует возможность установки на одну машину двух графических карт, то это позволяет получить пиковую производительность до нескольких ТФлопс. Кроме того, на некоторых практических задачах может достигаться значительный процент пиковой производительности (до 70%). Одновременно с этим, в сравнении с классическими кластерными системами, графические процессоры обладают значительно лучшими характеристиками, как по цене, так и по энергопотреблению.

2. Gpgpu на примере использования технологии cuda


2.1 Что такое вычисления на gpu?

Вычисления на GPU – это использование графического процессора для научных и технических вычислений общего назначения. Модель вычислений на GPU подразумевает совместное использование CPU и GPU в гетерогенной вычислительной модели (Рис. 22). Последовательная часть приложения работает на CPU, а вычислительно-тяжелая часть на GPU. С точки зрения пользователя приложение работает быстрее, поскольку, как было уже сказано ранее, достигается высокий процент пиковой производительности графического процессора.

Рис. 22. Гетерогенная вычислительная модель
Разработчику необходимо лишь немного изменить свое приложение так, чтобы вычислительно-тяжелые задачи были перенесены на GPU. Остальная его часть выполняется на CPU. Перенос функции на графический процессор подразумевает ее переписывание с целью добавления параллелизма.

2.2 История вычислений на gpu

История графических чипов началась с графических конвейеров с фиксированной функциональностью. Постепенно их программируемость все возрастала, и, в конце концов, nVidia представила первый GPU, или графический процессор. В 1999-2000 годах специалисты в компьютерной области и научные работники в таких сферах, как получение медицинских изображений и электромагнетизм, перешли на GPU для вычислительных приложений общего назначения. Они обнаружили, что высокая производительность вычислений с плавающей точкой графических процессоров значительно ускоряла работу научных приложений. Это стало началом мощного движения, называющегося GPGPU или вычисления общего назначения на GPU.
Но возникла проблема – для GPGPU были необходимы графические языки программирования, такие как OpenGL и Cg, для программирования GPU. Разработчикам приходилось делать научные проекты похожими на графические приложения, отрисовывая треугольники и полигоны. Естественно, это было очень неудобно, а также ограничивало доступность высокой производительности GPU для науки. nVidia хорошо осознавала потенциал GPU для научного сообщества и поэтому решила инвестировать средства в изменение GPU, чтобы сделать его полностью программируемым для научных приложений и добавить поддержку языков высокого уровня, таких как C и C++. Так родилась архитектура CUDA для GPU.

2.3 Архитектура параллельных вычислений cuda


Рис. 23. Архитектура параллельных вычислений CUDA
Аппаратной архитектуре параллельных вычислений CUDA (Рис. 23) сопутствует среда программирования CUDA, которая обеспечивает набор абстракций, позволяющих выражать как паралеллизм данных, так и параллелизм задач. Программист сам выбирает средства разработки: языки высокого уровня, такие как C, C++, Fortran, или же API - OpenCL и DirectX-11 Compute. Первым языком, для которого nVidia обеспечила поддержку, стал C. Набор программных инструментов разработки С для CUDA позволяет программировать GPU с помощью этого языка с минимальным набором ключевых слов и расширений. В дальнейшем планируется обеспечить поддержку Fortran, OpenCL и других.
Архитектура CUDA GPU и соответствующая модель параллельных вычислений CUDA сегодня широко и весьма продуктивно используются в сотнях приложений различной направленности.

2.4 Наиболее яркие результаты и классические задачи


2.4.1 Умножение матриц

Рассмотрим задачу умножения плотных матриц. При нынешних объемах памяти на графическом процессоре можно умножать матрицы размером в миллионы элементов, и все данные будут размещены в видеоОЗУ. Реально достигнутая производительность при этом будет достаточно высока: на GPU AMD HD 2900 это 100 ГФлоп/c, на GPU nVidia GeForce 8800GTX – 125 ГФлоп/c. Следует заметить, что такая производительность достигается за счет использования блочных алгоритмов умножения матриц, а классические прямые реализации оказываются на порядок медленнее.

2.4.2 Расчет цены опционов по формуле Блэка-Шоулза

Особняком стоит задача расчета цены опционов по формуле Блэка-Шоулза, часто решаемая на практике. Это тот редкий случай, когда большое количество вычислений сочетается с очень простой параллельной структурой. На вход подаются 3 массива параметров опционов, и задача – рассчитать стоимость опциона для каждой тройки параметров. Формула для расчетов содержит только одно ветвление, а в остальном абсолютно линейна. Более того, в расчетах активно используются операции логарифма и экспоненты, которые намного эффективнее реализованы на современных GPU, чем на CPU. В результате системы на GPU демонстрируют на этой задаче практически 100-кратное ускорение по сравнению с обычным процессором. На nVidia GeForce 8800GTX достигнутая производительность составляет 260 ГФлоп/c.

2.4.3 Обработка изображений

Обработка изображений была одной из первых задач, решаемых на GPU. Наиболее важными алгоритмами здесь являются фильтрация изображений и преобразование Фурье. Фильтрация, благодаря относительно простой структуре, легко отображается на GPU. Однако коэффициент повторного использования данных значительно меньше, чем у умножения матриц, что и объясняет значительно меньшую эффективность графического процессора в решении данной задачи. При размере ядра 3x3 производительность кода на GPU nVidia GeForce 8800GTX составляет около 20 ГФлоп/c. Часто используемая на практике сепарабельная фильтрация при помощи фильтра Гаусса показывает худшие результаты ввиду еще более низкого коэффициента повторного использования.

2.4.4 Преобразование Фурье

Преобразование Фурье, как и битоническая сортировка, относится к классу алгоритмов, которые на GPU выполняются за время, пропорциональное N•ln(N), где N – это размер задачи. Оба алгоритма реализуются при помощи многопроходной схемы, где на каждом проходе применяется ядро типа "бабочки". И хотя вычислительная сложность подобного ядра относительно невысока, GPU nVidia удается достичь на нем неплохих результатов. На первых этапах работы весь рабочий набор умещается в статическую память, что позволяет собрать их в один проход и получить порядка 40 ГФлоп/c на графической карте nVidia GeForce 8800GTX.

3. Будущее графических процессоров

Длительное время основной тенденцией развития интегральных микросхем – центральных и графических процессоров – оставалось увеличение их скоростных показателей при однопоточном режиме работы. В течение более чем двадцати лет такой подход позволял увеличивать производительность микропроцессоров в среднем на 50% ежегодно. Однако такое развитие микросхем прекратилось в 2002 году, когда на смену одноядерным и "однопоточным" решениям пришли многоядерные процессоры для одновременной обработки двух и более потоков команд и данных. Смена курса позволила увеличивать производительность процессоров уже на 70% каждый год, и в ближайшее время ситуация вряд ли существенно изменится.
Развитие тенденции увеличения количества вычислительных блоков продолжится еще в течение нескольких лет, что приведет к появлению к 2015 году графического процессора, оснащенного несколькими тысячами ядер.

Рис. 24. Intel TeraScale – 80-ядерный процессор уже в лаборатории
По некоторым прогнозам, к этому сроку возможна разработка процессора с пятью тысячами вычислительных блоков, что позволит добиться производительности в 20 ТФлопс/с. Для сравнения, большинство суперкомпьютеров, входящих сегодня в список пятисот самых мощных вычислительных систем в мире, обладают пиковой производительностью в несколько десятков ТФлопс. Другими словами, один лишь графический процессор для настольных компьютеров через несколько лет сравняется с производительностью целого вычислительного комплекса.
Разумеется, одной из основных задач в данном случае станет разработка технологии изготовления столь сложных интегральных микросхем. Согласно прогнозам, к 2015 году графические процессоры будут изготовляться по 11-нм техпроцессу, что позволит размещать на небольшом полупроводниковом кристалле миллиарды транзисторов.
Но нельзя забывать, что только лишь миниатюризацией микросхем не обойтись. Не менее важно удержать выделяемую графическим процессором тепловую мощность в разумных пределах – вряд ли TDP (англ. Thermal Design Power) процессоров должен быть значительно выше того уровня, на котором остановились современные микрочипы. Наиболее проблемной зоной здесь являются проводящие компоненты, играющие значительную роль в тепловыделении микросхемы. Понятно, что общеупотребимые сегодня металлические проводники должны уступить место более совершенным вариантам. В частности, упоминается переход на технологию оптических межсоединений. Можно вспомнить и последние открытия, касающиеся уникальных свойств графеновых проводников, которые оказываются в тысячи раз лучше медных. Впрочем, пока серьезных подвижек, говорящих о возможности скорой коммерциализации новейших технологий, нет – разработки пока находятся на стадии лабораторных проектов с не очень ясным сроком выхода на мировой рынок. Ясно одно – интегральные микросхемы в ближайшем будущем станут гораздо миниатюрнее, производительнее своих современных аналогов. Это позволит выполнять сложные математические вычисления на компьютере за меньшее время и предоставит возможности для решения задач, которые до этого времени считались неразрешимыми в силу их значительной вычислительной ресурсоемкости.

4. Литература

  1. Graphics processing unit: http://en.wikipedia.org/wiki/Graphics_processing_unit
  2. History of video games: http://en.wikipedia.org/wiki/History_of_video_games
  3. What is CUDA?: http://www.nvidia.com/object/what_is_cuda_new.html
  4. Что такое вычисления на GPU?: www.nvidia.ru/page/gpu_computing.html
  5. Графический процессор: http://www.megabook.ru/Article.asp?AID=607324
  6. Краткая история и основные принципы работы 3D-ускорителей: http://www.izcity.com/data/hard/article528.htm
  7. Графические процессоры для высокопроизводительных вычислений: http://gpu.parallel.ru/
  8. 15 лет истории видеокарт в картинках: http://3dtutorials.ru/novosti/895-15-let-istorii.html
  9. История компьютерных игр: http://www.stainlesssteelstudios.com/62.html
  10. Как все начиналось: http://www.stainlesssteelstudios.com/58.html
  11. Графические процессоры возьмут 20 ТФлопс к 2015 году: http://www.3dnews.ru/news/graficheskie_protsessori_vozmut_20_tflops_k_2015_godu/


































































Дополнительная информация
Ссылка: 
Виктор Скрябин. История появления графических процессоров. Компьютерная графика и мультимедиа. Выпуск №8(1)/2010. http://cgm.computergraphics.ru/issues/issue18/gpuhistory
Выпуск: 
Выпуск №8(1)/2010

Комментарии

В оригинальом квейке не было

В оригинальом квейке не было теней. Это видимо некий порт gl-квейка.

Изображение пользователя Виктор Скрябин.

Согласен

В оригинальом квейке не было теней.

Благодарю за комментарий! Действительно, в оригинальной версии игры Quake не было поддержки теней, поскольку вся изначальная световая каpтина подсчитывалась на стадии пpедваpительной обpаботки ypовня только один pаз. Однако тени появились в 3dfx версиях Quake.

Спасибо

Интересная ретроспектива.
Испытал ностальгию, увидев карточку Diamond на проце S3 Virge, в свое время у меня была карточка Diamond Stealth 3D 3000. Кстати, ее 3D возможности неплохо использовались, например, в игре Resident Evil, хорошенько я на ней зомби погонял в свое время... :) Сейчас уже с трудом представляется, что когда-то был 3D без стандартных API типа OpenGL/DirectX.

Упс... кажется я остановился

Упс... кажется я остановился на красивостях графики 3го поколения видеокарт.... То то я ни одну игрушку современную не знаю :))...
сам на 5м курсе )

Большое спасибо за статью!

Большое спасибо за статью! Написана просто и понятно. Как студенту, только начавшему изучать компьютерную графику, было очень полезно почитать :)

В основном по известным

В основном по известным пунктикам пробежались. Сам из той эпохи - был первым владельцем Voodoo в нашей дыре. И знаю не по наслышке а "на ощупь", по инету и подшивкам изданий того времени. Не совсем достоверно об начале эпохи 3D - представлена сложившаяся в основном за счет рекламы концепция развития с карты 3DFX, что не есть правда. К примеру ни слова о Креативовском Видеобластере 1994 года. Действительно опередившего время 3D ускорителе, продажи которого полностью провалились по причинам отсутствия под него игр и слишком высокой на тот момент стоимости в виду мало серийности. Да и упомянутый S3 Virge имел на борту кроме 2D так же функции 3D ускорения, кои использовали с успехом в нескольких чисто 3D проектах. До сих пор с ностальгией вспоминаю Descent II, потрясший в свое время сглаженной графикой ( до 3dfx оставался год) и еще Tomb Raider какой-то и детская аркада про обаятельного дракончика... Помню и как Voodoo вырвался именно благодаря Quake, ведь специально для этого акселератора Рамеро переписал игру во второй половине 1996 ого, первоначально бывшую чисто софтовой. Это была хорошая раскрутка. Хотя и не без основания - технологии военных тренажеров, принесенные 3Dfx на персоналки были прорывом...

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

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Тест предназначен для отсеивания спама
Fill in the blank