在这么多年的竞争中,并非没有试图挑战CPU地位的竞争者,与Intel一同成长的National国家半导体、Cryix、zilog这些先烈暂且不说,即使是幸存下来的AMD也未能革Intel的命,规模上与Intel差距甚远。这些公司未能逆转Intel的原因有很多,不过有一点是不容忽视的,Intel掌握着X86指令的专利权,别的公司用X86处理器与Intel竞争在先天上就处于不利地位,或许最好的方法是另辟蹊径,候选人之一就是GPU。 伴随GeForce 256而生的GPU概念问世于1999年,GPU指的是Graphic Processing Unit(图形处理单元),这是一款真正意义上的3D显卡,直到现在GPU其最重要的功能也是图形处理,尤其是3D游戏处理。随着技术的突飞猛进,显卡的性能越来越强大,逐渐具备了可编程流水线、高密度并行处理等特性,显卡的浮点运算能力已经超越了CPU,以目前最强的i7 975为例,其浮点运算能力也远远达不到HD 4850的1TFlops(等效每秒一万亿次运算),显卡超强的浮点运算能力为GPU实现通用计算打下了基础。
Folding@home这样的科学运算是发挥GPU通用运算的最佳场合
2002年的Siggraph展会上,ATI、NVIDIA等商场提出了GPUGPU(General Purpose Computation on the GPU,通用图形处理器)的概念,寻求将GPU强大的浮点运算能力应用在图形处理之外的场合,像科学计算、数据库分析这样需要大容量、高速度的重复性运算成了GPUGPU的通用计算的最佳领域。 到了DX10时代,GPU通用计算又获得了一次良好的发展机遇,微软在DX10规范中提出了统一处理单元的概念,将之前的VS顶点渲染器和PS像素渲染器整合为流处理器进行统一运算,显卡的并行计算能力和可编程性也同步提升。正是在统一渲染器的基础上,NVIDIA和ATI各自开发了自己的GPU通用计算技术CUDA和Stream,将复杂的图形处理与通用的编程衔接起来,使得GPU编程像普通的编程一样简单。
GPU通用计算应用最广泛的领域就是各种高性能计算领域,包括石油勘探、科学计算、药物分析乃至天文演算,这些领域都是普通用户平时接触不到的,以致普通消费者很难体会到GPU通用技术到底能带来哪些好处,因此我们就以GPU通用计算在视频压缩中的应用为例,来个管中窥豹,一探CUDA/stream加速技术的究竟。在测试之前,我们先来看看Stream和CUDA的一些简单介绍。