CUDA程序优化小记(八)

本文探讨CUDA程序优化,通过理解GPU架构特点,避免复杂流程控制以提高计算效率。作者分享了如何将循环展开以减少指令,提高数据带宽,并展示了优化后的程序代码及性能提升。
摘要由CSDN通过智能技术生成

CUDA程序优化小记(八)

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

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

       CUDA虽然能够让类C语言代码执行在GPU上,但是需要注意的是,由于GPUCPU架构上的差异,无法将C语言上所有的概念都映射到CUDA上来。一个类似的例子是在OpenGL的着色语言GLSL中虽然能够支持流程控制(flow control),即支持whiledo whilefor循环,但是循环的次数必须是固定的,而不能由变量指定。这就限制了更加复杂的计算。事实上,CPU能够支持完整的算术和逻辑指令集,并且具有分支预测的能力,能保持极低的内存误访问率。可是GPU的硬件设计使其拥有上百万个标量处理器,因此每个标量处理器的设计就变得相当简单,只能支持基本的算术和逻辑指令。同时GPU的计算要求并行,过于复杂的计算指令会使处于同一warp的线程造成潜在的阻塞,导致串行化(sequentialize),这样不利于计算效率的提升,总之了解GPU

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值