博客
关于我
CUDA编程第五章: 共享内存&常量内存
阅读量:289 次
发布时间:2019-02-27

本文共 913 字,大约阅读时间需要 3 分钟。

CUDA共享内存优化指南

5.1 CUDA共享内存概述

GPU中的内存可分为两类:板载内存和片上内存。全局内存属于板载内存,具有较高的延迟,但带宽较高。共享内存则属于片上内存,具有较低的延迟和更高的带宽,通常用作可编程管理的缓存。

共享内存的特点包括:

  • 每个SM都有独立的共享内存,作用仿佛L1和L2缓存。
  • 所有由该SM执行的线程共享该内存,常用于线程间通信。
  • 需要程序显式管理。
  • 带宽比全局内存高10倍,延迟低20倍以上。
  • Kepler架构的SM存储顺序可见,如图所示。共享内存访问事物与全局内存相同,但当多个线程访问同一存储体时,会引发存储体冲突。

    5.2 共享内存的数据布局

    共享内存可以分为行主序和列主序访问。行主序访问适合多个线程同时访问不同的存储体,减少存储体冲突。而列主序访问则容易导致大量存储体冲突。

    通过使用填充技术,可以避免存储体冲突。填充技术通过添加额外数据,将同一存储体中的数据分散到不同存储体中,减少冲突发生的概率。

    5.3 减少全局内存访问

    使用共享内存可以缓存片上数据,减少核函数对全局内存的访问频率。在本节中,通过并行归约核函数,结合共享内存优化,全局内存访问的有效带宽得到了显著提升。

    5.4 合并的全局内存访问

    通过将共享内存作为缓存,优化全局内存访问模式,可以避免非合并访问带来的性能损失。在矩阵转置的例子中,通过合并读写操作,显著提高了内存带宽利用率。

    5.5 常量内存

    常量内存是一种只读内存,位于设备DRAM上,且有专用片上缓存。其优点包括:

  • 数据可广播到所有线程。
  • 主机可直接访问。
  • 数据缓存效果优于全局内存。
  • 常量内存适用于需要多线程同时读取相同数据的场景。

    5.6 线程束洗牌指令

    从Kepler架构开始,洗牌指令被引入,为线程束内的数据交换提供了高效的机制。洗牌指令支持整型和浮点型变量的交换,具备广播、复制、交叉交换等功能,可显著提高内核性能。

    5.7 总结

    共享内存、常量内存、只读缓存和线程束洗牌指令是优化GPU内存访问性能的关键手段。通过合理使用这些资源,可以显著提升应用程序的性能,减少内存延迟并提高带宽利用率。在实际应用中,应根据具体需求选择最优的内存访问模式。

    转载地址:http://obkb.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现ApproximationMonteCarlo蒙特卡洛方法计算pi值算法 (附完整源码)
    查看>>
    Objective-C实现area under curve曲线下面积算法(附完整源码)
    查看>>
    Objective-C实现argmax函数功能(附完整源码)
    查看>>
    Objective-C实现arithmetic算术算法(附完整源码)
    查看>>
    Objective-C实现armstrong numbers阿姆斯壮数算法(附完整源码)
    查看>>
    Objective-C实现articulation-points(关键点)(割点)算法(附完整源码)
    查看>>
    Objective-C实现atoi函数功能(附完整源码)
    查看>>
    Objective-C实现average absolute deviation平均绝对偏差算法(附完整源码)
    查看>>
    Objective-C实现average mean平均数算法(附完整源码)
    查看>>
    Objective-C实现average median平均中位数算法(附完整源码)
    查看>>
    Objective-C实现average mode平均模式算法(附完整源码)
    查看>>
    Objective-C实现avl 树算法(附完整源码)
    查看>>
    Objective-C实现AvlTree树算法(附完整源码)
    查看>>
    Objective-C实现backtracking Jump Game回溯跳跃游戏算法(附完整源码)
    查看>>
    Objective-C实现BACKTRACKING 方法查找集合的幂集算法(附完整源码)
    查看>>
    Objective-C实现bailey borwein plouffe算法(附完整源码)
    查看>>
    Objective-C实现balanced parentheses平衡括号表达式算法(附完整源码)
    查看>>