平均30帧不等于流畅!千元级显卡解析
提起GPU通用计算,自然会让人想到NVIDIA的CUDA、ATI的Stream以及开放式的OpenCL标准,再加上微软推出的DirectCompute,四种技术标准令人眼花缭乱,他们之间的竞争与从属关系也比较模糊。
首先我们来明确一下概念:
1. OpenCL类似于OpenGL,是由整个业界共同制定的开放式标准,能够对硬件底层直接进行操作,相对来说比较灵活,也很强大,但开发难度较高;
2. DirectCompute类似于DirectX,是由微软主导的通用计算API,与Windows集成并偏向于消费领域,在易用性和兼容性方面做得更出色一些;
3. CUDA和Stream更像是图形架构或并行计算架构,NVIDIA和ATI对自己的GPU架构自然最了解,因此会提供相应的驱动、开发包甚至是现成的应用程序,通过半开放的形式授权给程序员使用。
其中ATI最先提出GPGPU的概念,Folding@Home和AVIVO是当年的代表作,但在被AMD收购后GPGPU理念搁浅;此后NVIDIA后来者居上,首次将CUDA平台推向市场,在这方面投入了很大的精力,四处寻求合作伙伴的支持,并希望CUDA能够成为通用计算的标准开发平台。
NVIDIA CUDA架构示意图
在NVIDIA大力推广CUDA之初,由于OpenCL和DirectCompute标准尚未定型,NVIDIA不得不自己开发一套SDK来为程序员服务,这套基于C语言的开发平台为半开放式标准(类似与Java的授权形式),只能用于NVIDIA自家GPU。AMD始终认为CUDA是封闭式标准,不会有多少前途,AMD自家的Stream平台虽然是完全开放的,但由于资源有限,对程序员帮助不大,因此未能得到大量使用。
ATI Stream示意图
DX11时代我们迎来了微软的DirectCompute 11和OpenCL这两大GPU计算API,其定位就相当于3D图形领域的DirectX和OpenGL。就如同GPU能同时支持DirectX与OpenGL那样,NVIDIA和AMD对DirectCompute和OpenCL都提供了无差别支持。
我们希望新API的出现能够打破目前GPU计算领域混乱的格局,并带来更多实用的应用和软件,但从目前的发展方向来看,进展还是相当缓慢。当前主流的一些GPU计算类软件,主要还是集中在视频转码和编辑方面,都是以NVIDIA和AMD的CUDA/Stream技术为主。
就拿视频转码来说,ATI驱动集成的AVIVO转码器功能太过简单,转换后视频的画质很差,而且主要依靠CPU转码,跟GPU的关系不大。而NVIDIA的Badaboom完全依靠GPU转码,GTX480的性能都能完全释放出来,MediaCoder更是能够充分发挥出CPU和GPU的效能,成为目前转码速度最快的软件;MediaShow能同时支持A卡和N卡,主要依靠CPU转码,对GPU的要求很低,双方性能差距并不明显。
而在视频编辑和应用方面,目前视频倍线软件和2D转3D的软件能够同时支持CUDA和Stream技术,但一般都是等支持CUDA大半年之后,才加入对Stream的支持。此外还有一些加密解密、视频修复软件只支持CUDA不支持Stream,很显然AMD对于GPU计算方面投入的精力还不够多,支持Stream的软件无论数量还是质量都跟CUDA相差一大截。