CUDA Kepler(一) Read-Only Cache特性解析及其性能对比测试

本文介绍了CUDA Kepler架构中的Read-Only Cache特性,对比了其与Constant Memory、Global Memory的性能差异。Read-Only Cache利用纹理缓存流水线提高无序访问性能,简化了纹理内存的使用。实验结果显示,在特定场景下,Read-Only Cache能带来显著性能提升,而Constant Memory的性能受广播机制影响。此外,文中还探讨了Constant Memory的广播特性和Global Memory的Coalesced访问要求。
摘要由CSDN通过智能技术生成

Kepler 计算设备

Kepler是NVIDIA发布的第三代CUDA计算设备的代号,这一系列产品主要有两大类:GK104和GK110,没有记错的话,GK104的运算能力是3.0,而GK110则具备了完整的Kepler架构组件,计算能力为3.5。两种计算能力的硬件在体系结构上面有一些差异,这些差异可能会在这一系列文章的后续版本中进行详细地讲解。今天我们讨论的是计算能力3.5的GK110架构新引入的一项特性:Read-Only Cache,以及讨论这一新的内存特性与CUDA原有的costant memory及global memory的差异。通过实际的例子,让我们一起来探索该如何使用这一新的特性。

Read-Only Data Cache

这一名词可以简单翻译为“只读数据缓存”,那么,它是什么呢?

Read-Only Data Cache是一种数据缓存技术,它允许用户使用GPU的纹理缓存流水线来读取Global Memory中的只读数据。前面的句子有点长,下面让我来详细地说明一下。首先,什么是GPU的纹理缓存流水线呢?其实细节我也不是很清楚,但是这并非核心,读者和我所需要了解的是,GPU在访问存储器时,对于不同的内存类型(global memory、constant memory、shared memory等等),它会使用不同的流水线来进行load/store操作,而缓存流水线就是这些流水线中的其中一种。因此,使用纹理缓存流水也就意味着它与正常的读取global memory所使用的是不同的流水线,两者在理论上应该是可以并行的。其次,什么是Global Memory中的只读数据呢?这其实是笔者臆想出来的一个表达,实际情况是这样的,如果用户有部分存放在Global Memory上的数据在CUDA kernel函数运行的时候保持不变,这部分数据就可以称作Global Memory中的只读数据。

那么,这个“只读数据缓存”有什么作用呢?

我们知道,在访问Global Memory时,为了获得更好的性能,我们必须确保程序对Global Memory的访问是Coalesced的,什么是Coalesced?简单来说就是一个线程块在访问Global Memory时所需要遵循的内存对齐要求(这种对齐要求的详细讲解可能会在以后的系列文章中涉及)。如果不能保证这一对齐策略,那么程序的访存性能将会受到影响,具体有多少跟硬件与访问的特定上下文有关,这里就不展开了。这时候,假如我们需要访问的内存在运行期间是不变的,那么,我们便可以使用Read-Only Data Cache!你问我为什么?因为纹理内存的访问特性就是无序访问,而Read-Only Data Cache正是为了这一访存方式所设计的!因此,在某些特定场合,理论上Read-Only Data Cache将会带来意想不到的大幅度性能提升。

做一个总结吧,其实从Read-Only Data Cache使用纹理缓存流水就可以看出,NVIDIA的实际目的就是为了简化程序员对于纹理内存(Texture Memory)的使用,而实际上确实也是这样的,在3.5的硬件之前,要想使用访问纹理的方法访问Global Memory,需要做一些Texture Bind函数的调用工作,而这些工作不但非常繁琐,而且还具有使用上的限制(具体就不细讲了),有了这一新特性,纹理内存的使用被极大地简化了,是一个值得引起CUDA程序员重视的技术备选项。

Constant Memory

我想,作为一名CUDA程序员,Constant Memory的意义在这里无需赘述了,我下面想说的,是Constant Memory适宜的应用场合,而这个场合问题可能一直困扰着相当多的程序员(为什么我使用Constant Memory时性能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值