
- •Оглавление
- •Глава 1 Устройство графических процессоров 4
- •Глава 2 gpgpu – «gpu общего назначения» 12
- •Глава 3 Примеры внедрения nvidia cuda 21
- •Введение
- •Глава 1 Устройство графических процессоров
- •1.1 Принцип работают графического процессора
- •1.2 Устройство графического конвейера
- •1.2.1 Преобразование вершин
- •1.2.2 Построение примитивов и растеризация
- •1.2.3 Текстурирование и окрашивание
- •1.3 Совершенствование графических конвейеров
- •Глава 2 gpgpu – «gpu общего назначения»
- •2.1 Общий обзор
- •2.2 Разница между cpu и gpu в параллельных расчётах
- •2.3 Первые попытки применения расчётов на gpu
- •2.4 Возможности nvidia cuda
- •2.5 Преимущества и ограничения cuda
- •Глава 3 Примеры внедрения nvidia cuda
- •3.1 Мини-суперкомпьютер для томографии
- •3.2 Distributed Password Recovery — высокоскоростное восстановление паролей
- •3.3 Nvidia PhysX — физические расчёты в играх и dcc приложениях
- •3.4 Ускоренная версия пакета утилит текстурного сжатия nvidia Texture Tools 2
- •Заключение
- •Библиографический список
1.3 Совершенствование графических конвейеров
В процессе своей эволюции графические процессоры прошли путь от графических конвейеров с жесткой логикой до программируемых вычислительных сред, способных осуществлять поддержку таких конвейеров.
Следует отметить, что в графическом процессоре используется не один, а несколько конвейеров, работающих параллельно; чем больше в графическом процессоре таких конвейеров, тем она производительнее. Действительно, если, к примеру, в графическом процессоре реализовано 16 конвейеров, то первый из них обрабатывает 1-й, затем 17-й, потом 33-й пикселы и т.д.; второй — 2-й, 18-й и 34-й соответственно. В графическом процессоре используются разные конвейеры, которые выполняют отличающиеся друг от друга функции. В этом смысле более правильно говорить о вершинных или пиксельных конвейерах, но не о конвейерах вообще [1]. Проблема выбора количества конвейеров разных видов долгое время оставалась довольно острой. Предположим, что в воображаемом графическом процессоре с классической архитектурой присутствуют четыре вершинных и восемь пиксельных процессоров (рисунок 3). Если, к примеру, в игре используются преимущественно вершинные шейдеры (трехмерные модели с насыщенной геометрией), то может возникнуть ситуация, что будут заняты все четыре вершинных процессора и только один пиксельный процессор, а оставшиеся семь пиксельных процессоров будут бездействовать. В этом случае производительность всего графического процессора определяется производительностью и количеством вершинных процессоров. В случае если в игре используются преимущественно пиксельные шейдеры (трехмерные модели с насыщенными пиксельными эффектами), то может возникнуть обратная ситуация, когда будут заняты только один вершинный процессор и все семь пиксельных процессоров. В этом случае производительность всего графического процессора определяется производительностью и количеством пиксельных процессоров.
Вершинные процессоры |
|||||||
|
|
|
|
||||
Пиксельные процессоры |
|||||||
|
|
|
|
|
|
|
|
|
|||||||
Вершинные процессоры |
|||||||
|
|
|
|
||||
Пиксельные процессоры |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рисунок 3 - Проблема сбалансированной нагрузки при использовании
Данной проблемы можно избежать, если вместо четырех вершинных и восьми пиксельных процессоров (в сумме 12) использовать 12 унифицированных процессоров, которые могли бы выполнять как вершинные, так и пиксельные шейдеры (рисунок 4). Такой подход был впервые применен в архитектуре графического процессора nVidia GeForce 8800. [1]
Унифицированные процессоры. Случай 1 |
|||||
V |
E |
R |
T |
E |
X |
|
|
|
|
|
Pixel |
|
|||||
Унифицированные процессоры. Случай 2 |
|||||
P |
I |
X |
E |
L |
|
|
|
|
|
|
Vertex |
|
|
|
|
|
|
Рисунок 4 - Решение проблемы сбалансированной нагрузки