当我从 powf
转换为 __powf
时,它可以提高我的性能。但如果我将 sqrtf 转换为其中之一 __fsqrt_[rn,rz,ru,rd] 它会减慢速度。我认为它们至少应该和 sqrtf 一样快。可能是什么问题?
问候
最佳答案
如果您需要对整数(或 float )进行平方,那么您只需将该值与其自身相乘即可,即代替;
y = powf(x, 2);
用途:
y = x * x;
这避免了使用昂贵的超越函数(及其相关的函数调用开销),并且在大多数情况下仅生成单个乘法指令。
平方根可能无法避免,但如果您只需要单精度,则可以使用 fsqrtf
而不是 sqrtf
- 这通常要快得多。
关于performance - cuda内在函数sqrtf和powf性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16011989/