● ATI GPU OPEN CL综合性能分析
上一节我们使用两种软件考察了ATI GPU的吞吐特性,这个测试结果佐证了我们之前对于ATI GPU架构的相关分析,接下来我们将通过OpenCL通用计算测试程序OpenCL General Purpose Computing Benchmark (简称GPC Benchmark OCL)1.1版本全部项目来测试NVIDIA和ATI顶级单卡单芯性能,我们选择了10.3正式版驱动(AMD Radeon HD 5870)和256正式版驱动(NVIDIA GeForce GTX 480)。
在测试之前有必要对本次测试项目做简单介绍:首款国人开发的支持GPU的OpenCL通用计算测试程序OpenCL General Purpose Computing Benchmark (简称GPCBenchMarkOCL)是由国内几名高性能计算从业人员和爱好者合作编写的,目的是为了评估在不同的OpenCL平台上一些基本算法和应用的性能。与目前流行的一些OpenCL、DirectCompute通用计算测试程序的不同在于,目前这些测试程序测试项目过于单一,基本上就是某一两种算法的性能测试,甚至干脆就是理论峰值计算性能的测试。
而实际上,OpenCL计算设备包括GPU的计算性能是受非常多因素影响的,除了计算单元的频率和数量之外,还有计算单元架构、Global memory(显存)带宽、Local memory(GPU内的片上存储器,NVIDIA称为Shared memory,AMD称为Local Data Share)带宽和Bank conflict、存储器合并访问情况、存储器同步成本、缓存等各种因素。因此某些纸面计算性能非常高的GPU执行某些计算时性能却不一定好;又或者,某GPU在执行某种计算时虽然性能落后于另一架构的GPU,但是在执行另一种计算时性能反而超前。GPCBenchMarkOCL集合了高性能计算领域多种常见的基础算法和应用,能比较全面地评估GPU及其它OpenCL计算设备在通用计算应用中的性能。
GPCBenchMarkOCL软件界面
目前GPCBenchMarkOCL的测试项目包括:
1、Global Memory带宽(读、写、拷贝以及PCI-E总线带宽) - 主要考察不同传输尺寸下各种访存操作的性能
2、Local Memory带宽(带宽和Bank conflict) - 分析Local memory带宽与数据类型、Bank conflict的关系
3、32位整数性能(加法、乘法、乘加和位运算) - 分析处理器32位整数处理性能
4、单精度浮点性能(加法、乘法、乘加和特殊函数如sqrt、sin等) - 分析处理器单精度浮点数处理性能
5、双精度浮点性能(加法、乘法、乘加和特殊函数如sqrt、sin等) - 分析处理器双精度浮点数处理性能
6、常用计算(单精度和双精度浮点的大矩阵乘法、大矩阵转置、归约、DCT8x8) - 分析处理器在进行一些常用矩阵与信号处理运算中的表现
7、图像处理(亮度直方图、2维卷积、降噪、双立方插值缩放) - 分析处理器在进行一些常用图像处理中的表现
8、密码学(目前只有SHA-1 Hash Loop,以后将加入盒型加密和彩虹表) - 分析处理器在密码学应用中的性能。
在GPCBenchMarkOCL中,所有测试都会在CPU和GPU(包括其它OpenCL设备)上运行并给出性能结果,不过CPU上运行的并非OpenCL代码而是用常规C语言实现的并行算法(会调度全部的CPU核)。而GPU上运行的OpenCL代码经过试验能正确运行在NVIDIA GTX285和AMD HD5870上。各算法的OpenCL实现有部分修改自NVIDIA和AMD的SDK,部分是由相关从业人员和爱好者提供的。
由于NVIDIA和AMD的GPU架构上有很大区别,对于某些算法也许能专门针对NVIDIA或AMD的GPU架构写出非常难看的比较极端优化的OpenCL代码,但考虑编程难度、程序的可读性和普遍意义,GPCBenchMarkOCL只使用了一般的GPU编程优化方法做了简单优化(例如使用Local memory暂存数据、利用合并访问规则等),并且在不同的OpenCL计算设备上也是运行相同的OpenCL代码来进行测试。这保证了GPCBenchMarkOCL是目前比较容易找到的较为干净的测试软件,它可以真实反映硬件特性对不同数据类型的适应程度,这一点最重要。
GPCBenchMarkOCL支持AMD RV770及Evergreen(R800)系列,以及NVIDIA G8x、G9x、GT200、GT21x、GF100等GPU的OpenCL平台。我们选用的测试平台同上一节。
分析上图得到的测试数据我们可知,在纯吞吐环境中,AMD延续了R600架构以来的特性,其浮点吞吐量的优势得以体现。特别是浮点运算(单精度)测试中,HD5870压制了强大的Fermi架构GTX480。在密码学测试中,因为很少牵扯到计算层面,GPU只是不断随即生成数据然后去试探,所以A卡理论吞吐量高的特性再次得到体现。
但是只要涉及到常规数学方法测试,这种实际运算环境中将会包含大量跳转嵌套分支等指令,只有运算器组织得当的GPU,才能有效避免理论值的大幅度衰减。A卡因为其架构设计原因,大幅度落后于Fermi架构。
其中HD5870落后最为明显的图像处理,包括亮度直方图绘制、2维卷积(锐化)、快速非局部均值法降噪、图片缩放(双立方滤波)。这项测试主要考虑GPU的全局存储器和纹理访问能力,同时局部存储器原子操作也占到一定比重,所以架构较新的Fermi系列产品表现优异。
我们将涉及存储器的测试归类到存储总评,密码学和单双精度浮点乘加归类到吞吐总评,图像处理和单双精度图形处理归类到计算总评,得到以上测试结果。这个结果可以非常直观地告诉我们在浮点吞吐中,R800由于其SIMD核心内的5D ALU采用VLIW技术,所以遇到规范的数据类型时可以表现出近乎满载的效率,而NVIDIA从G80到GF100芯片都面临吞吐量受制于流处理器结构的影响。
但是一旦牵扯到包含大量跳转嵌套分支等指令的常规数学方法测试,NVIDIA对ALU阵列的组织形式优化立刻体现出优势,此时AMD的VLIW Cores无法满载运行,每一时刻都有大量运算单元空闲。
另一个值得注意的地方就是NVIDIA GPU在局部存储器和全局存储器测试中表现优异,特别是全局存储器在197-257的驱动升级中提升了将近50%,这充分反映了GPU加入通用Cache的重要性。这里的局部存储器是寄存器到cache或者shared memory,全局存储器是cache或者shared memory到显存。我们估计NVIDIA优化了Cache的命中率。cache的命中来自对内存系列也就是显存的命中,所以GPU的整体效率会受益于Cache单元的不断优化。
- 第1页:全文导读与内容简介
- 第2页:前言:通过GPU见证行业变革
- 第3页:第一章:GPU工作原理与并行计算
- 第4页:21世纪视觉需求与GPU变化
- 第5页:从山峰渲染了解GPU图形流水线
- 第6页:CPU与GPU的设计方向决定运算能力
- 第7页:GPU并行编程为何加速发展
- 第8页:GPU并行计算已成未来趋势
- 第9页:初识高性能并行计算
- 第10页:高性能并行计算发展历程
- 第11页:高性能并行计算单元分类
- 第12页:初识基于GPU系统的云计算
- 第13页:第二章:GPU结构与ATI产品发展
- 第14页:统一着色器架构释放GPU运算能力
- 第15页:传统GPU发展与着色器管线
- 第16页:传统SIMD结构流处理器指令细节
- 第17页:MIMD结构流处理器指令细节
- 第18页:R600时代对SIMD架构补充与优化
- 第19页:两种结构流处理器优劣对比
- 第20页:R300以来的芯片架构及其影响
- 第21页:ATI第一代统一渲染架构Xenos
- 第22页:统一渲染GPU R600临危受命
- 第23页:AMD对GPU架构的不断改进和优化
- 第24页:未来ATI图形芯片架构预测
- 第25页:第三章:GPU通用计算发展与细节
- 第26页:多核并行计算困惑与发展
- 第27页:基于AMD CPU+GPU异构计算平台
- 第28页:着色器模型变化历程与总结
- 第29页:Shader计算能力快速发展
- 第30页:揭秘GPU高性能计算关键
- 第31页:CPU与GPU的区别和发展方向
- 第32页:如何将GPU功能单元映射为通用单元
- 第33页:分支对GPU结构体系的挑战
- 第34页:GPU与CPU将如何演绎融合与吞并
- 第35页:第四章:GPU内部计算实现细节
- 第36页:GPU主要计算单元分布和职能
- 第37页:GPU内部通用计算代码运算过程
- 第38页:认识GPU浮点计算精度
- 第39页:整数运算能力与未来融合架构
- 第40页:GPU存储体系特点与变化
- 第41页:ATI GPU吞吐特性对比与分析
- 第42页:ATI GPU OPEN CL综合性能分析
- 第43页:先进混合架构之Larrabee展望
- 第44页:概念型融合架构之Fusion APU展望
- 第45页:GPU进化架构之Fermi分析
- 第46页:第五章:ATI GPU通用计算实例
- 第47页:ATI Stream技术发展与现状
- 第48页:OPEN CL接口技术与异构运算
- 第49页:Havok引擎与CPU+GPU异构运算
- 第50页:BOINC平台充沛的ATI GPU加速项目
- 第51页:最具影响力的Folding@home项目
- 第52页:GPU架构对于其他实例的适应性
- 第53页:全文总结与未来架构展望