为何GPU受到服务器厂商的热捧?

时间:2010-10-13   来源:   网友评论:0   人气: 326 作者:

经过多年的尝试,图形处理单元(GPU)开始受到主流服务器厂商的重视,戴尔和IBM是第一批在高性能计算机(HPC)上采用GPU的一线服务器厂商。GPU通常用在桌面PC上,主要作为电子游戏的高速图形加速器,但服务器厂商很快发现它除了在游戏渲染方面有出色的表现外,在数学计算方面也有先天性优势。

  今年5月,IBM宣布计划为iDataPlex dx360 M3可横向扩展服务器提供一对Tesla M2050 GPU,戴尔也不甘落后,于6月宣布PowerEdge M610x刀片服务器将会装配一对Tesla M2050 GPU,M610x装配了英特尔至强5500或5600处理器,最大可以提供400亿次/s的计算能力。

  在这些服务器厂商竞相重视GPU计算的背后,Nvidia(英伟达)是最大的赢家,都说早起的鸟儿有食吃,Nvidia在推动GPU作为数数学密集型计算任务处理单元方面已经持续了很长时间,但直到戴尔和IBM宣布集成Tesla M2050 GPU之前,Nvidia一直未获得一线服务器厂商的支持。

  GPU历史

  如果你对PC的发展历史比较了解,你一定还记得8086,80286和80386处理器中就具有数学协处理器了,分别是8087,80287和80387,如果你在20世纪80年代后期购买过PC做数学或科学计算,PC销售人员应该给你讲过数学协处理器,这些附加的芯片是专为快速,准确的计算而设计的,主要买家是电子表格用户,因为那时Lotus 1-2-3是x86上的杀手级应用,安装数学协处理器后计算速度会更快。

  到80486时,数学协处理器就集成到CPU了,随后的处理器架构不断增加指令加快数学计算速度,到了今天,CPU设计文档称之为“浮点单元”,因为数学计算主要就是浮点运算。

  计算机只会将数字看作是整数或浮点数,整数没有小数位(如13人),而浮点数有小数位(如 3.14159),细粒度计算都是浮点单元的工作。

  这对于图形来说特别重要,因为计算构成一个平滑三维图像的三角形位置需要非常精确的分数,多或少一点三角形就会开裂,破坏图像的整体效果,图形处理软件需要计算30位小数获得精确的拟合,颜色和亮度。

  多核数学处理器

  多年来,Nvidia和它的竞争对手ATI(2006年AMD收购了ATI)已经生产过大量的多核数学处理器,有意思的英特尔和 AMD制造的CPU大多还是4-6核,而Nvidia最新的Fermi架构具有483个流处理器(当然也会消耗更多的电力,产生更多的热量),而ATI Radeon 5000系列更是达到了1600个流处理器。

  流处理主要用于并行处理计算单元,靠软件管理内存分配,数据同步和通信等,这些 核心通过高速连接通道连接。

  GPU线程比CPU线程更小,因为它们只包含了一堆数学指令,通常,数学指令会被简单地视为加法,GPU可以更 快地切换线程,因为核心可以在一个时钟周期内从一个线程转到另一个线程,而某些CPU是办不到的,CPU线程是一系列复杂的指令组成的,如系统进程或操作 系统调用。

  最近,需要高性能计算的人们已经意识到那些483到1600个数学核心除了渲染游戏外,可能还可以做点别的什么,Nvidia和 AMD当然举双手赞成,最近它们也增强了GPU中的数学协处理器。

  最后要提到的是双精度浮点运算,它是复杂科学计算所必需的,Nvidia 和ATI也都已经将双精度浮点运算加入到它们的芯片中去了,单精度浮点数是32位长度(2^32),而双精度浮点数是64位长度(2^64),这个与游戏 毫不相干,但科学研究却离不开它,如全球气候模拟科学实验。

  GPU编程

  如果你数据中心的服务器有GPU,那么在编写服务器应用程序时就应该将其考虑进去,但利用GPU不是一个简单的任务,需要在CPU和GPU之间做好协调,不是引用几个现成的库,写几行代码就可以搞定的。

  电子游戏是大量使用浮点运算的很好示例,但游戏并非浮点运算的唯一用途,凡是与可视化相关的领域几乎都会牵扯到浮点运算,如医学成像,三维成像,科学成像,石油和天然气勘探可视化,娱乐,广告和金融建模等。

  这个过程被称为GPGPU计算,或通用GPU计算,需要通过编程将本该由CPU处理的计算任任务交由 GPU处理,很多时候,这意味着要重写代码,Nvidia使用CUDA开发语言来处理。


 

文章评论