Я хочу запускать очень простую функцию много раз.
Сначала я подумал о встраивании функции (длиной всего четыре строки), поэтому я решил, что размещение ее в заголовке сделает это автоматически. gprof сказал, что это хорошая идея. Однако я слышал, что пиксельные шейдеры оптимизированы для этой цели. Мне было интересно, если это правда? У меня есть простая функция, которая принимает 6 чисел, и я хочу запустить его N раз. Пиксельный шейдер ускорит процесс?
Возможно, графический процессор может ускорить вашу работу, а может и нет. Это сильно зависит от функции. Графические процессоры хороши в параллельном исполнении. В то время как процессор x86 потребительского уровня имеет максимум 8 ядер, графические карты могут выполнять гораздо больше вычислений параллельно. Но узким местом часто является передача данных между ОЗУ графического процессора и ОЗУ системы. Когда ваша функция на самом деле не так затратна в вычислительном отношении, эти издержки могут затмить ее.
В конце концов, вы можете просто попробовать себя, измерить это и посмотреть, что быстрее.
Возможно, вы захотите взглянуть на OpenCL, наиболее широко поддерживаемый стандарт для переноса вычислений на графическую карту.
Когда вы живете в Windows-Land, есть также DirectCompute который является частью DirectX или Ускоренный массовый параллелизм расширение для C ++. Существует также CUDA, но он поддерживает только графические процессоры NVIDIA.
Других решений пока нет …