GPU最初的设计目的,是用来减轻CPU的显示计算工作量。而如今,经过一些科学家的验证证明,GPU完全可以用来为一些非图形的应用程序提速。北卡罗来纳大学的模式、运动和动画的几何算法研究小组在上周宣布,Nvidia';s 7800 GTX显卡,可以另他们的测试应用程序的运行速度提升35倍。
“我感觉这个新硬件的浮点带宽要比6800 Ultra的高的多,”北卡罗来纳大学电脑科学系的助理教授Naga K. Govindaraju表示。“在6800 Ultra上面,我们(测试程序的速度提升)在某种程度来说非常有限……因为这张卡上的带宽不够,我们无法完全发挥卡上的性能。而7800 GTX,我感觉其浮点带宽要高很多。”
在非3D场景显示运算中利用GPU潜在性能的窍门,就是将日常的操作转换成特定的两维显示函数,如纹理填充,北卡罗来纳大学的教授Dinesh Manocha表示。Manocha教授指出,普通CPU处理的是线程,而GPU则是通过管道以单指令来对多个数据元素进行同时处理——其所处理的是数据流。相比之下,CPU下的并行处理,是在多个核心中把指令线程划分成多个部分,这被Manocha教授称为“von Neumann瓶颈”。NVIDIA 7800 GTX这个GPU,使用了24条象素管道和8个顶点单元,来实现其单指令/多数据(SIMD)架构。
Govindaraju教授表示,这种把所有东西都伪装成游戏的技术,能把许多常用的函数,如排序算法,简化成GPU在多管道中执行的一条指令。据模式、运动和动画的几何算法研究小组小组最近做了一项测试,对他们的GPU排序算法和传统的线性快速排序算法进行了比较。在对1800万个数据进行排序时,由微软Visual C++编译的快速排序算法,用了21秒多来完成整个任务;由对超线程进行了优化的Intel';s C++所编译的快速排序算法,用了大约17秒来完成整个任务。而他们的GPU排序算法仅仅用了不到两秒的时间就完成了任务。
该小组工作的一个目的是为了显示日常PC到底有多大的运算能力被荒废掉了,特别是把单纯的日常软件工具和需要大量运算的3D游戏相比。Manocha教授和Govindaraju教授承认,改进像Excel和Matlab这些程序的通用运算库,可以成为能够完全利用显卡芯片运算能力的SDK未来开发的第一步。
|