测试GPU的计算性能

在探讨给PowerVR Rogue GPU编写OpenCLkernels的快速指南以及分析针对图像卷积滤波的多种计算方案学习后,接下来我将花些时间来谈谈开发人员如何测量他们在PowerVR Rogue GPU上编写的OpenCL kernel的性能。

运行在CPU上的标量代码的性能取决于处理器执行汇编指令的速度。其次取决于诸如数据类型的选择(和ALU的性能有关)和编译器标志(例如,循环展开)

GPU上运行的矢量代码的性能却很难量化。正如这篇文章上讲到的,Rogue GPU包含了一些列并发的,多线程处理器。在这种条件下,每个任务都是单线程执行并且拥有一定数量的效率,这和在标量处理器比如CPU上运行代码类似。然而,除此之外,这里也有和使用率相关的性能指标 (由于多个warp的并发调度导致如此多的内存延迟被掩盖),占用率 (对于多处理器是多么的容易掩盖延迟)和并行化(什么样程度的线程在warp执行时可以锁步而不偏离).

下图展示了3个kernel在GPU上超时运行的情况。每个内核都有一个绝对执行时间,甚至在在更大的系统当中,一个内核多次执行时可能会有延迟,比如为CPU腾出时间来准备下一批数据的处理。除了这些绝对时间,每个内核都有三个效率指标,正如上面所提到的。接下来我们将会详细的进行讨论。

Rogue GPU包含硬件计数器,它可以用来测量这些性能指标。这些硬件计数器被Imagination的OpenCL 开发工具读取,这样你可以看到内核的任务执行,以更好地理解任何可以解决的性能瓶颈。一旦你实现了第一个应用程序,你应该描述其性能来了解这个性能以及决定是否要投入更多的时间来改善它的性能。这些工具包含PVRTune,OpenCL 使用率计算器和 PVRShaderEditor。

使用率

多处理器使用率是指多处理器执行的active warp与所有warp被阻断的时间之间的比例。以下的例子中,在内存操作时所有的warp都被阻断,占了25%的执行时间,那么内核的使用率就是75%。

占用率

多处理器占用率是指resident warp与所有可用的residency槽之间的比例。正如我们的OpenCL 编写指南完整的内部讨论,可用的residency 插槽总数可能是有限的,这是由一个内核独有的和本地内存需求所决定的。在这些可用的槽位中,当速度达到GPU可以发送warp到多核处理器时,那么实际使用的槽位数也许就会进一步减少。前面的指标通常可以在编译时间进行计算,随后在运行时做出决定。

下图显示了一个样品内核的占有率图形,由Imagination的OpenCL占有率计算工具得出的。紫色的三角形代表指定工作组大小为256,图中显示了最佳占有率达到了16 warp(100%)。该图还显示不同大小的工作组所带来的影响,例如,减少工作组大小到128就会减少占用率到8 warp(50%)。这与工作组的内存要求有关。例如,如果工作组大小是256就从公共内存中分配2048个字大小,总容量大小为4096字,然后两个工作组可以在多核处理器占用16位。如果工作组大小减少到128,假设内存大小相同,然后两个工作组将分配所有可用的本地内存只占据8位,并且阻止多核处理器接收其他8位。

注意占有率不能直接衡量其性能:一个内核使用率达到100%与占有率达到50%与一个内核使用率为100%占有率达到100%的效率是一样的。在前者情形下,更好的做法是将每个任务需要的独立内存加大一倍,进一步提升任务的标量性能。

并行化

并行是指锁步与任务连续化操作执行的比例。任务通常是在锁步并行的状态下执行的。如果任务通过条件分支出现warp偏离情况,硬件将使每个分支流连续化,禁止任务在那个路径继续下去,当所有路径任务完成后重新返回到相同的执行路径,这两种类型的执行方式如下所示:

在第一种方式下,所有的线程在锁步下执行这个列表(100%并行的效率)但是在第二个列表中,所有的线程按顺序轮流执行这个列表(0%的并行效率)。

记住上述的指标,我们的OpenCL编写指南将给出非常详细的关于Rogue GPU如何执行OpenCL 程序的说明,使您得到更先进的优化技术来提高性能。

补充阅读

这里有一个阅读菜单帮助你浏览发表在异构计算系列的每一篇文章:

• 关于手机系统使用异构计算的入门基础
• 为PowerVR Rogue GPU编写OpenCL内核的快速指南
• 对异构软件增加性能和提高能效
• 安卓平台的PowerVR成像协议
• 异构计算案例学习:图像卷积滤波
• 深入研究:使用PowerVR实现计算机视觉
 第一部分:计算机视觉算法
 第二部分:计算机视觉的硬件IP
 第三部分:在PowerVR上使用OpenCL实现人脸检测
• PowerVR成像协议照相机演示
• 支持在PowerVR成像框架内实现零拷贝流
• 测试GPU计算性能
• Imagination的灵活的,有效的移动计算方法
• 关于在PowerVR上实现异构计算的完整术语表

原文链接:
http://blog.imgtec.com/powervr/measuring-gpu-compute-performance

声明:本文为原创文章,转载需注明作者、出处及原文链接,谢谢!

--电子创新网--
粤ICP备12070055号