|
[NVIDIA开放式CUDA的应用以及发展趋势]
CUDA相信大家已经对它不再陌生,它的全名是Compute Unified Device Architecture,首先要说明的一点是,CUDA尤其擅长的是某一方面,而并不是面面俱到。CUDA的开发是基于NVIDIA GPU平台的,因此发挥GPU的并行优势才是最主要的目的。理论上讲,CUDA对于非图形的计算并没有什么限制,不过它还是相对比较适合高度并行的计算,毕竟这是它的长处。这里所谓的高度并行的数量级为上千个,相对于CPU来讲,双核的CPU也许几个线程就能充满它整个的计算单元,然而CUDA-enabled GPU却能够容纳上千个线程(也就是GPU中数百个SP单元的功力),所以常遇到的高性能计算领域的问题就特别适用于CUDA,而之前通常采用计算机集群的方式来进行计算。

而目前GPU已经发展到十分强大的地步,从GeForce6开始,就能够支持比较复杂的控制指令,比如条件转移、分支、循环和子程序调用等。而到了新一代的显卡,GPU的程序控制能力又增强了很多,支持的程序长度也得到了更大的扩展,也就是说利用GPU还是可以写一些比较复杂的程序。
当然CUDA也有其弱势的地方,其还是主要去做那些能够分成很多个独立线程的数值计算。比如说矩阵的乘法计算,矩阵相对应的元素的计算是没有什么联系的,可以很多个线程同时送入很多个处理器进行并行处理,这就非常适合于用CUDA来解决。当然并不是所有的事情CUDA都能够很好地解决,比如像操作系统这样复杂的指令和纷繁的分支循环而又用很少的线程来处理,这显然就不是CUDA的强项了。高度并行的计算是CUDA的技术特性之一。

CUDA已经应用在很多领域,包括在通用计算中的一些GPU加速,游戏中的物理模拟等等,而在科学计算中,CUDA可发挥的功效就更大了。比如有限元的计算、神经元的研究计算、地质分析等等科学研究的领域;利用CUDA并行计算的特点,我们可以实现很多以前用CPU做起来很慢的应用。比如现在网络视频已经成为了人们生活的一部分,很多朋友都喜欢自己拍摄一些短片传到网站上与朋友一起分享,这类网站也非常多,如土豆、youtube等,而为了网络传输的效率这些视频网站对片源尺寸等都有着严格的要求。
要将自己上传的短片或影片符合要求,就需要对片源进行压缩,而以往这个工作是通过CPU来做的,压缩一部影片要花费几小时甚至数十小时来完成,而通过CUDA来压缩同样的影片却可以将时间减少为几分钟到几十分钟,两者的差距非常巨大。而目前这种通过GPU实现视频压缩的技术还只有NVIDIA的CUDA可以实现,其竞争对手ATI还没有提供相应的技术。
|