CUDA代码的优化主要分为3种,按照优先顺序排序如下:
存储器优化
执行配置优化
指令优化
0 GPU内存到CPU内存数据传输延时较大
1 数据预取 Data Perfetching
方法1(数据预取和指令重排的混合):执行一个global memory的读语句,后面运行和这个内存无关的指令(没有依赖关系),这样在访问内存的时间内,后面指令的继续运行
方法2(在循环运行状态下):上一个循环开始运行是,就取得下一个循环所需要的数据
指令重排,在ARM汇编优化时使用,cuda优化时是用不了,原因是不是流水线
2 矩阵转置和矩阵乘法的瓦片化内存处理模式
3 指令优化
除以2的n次方 不用除,用>>n
2的n次方求模 & 0xFFFFF...FFF
浮点数加上f,防止double到float的转换