Расчеты на видеоплатах

Расчеты на видеоплатах

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

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

Folding@home Folding@home CPU и GPU: общие черты и различия CPU и GPU: общие черты и различия Программы, поступающие на центральный процессор компьютера (CPU), выполняются последовательно, одна операция за другой. В большинстве случаев такой подход необходим, так как результаты предыдущих вычислений используются для выполнения последующих.

Однако некоторые операции не зависят одна от другой и вполне могли бы выполняться одновременно — например, при обработке запросов к базам данных, моделировании природных явлений или кодировании видео. Распараллеливание операций при решении таких задач ограничивается структурой CPU.

Однако практически в любом компьютере есть прекрасное дополнение к CPU — графический процессор (GPU). Он для того и разрабатывался, чтобы одновременно просчитывать огромное количество точек изображения. Однако видеопроцессоры работают только через графические интерфейсы программирования API (Application Programming Interface) DirectX и OpenGL. Благодаря технологии универсального использования графических процессоров (General-Purpose Computing on Graphics Processing Units, GPGPU) стало возможным использовать GPU для решения самых разных задач.

Программы, созданные на основе GPGPU, обещают небывалый прирост производительности компьютеров. Например, скорость кодирования видео возрастет приблизительно в 20 раз.

Потенциал GPU : лучший вычислитель — видеоплата

Первым шагом к универсальному использованию видеопроцессоров стало появление устройств с поддержкой DirectX 8. Как известно, для DirectX 8 в GPU должны быть свободно программируемые пиксельные шейдеры (своего рода вычислительные модули). Благодаря им (по крайней мере, теоретически) можно выполнять практически любой программный код.

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

Правда, за последние четыре года производительность CPU увеличилась вчетверо — с 5 Гфлоп/с (Pentium 4) до 20 Гфлоп/с (Core 2 Duo), но быстродействие GPU за тот же период выросло с 15 Гфлоп/с (ATI Radeon 9700) до невероятных 520 Гфлоп/с (серия NVIDIA GeForce 8800).

Преимущество в скорости вычислений объясняется ростом числа тендеров в графическом чипе. Если программа задействует сразу все шейдеры, то вычисления будут выполняться одновременно в 48 потоках (как, например, в ATI Radeon X1950 ХТХ). Самые быстрые четырехъядерные CPU работают в четыре потока, а общедоступные двуядерные — в два потока.

(вставка) GPGPU ускорит биологические исследования

Самым первым GPGPU-приложением для широкого круга пользователей стала разработка Станфордского университета — Folding@home (F@h). В этом проекте расчет свертывания и развертывания молекул белка распределен между компьютерами многих тысяч пользователей. Результаты вычислений используются для выявления причин различных заболеваний, таких как болезни Альцгеймера и Паркинсона. Использование GPU позволит значительно увеличить скорость расчетов: ведь производительность Radeon X1950 в операциях подобного рода почти в 20 раз выше, чем у Core 2 Duo E6600.

Процессор vs . видеоплата : различия в деталях

Может быть, теперь CPU не нужен, и современный персональный компьютер обойдется одним лишь видеочипом? Не совсем пак. Преимущество графических процессоров ограничено узкими рамками специфических задач: обрабатываемые пакеты данных не должны зависеть друг от друга, и эти пакеты должны быть практически идентичными. Для CPU таких ограничений нет: центральный процессор по-прежнему способен работать с любыми типами данных и любыми программами.

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

Перспективы развития : инструменты уже созданы

Внедрение новой технологии тормозилось в первую очередь недостатком соответствующего ПО. До конца 2006 года не существовало стандартных библиотек SDK (Software Development Kit), с помощью которых можно было бы писать программы для платформы GPGPU на таких языках программирования, как Java, С или C++. Приходилось программировать с использованием графических интерфейсов, DirectX и OpenGL. Но графические интерфейсы лишены многих вычислительных операций. Такая ограниченность набора инструкций усложняла перенос существующих программ в среду GPGPU. Помимо этого функции GPU разных производителей отличаются так сильно, что программа, разработанная для одного чипа, редко работает на чипе-конкуренте, и это делает ее непригодной для массового рынка.

Тем не менее крупные производители видеочипов явно видят в технологии GPGPU огромный потенциал и уже создали GPGPU-библиотеки: Close to the Metal (AMD) и Cuda (NVIDIA). Оба набора библиотек работают с компилятором для языка программирования С. Кроме того, в сентябре прошлого года AMD представила видеоплату FireGL, задуманную только для работы с приложениями GPGPU. Первые серверы с графическим кластером уже работают.

В 200 раз быстрее : небывалый прирост скорости

Современные разработки по комбинированию аппаратной и программной составляющих ПК наконец-то открыли перед программистами широкий доступ к потенциалу видеоплат. Правда, приложений, использующих возможности GPGPU еще очень мало, но и они демонстрируют преимущества новой технологии. Самыми известными на сегодняшний день GPGPU-программами являются средства для расчета физических эффектов, а также известный проект Станфордского университета Folding@home. Идущая в этом же направлении NVIDIA заявляет, что с помощью новой технологии ей удалось ускорить процесс моделирования биржевых курсов почти в 200 раз.

Возможно, в недалеком будущем к нашим услугам будут не нагружащие CPU антивирусные программы и вебсерверы, с огромной скоростью обрабатывающие запросы к базам данных.

Рекомендуем