BrookGPU - BrookGPU

BrookGPU
Операционная системаLinux, Windows
ТипКомпилятор / время выполнения
ЛицензияЛицензия BSD (детали находятся под GPL )
Интернет сайтhttp://graphics.stanford.edu/projects/brookgpu/

В Ручей язык программирования и его реализация BrookGPU были ранними и влиятельными попытками позволить универсальные вычисления на графических процессорах.[1][2]Брук, развитый в Стэндфордский Университет графическая группа, была компилятором и реализацией потоковое программирование языковой таргетинг на современный, очень параллельный GPU такие как найденные на ATI или же Nvidia видеокарты.

BrookGPU скомпилировал программы, написанные на языке потокового программирования Brook, который является вариантом ANSI C. Это может быть целью OpenGL v1.3 +, DirectX v9 + или AMD Близко к металлу для вычислительного бэкэнда и работал на обоих Майкрософт Виндоус и Linux. Для отладки BrookGPU также может моделировать виртуальная видеокарта на ЦП.

Положение дел

Ручей был в бета длительное время. Последний крупный бета-выпуск (v0.4) был в октябре 2004 г., но возобновленная разработка началась и снова остановилась в ноябре 2007 г. с выпуском v0.5 beta 1.

Новые функции v0.5 включают значительно улучшенный и более быстрый OpenGL бэкэнд, который использует объекты фреймбуфера вместо PBuffers и согласовал код со стандартными интерфейсами OpenGL вместо использования проприетарных расширений поставщика. GLSL была добавлена ​​поддержка, которая привносит в OpenGL всю функциональность (сложные ветвления и циклы), ранее поддерживаемые только DirectX 9. В частности, это означает, что Брук теперь так же способен на Linux в качестве Windows.

Другие улучшения в серии v0.5 включают использование нескольких бэкэндов, когда разные потоки могут запускать разные программы Brook одновременно (что позволяет максимально использовать настройку с несколькими GPU) и SSE и OpenMP поддержка бэкэнда ЦП (это позволяет максимально использовать современные ЦП).

Сравнение производительности

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

Например, 2,66 ГГц Intel Core 2 Duo может выполнить максимум 25 GFLOP (25 миллиардов операций с плавающей запятой одинарной точности в секунду) при оптимальном использовании SSE и потокового доступа к памяти, поэтому предварительная выборка работает идеально. Однако традиционно (из-за ограничений длины шейдерной программы) большинство ядер GPGPU, как правило, выполняют относительно небольшие объемы работы с большими объемами данных параллельно, поэтому большая проблема с прямым выполнением алгоритмов GPGPU на процессорах настольных ПК заключается в значительно более низкой пропускной способности памяти, как в общем случае процессор большую часть времени ждет баран. Например, двухканальная оперативная память PC2-6400 DDR2 может пропускать около 11 Гбит / с, что составляет максимум около 1,5 Гфлопс, учитывая, что общая пропускная способность составляет 3 Гфлопс, и нужно как читать, так и писать. В результате, если пропускная способность памяти ограничена, серверная часть ЦП Brook не превысит 2 Гфлопс. На практике это даже ниже, особенно для всего, кроме float4, который является единственным типом данных, который может быть ускорен SSE.

На ATI HD 2900 XT (740 МГц ядро ​​памяти 1000 МГц), Brook может выполнять до 410 GFLOP через свой серверный модуль DirectX 9. OpenGL в настоящее время (из-за драйвера и Cg ограничения компилятора) намного менее эффективен в качестве бэкэнда GPGPU на этом графическом процессоре, поэтому Brook может управлять только 210 гигафлопами при использовании OpenGL на этом графическом процессоре. На бумаге это выглядит примерно в двадцать раз быстрее, чем процессор, но, как только что объяснялось, это не так просто. В настоящее время графические процессоры имеют штрафы за доступ к разветвлению и чтению / записи, поэтому ожидайте разумного максимума в одну треть от пикового максимума в реальном коде - это все еще оставляет карту ATI со скоростью около 125 GFLOP, что примерно в пять раз быстрее, чем Intel Core 2 Duo.

Однако это обесценивает важную часть передачи данных, подлежащих обработке, в и из GPU. С PCI Express 1.0 x8, память ATI HD 2900 XT может записывать со скоростью около 730 Мбит / с и читать со скоростью около 311 Мбит / с, что значительно медленнее, чем обычная память ПК. Для больших наборов данных это может значительно уменьшить увеличение скорости использования графического процессора по сравнению с хорошо настроенной реализацией процессора. Конечно, поскольку графические процессоры становятся быстрее, чем процессоры, а интерфейс PCI Express совершенствуется, имеет смысл переложить большие объемы обработки на графические процессоры.

Приложения и игры, использующие BrookGPU

Смотрите также

внешняя ссылка

Рекомендации

  1. ^ Тардити, Дэвид; Пури, Сидд; Оглсби, Хосе (2006). «Ускоритель: использование параллелизма данных для программирования графических процессоров общего назначения». Новости компьютерной архитектуры ACM SIGARCH. 34 (5).
  2. ^ Че, Шуай; Бойер, Майкл; Мэн, Цзяюань; Tarjan, D .; Шиффер, Джереми У .; Скадрон, Кевин (2008). «Исследование производительности приложений общего назначения на графических процессорах с использованием CUDA». J. Параллельные и распределенные вычисления. 68 (10): 1370–1380.