GPU编程之进击的优化.docx

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
GPU编程之进击的优化.docx

GPU编程深度优化技术_v2本篇文章是对2015年年中的一篇文章的勘误及删改增作者:李修宇注:由于听说并发现第一个版本第二章(GPU矩阵乘法的高效实现)未经作者本人同意的情况下擅自窃用放入其2015年年底出版的书中且从未提及作者本人,对于此种低劣及无耻的行为,作者在此声明:未经作者同意,不得以任何方式用作商业用途目录设备微架构CUDA设备1.0.0 核心微架构1.0.1 指令编码格式1.0.2 寄存器文件结构1.0.3 指令流水线1.0.4 Pascal架构(待续)1.1 GCN设备1.1.0 核心微架构1.1.1 指令编码格式1.1.2 寄存器文件结构1.1.3 指令流水线1.2 GPU设备上的条件分支第二章 GPU矩阵乘法的高效实现2.0 前言2.1 指令级并行和数据预取2.2 双缓冲区2.3 宽数据内存事务2.4 二级数据预取2.5 细节调优第三章 基于GPU的大规模稀疏矩阵直接求解器3.0 简介3.1 基于quotient graph的符号分析3.1.1 顶点重排序3.1.2 构建消去树3.1.3 寻找超结点3.1.4 符号分解3.2 多波前法3.3 超节点方法3.4 多波前+超节点方法的并行分解算法小结参考资料第四章 CNN中的卷积计算前言1 基于矩阵乘法的卷积算法2 类矩阵乘法的卷积算法小结第五章 基于GPU的LU分解(待续)5.0 一般实现5.1 分块实现5.2 使用动态并行5.3 多GPU版本第六章 GPU上的光线追踪(待续)6.1 kd-tree算法介绍及内核实现6.2 less-分支版本的kd-tree算法及内核实现6.3 ropes-kdtree算法及内核实现第七章 LBM流体计算(待续)尾章 GPU编程优化技术总结4.1.0 CUDA设备上的优化技术4.1.1 访存优化4.1.2 指令优化4.1.3 内核调用优化4.2.0 GCN设备上的优化技术4.2.1 访存优化4.2.2 指令优化4.2.3 内核调用优化4.3 构建性能可移植的程序设备微架构前言第一章我们介绍CUDA设备和GCN设备的微架构做。对设备微架构的了解可以在深度优化时提供理论依据和方向指导,对微架构方面细节的掌握有时甚至是帮助某些应用达到最优性能必须要的。当然,对底层架构细节的了解并不是必须的,若读者对这些内容没有兴趣,可以跳过本章。 CUDA设备微架构kepler架构包含了数组SMX,每个SMX有以下功能单元构成:1 指令预取单元和微指令缓冲区2 4个warp调度器,每个warp调度器对应两个指令分派单元3 192个CUDA Core和64或8个双精度计算单元4 32个超越函数计算单元(SFU)5 分支逻辑控制单元6 32个LD/ST存储器访问单元7 片上缓存结构,包括共享内存,L1缓存,纹理缓存,常量内存以及只读缓存,不同的设备大小可能不同kepler设备SMX微架构图各种指令在不同的功能单元上执行,大致可分为四类:简单计算指令,复杂计算指令,分支指令和访存指令,下面是各个单元所支持的操作(仅以kepler和maxwell设备为例)CUDA Core :32位单精度浮点加法,乘法,积和融加运算;32位整数加法;32位数据的比较操作,最小和最大操作;32位数据的位逻辑操作(and, or, xor);8位,16位数据和32位数据之间的转换操作。双精度计算单元:双精度浮点加法,乘法,积和融加运算。SFU:整数乘法,除法;单精度浮点数除法以及基本的数学函数如正弦,余弦和指数等操作;popc,clz,brev,bfe和bfi操作。分支逻辑控制单元:分支,跳转等逻辑操作。LD/ST单元:全局内存,共享内存,局部内存,常量内存,纹理加载等存储器访问操作(寄存器数据的访问无需通过LD/ST单元)。warp vote和warp shuffle操作时在是专门的组合逻辑单元上完成的。maxwell设备和kepler类似,但是每个SMM里包含了四组独立的warp计算单元,每个warp单元包含了一个微指令缓冲区,两个指令分派单元,1个warp调度器,32个CUDA Core,1个双精度计算单元,8个单精度SFU,4个纹理单元,64k个32位寄存器组成的寄存器文件以及24k纹理缓存。所有四个warp单元共享一个指令缓存以及64k~96k的共享/L1缓存。虽然每个SMM中的CUDA Core数量少于SMX,但是每个计算单元具有更高的性能功耗比。相对来说,maxwell具有更优秀的单精度计算效能,但为了平衡性能功耗比,所有计算能力的maxwell设备对双精度计算的支持都十分有限,而kepler更适合那些需要双精度计算的专业领域。每三个SMX或每四个SMM组成一个GPC,所有GPC共享512k~2M的二级缓存。缓存小结:对于计算能力2.x的设备,纹理管线完全独立于

文档评论(0)

czy2014 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档