Шрифт:
Интервал:
Закладка:
Неспособность центрального процессора в одиночку справляться с возникающими вычислительными задачами — секрет Полишинеля. Раньше всего это стало очевидно в машинной графике. В результате за прошедшие годы сформировался стандартный современный графический сопроцессор GPU. Сейчас речь заходит о создании других аппаратных акселераторов, в том числе и для игровых целей [Например, скоро вы можете столкнуться с невозможностью запустить игру без еще одного, на сей раз физического процессора:www.ageia.com/products/physx.html]. Но под каждое приложение свою «железку» не выпустишь, куда как интереснее увидеть нераскрытые возможности GPU, находящегося внутри почти каждого персонального компьютера.
Самое чудное во всей этой истории то, что GPU — а по сути суперкомпьютер на чипе — стал массовым продуктом не благодаря целенаправленной и продуманной стратегии ученых мужей, а скорее случайно — как побочное явление индустрии развлечений.
Лабораторные опытыОдно дело — лицезреть графики ускорения на страницах чужих статей, и совсем другое — убедиться в этом самостоятельно. Не случайно ведь пользуются широкой популярностью такие тесты, как 3DMark и Doom 3. Ничего подобного им по удобству и авторитетности в области вычислений на GPU пока не существует. Можно упомянуть разве что пакет GPUBench из Стэнфордского университета, но он предназначен для сравнения GPU только между собой и содержит лишь синтетические тесты вроде скорости выполнения одной инструкции, повторенной многократно. Более того, далеко не каждую найденную программу для GPU вообще удается запустить из-за ориентации ее авторов на конкретного производителя[Если вы читали статью сначала, то легко угадаете какого. К сожалению, неполная совместимость GPU еще не изжита окончательно] графических чипов. Поэтому я решил подойти к проблеме творчески и предложить самодельный набор тестов [Исходные тексты и исполняемые файлы http://jorik.sourceforge.net], а заодно убедить вас, что работа с GPU не так уж и сложна, как может показаться.
Тест 1. Решается динамическая задача распространения звуковых волн в двухмерном пространстве (см. рис.) при помощи простейшей разностной схемы на сетке 1536x1536. Как уже было сказано, такого рода задачи идеально подходят для GPU. Результат неудивителен — GPU может справиться с заданием в десять с лишним раз быстрее (табл. 1).
Примечательно другое. Во-первых, расстановка плат по производительности в играх и в неграфических приложениях может сильно отличаться. Во-вторых, на бюджетной плате ATI Radeon 9600 установлена такая же обычная память, что и на многих системных платах: 200 МГц DDR SDRAM 128 бит (аналог двухканального режима). Оказывается, огромное ускорение может быть получено даже без быстрой и дорогой графической памяти топовых моделей!
Тест 2. Любопытно также рассмотреть другую крайность — «неудобную» для GPU задачу. Производится сортировка массива из 16 млн. действительных чисел. Здесь CPU выполняет алгоритм быстрой сортировки (STL quick sort), GPU — параллельной битонической сортировки (см. выше). В результате разного количества операций в алгоритмах быстрая видеокарта лишь приближается к центральному процессору (табл. 2).
Тест 3. Исследуется скорость копирования многомегабайтной текстуры, где каждый пиксел содержит четыре 32-битных действительных числа, из системной памяти в видеопамять и обратно. Эта скорость важна, потому что она определяет, какие задачи имеет смысл доверять GPU. Если задача проста, то преимущество GPU может быть нивелировано временем передачи данных к нему. Поэтому выгода получается только на крупных задачах, обсчет которых занимает гораздо больше времени, нежели пересылка данных. Результаты[Их достоверность перепроверялась пакетом GPUBench, скорость для платы nVidia близка к данным презентации "Interactive Geometric Computations using Graphics Processors"] теста оказались просто обескураживающими (табл. 3).
Эти скорости не только ниже 4 Гбит/с шины PCI-Express, но, пожалуй, и самых первых версий AGP. Хочется надеяться, результаты столь низки оттого, что современным играм не приходится часто выполнять копирование больших текстур, особенно описанного формата, и мы имеем дело всего лишь с временной недоработкой драйверов.
До проведения тестирования предполагалось, что использующие GPU программы практически не будут загружать центральный процессор. Действительность оказалась не такой радужной. Нагрузка была очень высокой, доходя до 100%, так что даже окошки по экрану перетаскивались с трудом. Эффект наблюдался и для DirectX-, и для OpenGL-приложений. И еще нельзя не отметить, что плата ATI при большей сетке в первом тесте и при некоторых других обстоятельствах приводила к синему экрану смерти — это уж совсем никуда не годится.
ТЕМА НОМЕРА: По ту сторону треугольников
Автор: Павел Воронин
Приблизительно так можно перевести с английского «Beyond Triangles» — название последней главы замечательной книги «GPU Gems». Она одной из первых рассказала массовому читателю о возможности использовать графический процессор для чего-то большего, нежели рендеринг составленных из треугольников моделей. Тогда это были главным образом научные расчеты: динамика жидкостей, визуализация результатов объемного сканирования, расчет стереограмм и т. д. Однако за прошедшие несколько лет ситуация радикально изменилась: на GPU были перенесены все классические алгоритмы и разработан целый ряд новых, максимально использующих преимущества, даваемые архитектурой современных видеокарт. Техника GPGPU[General-Purpose Computation on GPUs, вычисления общего назначения на графических процессорах] становится по-настоящему general-purpose, универсальной, подходящей для решения практически любых задач. Мне, как большому энтузиасту этой области компьютерных наук, хотелось бы рассказать об одном из самых многообещающих ее направлений: использовании GPU для расчета внутренней логики игр.
Отчего да почемуДело в том, что обычно ядро игры устроено так: сначала на центральном процессоре рассчитываются все перемещения и взаимодействия объектов, изменение их формы (анимация), параметры среды и пр. Затем, с учетом всех этих данных, сцена (то есть набор моделей и спецэффектов) переводится все тем же центральным процессором в стандартное представление: набор координат вершин треугольников и их атрибутов (нормалей, цветов, текстурных координат и прочего). Полученный массив данных, зачастую довольно большой, пересылается на видеокарту, которая и занимается их выводом на экран: расчетом освещения, наложением текстур и применением различных спецэффектов. И хотя пропускная способность шины процессор-видеокарта за последние годы подросла довольно сильно, она до сих пор зачастую является «узким местом» при программировании игр. Поэтому весьма соблазнительно избежать этой пересылки и реализовать выполнение как можно большей части алгоритмов прямо на графическом процессоре.
Уроки физикиЧего не хватает современным играм, чтобы их наконец-то можно было назвать по-настоящему реалистичными? Поиграв во второй HalfLife на максимальных настройках графики, я уже совсем не уверен, что главным препятствием на пути окончательного переселения человечества в компьютерные миры является несовершенство визуальной составляющей. Несколько лет назад мне довелось повозиться с хорошим шлемом виртуальной реальности, и я не сомневаюсь: подай на него картинку уровня детища Valve, и достоверности изображения для девяноста девяти процентов случаев хватит с лихвой.
Другое дело, взаимодействие объектов игрового мира друг с другом и отклик их на действия человека. Лично меня при игре даже в самые динамичные игры вроде Warcraft III, Need For Speed, Grand Theft Auto или ту же HalfLife не покидает ощущение, что я попал в галактику, вдруг остывшую до нуля градусов по Кельвину. Планеты здесь подобно Луне лишены атмосферы, и ветер на них отсутствует. Дым и осколки разорвавшихся снарядов во всем подражают рентгеновским лучам и проходят сквозь тела, не причинив им ни малейшего вреда. Сами тела при этом сделаны из сплошного куска металла, но, разрушаясь, тут же растворяются в воздухе. Жидкостей здесь не бывает. Как, впрочем, и резины, дерева, глины или ваты.
Одним словом, играм чертовски не хватает качественной физики. И, положа руку на сердце, я не могу их винить. Обсчет физических моделей — это, пожалуй, самая трудоемкая и ресурсозатратная программистская задача из встающих перед разработчиками игр (сравниться с ней может разве что реализация приличного ИИ). Даже в самых новых и продвинутых шутерах количество одновременно обрабатываемых физической подсистемой тел измеряется десятками, максимум сотнями. Опыт же фотореалистичного рендеринга эффектов вроде разламывающихся стен, взрывов или текущей лавы показывает, что о каком бы то ни было реализме можно будет говорить не раньше, чем игровой движок сможет в реальном времени оперировать тысячами, а лучше десятками тысяч взаимодействующих друг с другом объектов. Причем речь идет не только о таких сравнительно несложных вещах, как столкновения или жесткие закрепления, но и о по-настоящему мощных математических приемах, например решении дифференциальных уравнений, описывающих связи объектов и поведение гибких или рвущихся материалов.
- Журнал «Компьютерра» № 46 от 12 декабря 2006 года (Компьютерра - 666) - Журнал Компьютерра - Прочая околокомпьтерная литература
- Компьютерра PDA 17.04.2010-23.04.2010 - Компьютерра - Прочая околокомпьтерная литература
- Журнал "Компьютерра" №754 - Компьютерра - Прочая околокомпьтерная литература
- Журнал «Компьютерра» N 29 от 15 августа 2006 года - Журнал Компьютерра - Прочая околокомпьтерная литература
- Журнал «Компьютерра» N 37 от 10 октября 2006 года - Журнал Компьютерра - Прочая околокомпьтерная литература
- Журнал «Компьютерра» №33 от 13 сентября 2005 года - Журнал Компьютерра - Прочая околокомпьтерная литература
- Журнал «Компьютерра» № 10 от 14 марта 2006 года - Компьютерра - Прочая околокомпьтерная литература
- Журнал «Компьютерра» № 18 от 16 мая 2006 года - Компьютерра - Прочая околокомпьтерная литература
- Журнал «Компьютерра» № 46 от 12 декабря 2006 года - Компьютерра - Прочая околокомпьтерная литература
- Журнал «Компьютерра» № 41 от 07 ноября 2006 года - Компьютерра - Прочая околокомпьтерная литература