CUDA笔记2-循环展开

本文主要探讨了CUDA编程中的循环展开技术,包括串行循环展开和GPU并行循环展开,并通过一个向量运算的例子——计算out=alpha*x+beta*y,来阐述其在加速计算中的应用。
摘要由CSDN通过智能技术生成

CUDA循环展开



串行循环展开



 loop unrolling是一种牺牲程序的尺寸来加快执行速度的优化方法。拿数组来说,数组的数据在内存中是连续存储的,每次取数据的时候可以一次抓取相邻的多个数据,从而减少从内存中读取数据的时间,优化程序。 例子 :
 
  假设n可以被4整除
 
 
未展开程序
 	for(int i = 0; i < n; i++){
 		c[i] = a[i] + b[i];
 	}
 	
 	4层展开程序
 	for(int i = 0; i < n/4; i++){
 		c[i] = a[i] + b[i];
 		c[i+1] = a[i+1] + b[i+1];
 		c[i+2] = a[i+2] + b[i+2];
 		c[i+3] = a[i+3] + b[i+3];
 	}


 

GPU并行循环展开



在GPU上,同样的也可以进行循环展开优化, 更重要的是展开可以减少warp总得分支,下面是一个简单的程序,将value写入out的N个元素中。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值