大规模并行计算一定会成为趋势

时间:2008-12-17   来源:   网友评论:0   人气: 372 作者:

在有计算机帮助人类进行计算的历史中,运算的规模和计算速度每年都在成几何级数增加。有统计数据表明,每经过10年,我们面对的一些应用,其数据规模的增长和对计算速度的要求差不多会增长100倍。这些变化和要求使得人们不遗余力的为生产出性能更加强大的处理器而孜孜以求。所以,CPU处理器的主频时钟速度也在狂飙猛进地提升。

  但是,随着制造工艺技术的制约以及CPU架构本身设计目标的局限,这种时钟频率的提升很快就碰到了壁垒。从2001年至2003年,Pentium 4处理器的时钟频率从最初的1.5GHz提升到了3GHz。然而从2003年到2005年,整整2年的时间里,处理器的时钟频率提升的速度骤然放缓,只是从3GHz增加到3.8GHz。处理器的速度增长宛若已经到了强弩之末。

  尽管如此,Intel等处理器厂商仍然不肯放弃。他们充分的优化了处理器的架构,使之可以运行在更高的频率上,Prescott核心就是这种造神运动的产物。不过Intel所面对的问题已不仅仅是工业制造技术的问题,而是最简单最基本的物理定律的壁垒,关于摩尔定律从此失效的言论也甚嚣尘上。

  GPU计算能力的使用,以及GPU在通用计算领域表现出来的能力,注定会成为芯片计算历史的拐点,通用GPU仿佛成了天将降大任的角色。在GPGPU一路高歌猛进的过程作,NVIDIA公司凭借其cuda架构,站到了这个历史舞台上。

  Cuda能否改变企业计算的格局?CUDA程序究竟如何编写?CUDA架构是怎样的?……带着对cuda架构的种种疑问,IT168技术开发频道记者专访了NVIDIA公司亚太区技术市场经理邓培智先生。

Cuda的最终目的是简化GPU计算的编程

  CUDA的根本目的就是简化GPU计算的编程,使得人们更为快捷地开发基于GPU计算的应用。 邓培智谈到,历史上来看,GPU从计算角度来说,性能提升比CPU性能提升快很多。GPU计算能力这么强,除了做图形处理之外,很多人还打算利用GPU强有力的计算能力进行其他应用,就是通用计算。尽管传统意义上的通用用途的GPU(GPGPU)能够参与通用计算和处理,但使用GPU计算很麻烦,过去的GPU完全是为图形进行设计的,它是一个非常专用的处理器,你要使用GPU 来做计算的话,你需要透过图形API进行,通过这种图形的API来访问GPU计算核心,你必须要把你的计算所需要的数据,通过API假设这种计算是3D的计算,然后你要走过一遍图形处理过程,才能得到计算结果。第一,编程非常复杂,第二,效率也不会达到很高。因为中间必须要走过渲染的过程。

“但是对于真正需要并行计算的人,比如说科学家,不可能让他们再学习图形编程的技术,普通开发者大部分也没有图形编程的经验。在这种情况下,NVIDIA认为可以把并行计算和图形结合起来,所以就催生和开发了CUDA。”

据了解,CUDA的项目和NVIDIA的GeForce 8系列架构的开发时间差不多。NVIDIA GeForce8系列是花了4年多时间开发,CUDA也是那个时候开发的。NVIDIA GeForce 8 GPU开发的时候就考虑到了图形和并行计算两方面的需求。所以NVIDIA GeForce 8800系列发布的时候就宣布了CUDA,这是一种全新的GPU计算开发环境。

CUDA对于行业的价值

低成本地拥有高性能服务器
    邓培智谈认为,cuda相对于传统的服务器集群以及超级计算机在性价比、占地空间、功耗等方面的优势非常明显。CUDA对于行业的价值,通过CUDA和支持CUDA GPU,两者结合在一起,所有的厂商很容易利用GPU强大的计算能力做各种各样的并行计算工作,这就是最大的价值。这一切使得每个人都可以低成本的拥有自己的桌面超级计算机成为可能,而不是大家来共享一台大型的超级计算机。正如NVIDIA Tesla GPU 计算事业部高级产品经理Sumit Gupta所言,这不是简单的芯片的性能提升,而是带来了一种全新的、具有革命性的计算模式。
如何理解CUDA软硬件架构

  邓培智: CUDA是专门针对GPU来进行编程的平台,它最大的特点是,CUDA如果在GPU计算方面来说,是所谓的异构计算系统。它和CPU有很大的不同。CPU我们只是针对一个处理器编程,CUDA是针对GPU计算得的,但是它包含GPU和CPU两部分的代码。顺序计算和一些数据的管理等等代码在CPU上运行,而核心的并行计算部分在GPU上运行。在编辑的时候编译器会把CPU代码和GPU代码分开,GPU代码会被编译成成GPU的目标代码,CPU代码还是需要其他的C语言编译系统来编译(最新的CUDA版本也支持多核CPU)。这可能是最大的不同。CUDA一定是需要CPU来参与的,我们叫异构计算环节。所谓异构计算,就是CPU和GPU两个架构和指令集都是不一样的,但是他们共同协同动作来解决同一个问题。 至于说CUDA和DirectX/OpenGL这些3D API的关系,对于CUDA来说,是不需要3D API的,但是CUDA可以很容易和3D API配合使用。


 

文章评论