随着显示芯片已慢慢蜕变为GPU后,显卡已经被赋予了可编程的功能。在之后几年中,GPU也以超越CPU的速度而高速的发展。如今即便是最最便宜的显卡也可以实现一切游戏策划者需要的特效。无论是299、599还是1399、2199,它们之间的区别可能更多的是对于执行这些特效的速度,而并非
CPU与GPU?CUDA适合大规模并行处理
可能说到这里,可能我会把网友们引入一个误圈里,就是目前炒得火热的“GPU与CPU事件”。对这个问题,是时候站出来吼一下了:“这显然是不对地”!显然GPU和CPU还是各自做着不同的工作的,GPU的计算主要集中与高效率低成本的高性能并行计算,所以事实上在一个系统里,一个高效的GPU配合高效的CPU,这样,整体的效率才会有很明显的提升。
CUDA还是比较擅长于某一方面的,而并非是面面俱到。CUDA开发平台是基于NVIDIA GPU的平台上,因此发挥GPU的并行优势才是最终的目的。从客观上考虑,CUDA对于非图形的计算,并没有任何的限制性,不过CUDA还是相对比较适合与高度并行的计算。这里所谓的高度并行的数量级为上千个,相对于CPU来讲,双核的CPU也许几个线程就能充满它整个的计算单元,然而CUDA-enabled GPU却能够容纳上千个线程(也就是GPU中数百个SP单元的功力),所以常遇到的高性能计算领域的问题就特别适用于CUDA,而之前通常采用计算机集群的方式来进行计算。
CUDA显卡支持列表 |
从NVIDIA GeForce6开始,就已经能够支持较为复杂的控制指令,比如条件的转移,分支以及循环和子程序用等。到现在的新一代显卡,GPU的程序控制能力又增强了不少,支持的程序长度也得到了扩展,也就是说GPU的任务不单单为一项,而是还可以写一些较为复杂的程序。
当然,万物皆不完美,其还是主要去做那些能够分成很多个独立线程的数值计算。比如说矩阵的乘法计算,矩阵相对应的元素的计算是没有什么联系的,可以很多个线程同时送入很多个处理器进行并行处理,这就非常适合于用CUDA来解决。当然并不是所有的事情CUDA都能够很好地解决,比如像操作系统这样复杂的指令和纷繁的分支循环而又用很少的线程来处理,这显然就不是CUDA的强项了。高度并行的计算是CUDA的技术特性之一。
目前来说,CUDA已经被应用在了许多领域中,包括在通用计算中的一些GPU加速,游戏中的物理模拟等等,而在科学计算中,CUDA可发挥的功效就更大了。比如有限元的计算、神经元的研究计算、地质分析等等科学研究的领域;当然目前GPU计算的应用还是处于一个早期的阶段,大部分CUDA应用都是专业人员和相关的程序员在开发,随着CUDA的广泛推行,以后会有实际的基于CUDA的程序,更多的程序员能够加入进来,并且开发一些可以给大家日常应用带来好处的程序,只要有支持CUDA的GPU就能够利用到GPU计算的好处。
在我们接下来将要测试的两个CUDA应用实例中,可以发现GTX 280在分布式计算和密集型计算时有着比CPU强上很多倍的能力,随着CUDA的飞速发展,越来越多的程序可以使用GPU来作计算,处理能力比CPU更为强悍,无论对于消费者还是NVIDIA来说,都是非常乐观和期待的。
网友评论