10月份,在图形图像及高清多媒体技术领域的领导厂商S3 Graphics发布了S3 FotoPro?,这是一款基于Chrome 400系列显示芯片可编程架构的GPGPU应用程序。它完美利用S3流处理器矩阵,利用GPU加速并行数据处理,触发数以千计的线程进行并行处理,从而实现千兆级的数据计算能力。S3 FotoPro?的发布标志着GPGPU真正开始进入应用阶段。
GPGPU:从图形处理到通用计算
GPU用于通用计算(General Purpose GPU,也就是GPGPU)成为最近几年来业内备受关注的一个话题。在很长一段时间,GPU都是图形处理的专有载体,很少有人想过使用GPU来处理绘图之外的一般计算。然而,近几年来,GPU性能的迅速提升以及相关技术的发展让人们对于GPU的这一应用给予了空前的期望和热情。
在性能提升的速度上,GPU已经远远超出CPU。很长一段时间以来,CPU一直按照摩尔定律阐释的速度向前发展,每隔18个月单位面积IC上所容纳的晶体管数目便增加一倍,性能也提升一倍。然而,自1993年开始,GPU的性能便以每年2.8倍的速度高速增长。
而在浮点运算能力和带宽等关键指标上,GPU也远远超出了同期的CPU。拿一块工作频率为3.0GHz的P4处理器来说,其晶体管数目为1.25亿个,即使算上SSE指令集的SIMD,也只有6GFlops的峰值浮点处理能力,而同期的一块NV 40 GPU就有2.22亿个晶体管,峰值浮点运算能力很轻易就超过40GFlops。拿带宽来说,英特尔曾为其P4 XE系列处理器(1066MHz前端总线)所能提供的8.6G带宽而倍感自豪,而同期一块普通的GeForce 6800就拥有20GBs以上的显存带宽。
基于强大的并行处理能力和极高的存储器带宽,我们完全可以将GPU抽象成一个流处理器(Steam Processor),来用于诸如科学计算、数据分析、线性代数、流体模拟等需要大量重复的数据运算和密集的内存存取的应用程序,那么我们就能获得比CPU强悍的多的计算能力。
随着GPU可编程性技术的出现,GPGPU也由构想逐渐进入可以实用的崭新阶段。
S3 FotoPro?:开GPGPU应用之先河
但是从实用到应用,还有一个重要的坎要跨,那就是必须有相应的计算工具与之相配合。S3 FotoPro?正是这样一款计算工具,目前其主要的应用是借助S3 GPU的流处理器架构从事复杂图形计算进而改善图像质量。
FotoPro可以对图像进行评估,然后使用可定制算法对图片进行适当调整,以增强色彩清晰度、减少雾化、优化饱和度和音色平衡性、提高人物皮肤平滑度等,还能同时对多个图像进行自动增强处理。此外,在进行图像质量增强的时候,并不破坏原始文件,而是在文件名之后加入“_r”后缀另存为新图像。
如下图所示,在使用S3 FotoPro?进行图像质量改善的时候,并不是GPU承担所有的计算任务,而是GPU和CPU来协同完成。如下图所示,其基本的程序如下,当图形计算的任务下达后,首先由CPU完成解码工作,然后将需要进展的后续工作根据不同的处理单元特性进行匹配性分配。需要进行大量并行计算的任务便由GPU承担,而剩下的协调计算任务则由CPU自己来完成。在这个过程中,基本的计算资料置于CPU的寄存器中,GPU和CPU根据各自计算的需要从中调用基础数据。当这一阶段的计算过程完成,CPU便将双方计算获得的数据进行整合,重新编码,进而获得质量改善后的图片。
由于在使用过程中,GPU的并行计算能力得到了充分的应用,直接反应在结果上,便是处理任务的时间大幅缩短。如下图所示,在将GPU纳入之后,处理同一任务的时间缩短近60%,但是图像处理的品质却毫不逊色。
注:在本次测试中,CPU采用的是Intel E8200 (2.66G dual-core)
如今,S3 FotoPro还在持续改进中。据S3工程师介绍,在未来推出的版本中,将会让GPU承担更多的计算任务,如解码编码、更多的分析工作等,以充分发挥其强大的并行计算能力。
尽管目前的应用还没有脱离图形处理的范畴,但是S3 FotoPro的推出还是让人们看到了希望:GPGPU并不是仅仅停留在概念或者实验室层面,而是已经可以应用并解决现实问题。相信,不久之外,在HPC、高清视频编解码、科学计算、工程计算、医学、图像处理、物理计算等众多领域,我们都可以看到GPGPU技术应用的身影。