`

CUDA-寄存器使用

    博客分类:
  • CUDA
阅读更多

1.重要概念

存储带宽:在一定时间内从DRAM读出或写入的数据量

延迟:响应一个获取内存的请求所花费的时间,这个时间通常是上百个处理器周期

2.SM,SP,Grid,Block,thread,warp

    从硬件角度讲:SM(流多处理器),一个SM可以看作是一个多线程的CPU核,一个GPU包含多个SM,一个SM包含有多个SP(流处理器),1.x硬件,一个SM包含8个SP,2.0是32个,2.1是48个,3.0和3.5是192个。这意味着每个SM在任何时刻都能同时运行这些数目的硬件线程。

 

    从软件角度讲:Grid,Block,Thread是线程(thread)的组织形式,最小的逻辑单位是thread,若干个线程组成一个block,block被加载到SM上运行,多个block组成整体的grid。最小的硬件执行单位是warp(线程束),当前一个线程束包含32个线程。

参考
http://blog.csdn.net/zhuxianjianqi/article/details/8905678

 3.寄存器的用法

   CPU与GPU架构的一个主要区别就是CPU与GPU映射寄存器的方式。CPU通过使用寄存器重命名和栈来执行多线程;GPU利用多线程隐藏了内存获取与指令执行带来的延迟,GPU不使用寄存器重命名机制,而是致力于为没一个线程都分配真实的寄存器。因此当需要上下文切换时,所需要的操作就是将指向当前寄存器组的选择器(或指针)更新,以指向下一个执行的线程束的寄存器组,因此几乎是零开销。

   每个SM能调度若干个线程块。在SM层,线程块即若干个独立线程束的逻辑组。编译时会计算出每个内核线程所需要的寄存器数目。所有的线程块都具有相同大小,并拥有已知数目的线程,每个线程块需要的寄存器数目也就是已知和固定的。因此,GPU就能为在硬件上调度的线程块分配固定数目的寄存器。

   然而在线程层,这些细节对程序员是完全透明的。如果一个内核函数中的每个线程需要的寄存器过多,在每个SM中GPU能够调度的线程块的数量就会受到限制,因此总的可以执行的线程数量就会受到限制。开启的线程数量过少就会赵成硬件无法被充分利用,性能急剧下降,但开启过多又意味着资源可能短缺,调度到SM上的线程块数量会减少。

     根据硬件的不同,每个SM可供所有线程使用的寄存器空间大小也不同,分别有8KB,16KB,32KB以及64KB.牢记,每个线程中的每个变量会占用一个寄存器。

     总之,在编写GPU程序是,为了充分发挥硬件性能和程序速度,应考虑好寄存器数,线程数,SM调度的线程块数等的关系。同时最大化地利用寄存器。

分享到:
评论

相关推荐

    cuda regisger 测试

    测试了CUDA中寄存器,共享内存,和全局内存的创建。 。

    CUDA——了解和使用共享内存

    如何充分利用本地多处理器内存资源,如共享内存、常量内存,以及寄存器。

    基于CPU与GPU_CUDA的数字图像处理程序的性能比较

    本文通过多个数字图像处理算法对 GPU 和 CPU 分别进行测试,发现使用 GPU 并行计算进行图像处理能大幅提高效率。GPU 并行计算将在测绘遥感科学领域发挥巨大作用。 在 CUDA 模型中,一个程序分为两部分:在 CPU 上...

    GPU编程之进击的优化-李修宇.docx

    5.2 使用动态并行 5.3 多GPU版本 第六章 GPU上的光线追踪(待续) 6.1 kd-tree算法介绍及内核实现 6.2 less-分支版本的kd-tree算法及内核实现 6.3 ropes-kdtree算法及内核实现 第七章 LBM流体计算(待续...

    基于GPU并行计算的星载SAR影像数据高效重采样算法研究.pdf

    在这个基于GPU并行计算的星载SAR影像数据高效重采样算法研究中,我们使用CUDA平台开发了一个高效的重采样算法。该算法使用GPU的并行计算能力,通过并行处理大量数据来提高计算效率。实验结果表明,该算法可以大大...

    CPU与GPU的计算性能对比.pdf

    CUDA编程模型允许开发人员使用扩展的C语言在开发环境下编写程序,使GPU程序轻松地运行在GPU上,大大降低了利用GPU进行通用计算的难度。CUDA编程模型的主要特点是线程组织结构,包括主机代码和设备代码两部分。设备...

    基于GPU的并行优化技术.pdf

    文章首先介绍了GPU的并行计算能力和可编程性,然后对基于Nvidia公司的统一计算设备架构(CUDA)实现的四种优化方法进行了详细的介绍,这四种优化方法分别是指令优化、共享缓存冲突避免、解循环优化和线程过载优化。...

    dopt:D的数值优化和深度学习框架

    Wide ResNet) 用于添加第三方操作及其衍生物的框架,以及用于CPU和CUDA后端的功能寄存器实现在线优化算法:SGD,ADAM,AMSGrad等更多功能! 该项目仍处于初期阶段,有些事情可能无法正常进行。 未来计划的一些功能...

    高性能计算实验报告CPU/GPU SIMD

    在 CPU 中,SIMD 是通过向量寄存器来实现的,这些寄存器能够同时存储多个数据。常见的 SIMD 指令集包括 Intel 的 MMX、SSE 和 AVX,以及 ARM 的 NEON。 GPU SIMD GPU(图形处理器)也有 SIMD 功能,但是其实现方式...

    评测用GPU优化密集线性代数运算.pdf

    他们使用NVIDIA的CUDA API,将其性能与NVIDIA的CU FFT函数库进行比较,并在高端四核CPU上实现了NAMD(一种广泛使用的并行分子动态模拟程序包),在一个由64个64核GPU组成的集群上所运算速度比CUFFT提高了三倍,在...

    matlab代码影响-PseudoCTImaging:基于基于图集(基于贴片)的方法从MRI输入图像中合成CT图像

    具有三项优化的GPU(CUDA) 通用汽车全球记忆 GM2全局存储器,寄存器改进 SM共享内存 Matlab函数读取输入MRI的数据,解剖图谱并将分割结果写入Matlab文件.mat中。 有一种方法可以随机创建数据以进行测试。 将来,我...

    基于图形处理器的球面Voronoi图生成算法优化 (2015年)

    针对这一问题,利用图形处理器(GPU)并行计算对算法进行实现,然后从GPU共享内存、常量内存、寄存器等三种内存的访问方面进行优化,最后用C++语言和统一计算设备架构(CUDA)开发了实验系统,对优化前后算法的效率进行对比...

    深度学习的专属武器 NVIDIA Volta GPU核心架构深层技术解析.pdf

    此外,Volta架构还具有许多其他的技术改进,例如新的执行单元设计、改进的寄存器结构、新的指令级并行处理等等。这些技术改进都旨在提高GV100芯片的计算性能和功率效率,满足深度学习应用的需求。 NVIDIA Volta GPU...

    基于GPU的图像处理算法研究.pdf

    GPU的多核架构和大量的寄存器使得其能够快速地处理大规模数据。例如,在图像去噪和图像滤波中,GPU可以快速地计算图像的像素值,从而提高图像处理的速度。 其次,GPU可以用于图像处理中的并行计算。GPU的多核架构和...

Global site tag (gtag.js) - Google Analytics