GPGPU将取代CPU?抢CPU “饭碗”

时间:2008-11-23   来源:   网友评论:0   人气: 543 作者:


 
如果你希望流畅地播放高清视频,一定会选择一款支持NVIDIA PureVideo或AMD Avivo的显卡(这里指以前的ATI,由于ATI已经被AMD收购,本文中统称为AMD)。视频解码原本是CPU的工作,可即便是双核处理器,在播放1080p高清电影时仍然比较吃力。利用显卡的PureVideo/Avivo视频解码加速功能,可以大大降低CPU的占用率,让高清视频能够流畅地播放。从广义来看,用显卡来加速视频解码,这就是GPGPU的一种初级形态。

  GPGPU,也有人形象地称为GP2U(GP的两次方U)。这两个GP代表了不同的含义,后一个GP表示图形处理(Graphic Process),和U加在一起正是我们熟知的GPU(图形处理器);前一个GP则表示通用目的(General Purpose),所以GPGPU一般也被称为通用图形处理器或通用GPU。

  在3D领域,GPU的用途很简单,就是为了更好地渲染3D场景,减轻CPU在图形运算方面的负担。而时下刚刚出台的GPGPU,则是将应用范围扩展到了图形之外,无论是科研教育、财务计算,还是在工业领域,GPGPU都得到了广泛的使用,关于它的科研成果和新应用模式也层出不穷。

  GPGPU比CPU强在哪里?

  细心的读者可能会问了,发展GPGPU有必要吗?难道还有什么工作是GPU可以做,而CPU不能完成的?没错,CPU是一种通用处理器,它无所不能,但是在某些特定场合,它的能力又是相对有限的。

  1.CPU的浮点运算能力严重不足

  和GPU相比,CPU最大的软肋就是浮点运算能力不足。现在主流的CPU产品,无论是Intel的还是AMD的,其浮点运算能力大多在10Gflops以下(flops表示每秒钟能够完成的浮点运算次数,Gflops代表每秒10亿次浮点运算)。而GeForce 6系列的浮点运算能力就已经达到了40Gflops左右,GeForce 7950 GX2的浮点运算能力更是达到了384Gflops。可见,CPU和GPU的浮点运算能力差距已不止一两个数量级。

  2.GPU的输入/输出带宽远超CPU

  如果输入/输出带宽有限,纵然内部性能再强,也是无法被系统利用起来的。对于GPU而言,这并不是一个大问题,作为提高场景真实度的一个重要方法,纹理映射功能很早就被加入到了GPU中,以解决GPU和显存之间的输入/输出带宽问题。GPU和显存之间的带宽是CPU和内存的10倍以上,GPU是“吃得下”,也“吐得出”,让巨大的浮点运算能力有了用武之地。

 

AMD的“流处理器”(Stream Processor)

  3.GPU更适合重复的计算

  GPU因为是专门为图形运算而设计的,考虑到了图形运算的特殊性。拿像素着色器(Pixel Shader)来说,当前批次所有的待处理像素,都会执行相同的像素着色程序,也就是说,相同或类似的运算会在海量的数据上重复运行。这恰恰符合SIMD(单指令多数据)的概念,让GPU非常适合处理SIMD运算,科学计算、数据库分析等高性能计算正是SIMD类型。因此不少在CPU上伤透脑筋的科研人员不得不将目标转向GPU,试图利用GPU的这种优化设计来进行图形之外的通用计算。

  4.GPU拥有优秀的编程语言

  当GPU的程序员在编写程序时,会发现高级着色语言也会给他们不少帮助。以前编写着色程序需要使用汇编语言,难度大、效率低,如今具有类C/C++的高级语言能够极大地提高程序员的编程效率。微软的HLSL、OpenGL的GLSL、斯坦福大学的RTSL,以及NVIDIA的Cg等高级着色语言都能够隐藏掉底层硬件的技术细节,提高GPU的开发效率。在这一点上,尽管CPU的编程语言走在前列,但GPU也已经逐渐赶了上来,开发和利用GPU比以前容易得多了。
B2.jpg 

B3A.jpg 
 

DirectX 10时代的到来,将让GPU更加适合通用计算

  看到这里,你应该会疑惑,为什么对比的是GPU和CPU,GPGPU和GPU有什么区别?这是因为,GPGPU就是以GP为基础开发的,GPU的优势也正是GPGPU的优势。从狭义的GPGPU来讲,它在GPU的基础上进行了优化设计,使之更适合高性能计算,并能使用更高级别的编程语言,在性能和通用性上更加强大。


 

文章评论