Сложение матриц в рамках шейдерной модели 3

3.0

Матрицы вида (2.4) центральным процессором обычно хранятся и обрабатываются как одномерные последовательности (2.5)

В отличие от CPU, графические процессоры изначально предназначены для параллельной обработки данных, поэтому для них естественно обращаться к памяти, где данные хранятся в форме двумерных массивов и адресуются с помощью двух координат. Именно так хранятся текстуры в видеопамяти графических ускорителей. Данные в видеопамять записывает центральный процессор с помощью драйвера, который копирует их из оперативной памяти компьютера. Представить данные в нужной для копирования форме можно посредством API DirectX и OpenCL.

Шейдерные модели 3.0 и 4.0 для адресации элементов массивов (как номера) используют не целые числа, а пары чисел с плавающей точкой в диапазоне от 0 до 1 (рис. 2.7), потому что необходимо работать с графикой и потому что графические процессоры до последнего времени вообще не оперировали целочисленными типами данных. Шейдерная модель 3.0 предполагала, что адреса ячеек совпадали с координатами их центров (как на рис. 2.7), а в шейдерной модели 4.0 задаются координаты левых нижних углов.

Адресация ячеек видеопамяти при использовании чисел с плавающей точкой (координаты ячеек вдоль обеих осей изменяются от 0 до 1)

Рис. 2.7. Адресация ячеек видеопамяти при использовании чисел с плавающей точкой (координаты ячеек вдоль обеих осей изменяются от 0 до 1)

Элементы текстур (рис. 2.7) называют текселями, а координаты текселей (указывающие на центры ячеек) — текстурными координатами. Количество текселей равно количеству элементов во входных массивах. Массивы результатов (рендер-цель) также представляют собой текстуры, количество текселей в которых равно количеству элементов.

Перед началом исполнения шейдера в ячейки видеопамяти (рис. 2.4) должны быть записаны исходные данные (здесь — элементы матриц (2.2)). Затем с помощью драйвера видеокарты центральный процессор запускает расчет. В ходе расчета «вычислители» графического процессора параллельно извлекают эти данные из видеопамяти и применяют ко всем элементам один и тот же набор операций, заданный программой (рассчитывают суммы су = ау+ Ьу).

Результаты своей работы (значения су) графический процессор записывает в видеопамять. Фактически в рассматриваемом примере результатом будет матрица скалярных чисел, однако в общем случае это могли бы быть четырехмерные векторы.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >