Выполнение различных функций CG / GLSL / HLSL - PullRequest
7 голосов
/ 07 декабря 2011

Существуют стандартные библиотеки функций шейдеров, например, для Cg .Но есть ли ресурсы, которые сообщают вам, сколько времени занимает каждая из них ... Я думаю, что вы были похожи на то, как вы привыкли искать, сколько циклов займет каждая операция ASM.

1 Ответ

12 голосов
/ 14 декабря 2011

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

Причина этого связана с планированием инструкций и работой современных шейдерных архитектур. Возьмите простую sin функцию. Допустим, в оборудовании есть специальное оборудование для вычисления синуса значения, поэтому оно не использует серию Tailor вручную или что-то в этом роде. Однако, скажем также, что для его вычисления требуется последовательность из 4 кодов операций. Следовательно, sin будет занимать "4 цикла".

Однако , все эти коды операций являются скалярными операциями. Следовательно, в то время как они продолжаются, на самом деле вы могли бы иметь некоторые 3-векторные точечные продукты, или в случае некоторого аппаратного обеспечения, 4-векторные точечные продукты, продолжающиеся в то же время , на тот же процессор. Следовательно, если аппаратное обеспечение имеет 4-векторные точечные произведения со скалярными операциями, число циклов, необходимое для выполнения sin и умножения матрицы на вектор, равно ... все еще 4.

Так сколько же стоила операция sin? Если вы уберете матрицу умножения, ничто не станет быстрее. Если вы достанете sin, все равно ничего не станет быстрее. Сколько это стоит? Вы не можете сказать, потому что стоимость одной операции не имеет значения; единственное измеримое количество - это стоимость самого шейдера .

В конечном счете, все, что вы можете сделать, это попытаться разумно построить свой шейдер и посмотреть, какова производительность. Если у вас нет низкоуровневых инструментов отладки для разборки базовой сборки шейдеров (и нет, сборка DX недостаточно хороша), это действительно лучшее, что вы можете сделать.

...