● AMD南岛架构能否改善运算效率
Compute Shader技术是微软DirectX 11 API新加入的特性,在Compute Shader的帮助下,程序员可直接将GPU作为并行处理器加以利用,GPU将不仅具有3D渲染能力,也具有其他的运算能力,也就是我们说的GPGPU的概念和物理加速运算。多线程处理技术使游戏更好地利用系统的多个核心。
Computer Shader的初衷,就是使用通用计算的手段来进行后处理。由于GPU的浮点运算能力非常强大,支持GPU进行通用计算的技术发展势头很快,NVIDIA和AMD分别有CUDA和Stream技术,以前两家是各自为战,如今微软也看到了GPU通用计算的曙光,在DX11中加入了Compute Shader这一技术,意在统一当前的通用计算技术。你可以认为Compute Shader标准就是微软提出的OPEN CL。
关于A卡和N卡在OPEN CL计算方面的性能差异,很多媒体进行过测试,但大家实际上一直在找一个合适的平台,在找一套合适的测试基准程序。目前,首款国人开发的支持GPU的OpenCL通用计算测试程序OpenCL General Purpose Computing Benchmark (简称GPC BenchMark OCL)已经公开并且升级到1.1版本。中关村在线显卡频道决定使用这款软件,对AMD和NVIDIA的架构特性做一些对比,以测试它们在哪些环境中能发挥出更好的理论性能。
GPCBenchMark测试成绩对比
分析上图得到的测试数据我们可知,在纯吞吐环境中,AMD延续了R600架构以来的特性,其浮点吞吐量的优势得以体现。特别是浮点运算(单精度)测试中,HD5870压制了强大的Fermi架构GTX480。在密码学测试中,因为很少牵扯到计算层面,GPU只是不断随即生成数据然后去试探,所以A卡理论吞吐量高的特性再次得到体现。
但是只要涉及到常规数学方法测试,这种实际运算环境中将会包含大量跳转嵌套分支等指令,只有运算器组织得当的GPU,才能有效避免理论值的大幅度衰减。A卡因为其架构设计原因,大幅度落后于Fermi架构。
其中HD5870落后最为明显的图像处理,包括亮度直方图绘制、2维卷积(锐化)、快速非局部均值法降噪、图片缩放(双立方滤波)。这项测试主要考量GPU的全局存储器和纹理访问能力,同时局部存储器原子操作也占到一定比重,所以架构较新的Fermi系列产品表现优异。
Computer Shader里同样有大量的常规数学方法。只要和“常规数学方法”有所接触,A卡就会因为架构设计受到很大影响。其中矩阵,卷积,离散余弦和反余弦等用的相对比较多。
实际上超标量结构本身并没什么不好或者说落后,但是要让超标量兼顾吞吐和灵活性,外围的要求就高了。VLIW Cores必须加入更多资源和仲裁能力,晶体管数量会因此提高很多。
在上图中,图一表示了Compute Shader做图像后处理(Post Process),图片是《地铁2033》的游戏截图,利用Compute Shader技术做景深处理可以得到更好的效率。图二表示利用Compute Shader技术做IA人工智能。图三表示CUDA或者未来的Compute Shader结合OptiX技术做光线追踪。图四表示SPH流体模拟,流体的模拟,是典型的通用计算应用实例,对Shader性能要求较高。
Compute Shader可发挥的地方很多,游戏中可以使用GPU进行光线追踪、A-Buffer采样抗锯齿、物理特效、人工智能AI等游戏特效运算。在游戏之外,程序员也可以利用CS架构进行图像处理、后处理(Post Process)等。
在硬件支持Compute Shader之后,相应的硬件必须要比当代硬件更加灵活,因为在运行CS代码的时候,硬件必须支持随机读写、不规则列阵(而不是简单的流体或者固定大小的2D列阵)、多重输出、可根据程序员的需要直接调用个别或多个线程、32k大小的共享寄存空间和线程组管理系统、粒数据指令集、同步建构以及可执行无序IO运算的能力。
实际上AMD也看清了GPU未来发展的实质,首先在RV770中加入LDS存储器,然后在RV870中对LDS的可操作性的改进,以及shared Memory的扩展,都是面向通用计算设计的。或者说,是为了Compute Shader而不得不做的事情。
我们推测在即将发布的AMD下一代GPU也就是HD6000系列“Southern Island”(“南岛”)架构中,几何计算能力层面的突破可以依靠增加曲面细分单元(Tessellator)来实现,但是Compute Shader计算效率的提升的重任,将落在未来的架构身上。
无论如何,“南岛”将走出AMD改革的重要一步,如果能借助自从RV770以来在产品方面的转变,AMD或许能够用自己的思路来提升GPU的运算能力。
届时我们将看到GPU越来越通用化,其分支处理能力更加强大,运算精度不断提升。未来的CPU则越来越注重多线程能力,以此巩固自己在并行计算领域的优势,我们将在未来看到两种不同的芯片向自己所没有触及过的领域发展。