Использование пиксельного шейдера для выполнения быстрых вычислений?

Я хочу запускать очень простую функцию много раз.
Сначала я подумал о встраивании функции (длиной всего четыре строки), поэтому я решил, что размещение ее в заголовке сделает это автоматически. gprof сказал, что это хорошая идея. Однако я слышал, что пиксельные шейдеры оптимизированы для этой цели. Мне было интересно, если это правда? У меня есть простая функция, которая принимает 6 чисел, и я хочу запустить его N раз. Пиксельный шейдер ускорит процесс?

-1

Решение

Возможно, графический процессор может ускорить вашу работу, а может и нет. Это сильно зависит от функции. Графические процессоры хороши в параллельном исполнении. В то время как процессор x86 потребительского уровня имеет максимум 8 ядер, графические карты могут выполнять гораздо больше вычислений параллельно. Но узким местом часто является передача данных между ОЗУ графического процессора и ОЗУ системы. Когда ваша функция на самом деле не так затратна в вычислительном отношении, эти издержки могут затмить ее.

В конце концов, вы можете просто попробовать себя, измерить это и посмотреть, что быстрее.

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

Когда вы живете в Windows-Land, есть также DirectCompute который является частью DirectX или Ускоренный массовый параллелизм расширение для C ++. Существует также CUDA, но он поддерживает только графические процессоры NVIDIA.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]