CUDA编程小技巧

参考资料

http://blog.csdn.net/gggg_ggg/article/details/53320818
http://blog.csdn.net/augusdi/article/details/12649663

本文记录在使用CUDA编程中所使用的一些小技巧,长期补充。


1. 将小于等于0的值设置为0,保存大于0的值
原始代码

if(a<=0)
{
   a=0;
}

更改代码

a=(a+abs(a))*0.5f;

分析
消除循环判断,减少函数分叉;但是增加了一次加法运算,一次绝对值运算和一次浮点运算。


2.如果a

if(aa=b
}

更改代码

a = ( (b-a)+abs(b-a) )*0.5f + a

分析
消除循环判断,减少函数分叉;但是增加了一次加法运算,一次绝对值运算和一次浮点运算。


3.判断一个整数是否为偶数
原始代码

if(a%2==0)
{
  ...
}

更改代码

if(a&1==0)
{
  ...
}

分析
利用位移运算代替求余,速度更快。


4.使用float代替double计算,以降低精度来提高速度
原始代码

float result = 3.1415*a;
float sin_value = sin(1.57);
float sqrt_value = sqrt(1.57);

更改代码

float result = 3.1415f*a;
float sin_value = __sinf(1.57f);
float sqrt_value = sqrtf(1.57f);

分析
float的精度会下降,但是计算速度会加快。


5.正确求解平方根的倒数
原始代码

float result = 1.0f/sqrtf(a);

更改代码

float result = rsqrtf(a);

分析
float的精度会下降,但是计算速度会加快。


你可能感兴趣的:(CUDA)