作者:屁儿最爱李佑晨 | 来源:互联网 | 2022-12-02 17:21
GLSL和OpenCL都有一个钳位函数,如果值超出边界,它将把数字钳位到插入的上限或下限.如果我尝试在C++中尝试实现这样的东西,它将类似于以下代码:
if(i max){
i=max;
}
但是,这有多个分支路径,据我所知,可以减慢GPU的速度,因为大多数分支路径必须执行所有分支.
那么GLSL/OpenCL钳位如何工作,如果它使用分支,你会建议尽可能避免使用它吗?
1> Michael Kenz..:
如果您查看GPU指令集架构的相关文档,例如,此处和此处,您会发现GPU通常支持最小和最大指令.例如,即使它们没有,NVIDIA GPU的条件也基于预测执行.任何合理的编译器都会将上面的示例转换为条件赋值而不是完全成熟的分支(例如此处).即使在CPU上......