CUDA程序优化小记(六)

本文探讨了CUDA程序优化,通过学习《GPGPU编程技术》书中的例子,作者发现之前程序存在资源浪费问题。为了解决这个问题,文章介绍了如何利用并行缩减算法中的缩减树来改进,确保更多线程参与计算。文章提供了内核函数的修改示例,展示了并行缩减算法的实现,并给出了不同平台的执行效率对比。
摘要由CSDN通过智能技术生成

CUDA程序优化小记(六)

CUDA全称Computer Unified Device Architecture(计算机同一设备架构),它的引入为计算机计算速度质的提升提供了可能,从此微型计算机也能有与大型机相当计算的能力。可是不恰当地使用CUDA技术,不仅不会让应用程序获得提升,反而会比普通CPU的计算还要慢。最近我通过学习《GPGPU编程技术》这本书,深刻地体会到了这一点,并且用CUDARuntime应用改写书上的例子程序;来体会CUDA技术给我们计算能力带来的提升。

原创文章,反对未声明的引用。原博客地址:http://blog.csdn.net/gamesdev/article/details/18800393

         上次的程序是使用了CUDA的共享存储器进行累加的运算,不过这里面有一个比较明显的资源浪费现象:最后求和的时候通过__syncthreads()函数对一个块(BLOCK)中的所有线程进行同步,但是仅仅使用了一个线程进行求和累加的运算,其余的线程无事可做。为了防止这样的现象发生,我们需要借助并行缩减算法中比较常见的缩减树算法。

         缩减树的算法如下图所示。

线程1

线程2

线程3

线程4

线程5

线程6

线程7

线程8

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值