cuda内在函数sqrtf和powf性能问题

时间:2013-04-15 09:40:00

标签: performance math cuda device intrinsics

当我从powf转换为__powf时,它可以改善我的性能。但是,如果我将sqrtf转换为其中一个__fsqrt_[rn,rz,ru,rd]则会减慢速度。我认为它们应该至少和sqrtf一样快。可能是什么问题?

此致

1 个答案:

答案 0 :(得分:2)

如果你需要对一个整数(或浮点数)进行平方,那么你可以将该值与其自身相乘,即代替;

y = powf(x, 2);

使用:

y = x * x;

这避免了使用昂贵的超越函数(及其相关的函数调用开销),并且在大多数情况下只生成单个乘法指令。

平方根可能无法避免,但如果您只需要单精度,则可以使用fsqrtf而不是sqrtf - 这通常要快得多。