Xilinx社区
首页 > Kevin专栏 > ZT:为何GPU受到服务器厂商的热捧+OpenCL科普
Kevin专栏
ZT:为何GPU受到服务器厂商的热捧+OpenCL科普
来源:  时间:2015-01-22  浏览量:977

  这个话题,Walkie比俺懂得多多了,记录在这里,算是自己给自己科普吧。 抄了两篇文章,一篇是"为何GPU受到服务器厂商的热捧",作者不明,应该是翻译老外的。 一篇是"OpenCL概述",从上海交大图像所网页上八的。 最后综合了一点OpenCL官网上的E文信息。

  经过多年的尝试,图形处理单元(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开发语言来处理。

  CUDA是一种类似于C的编程语言,用它可以开发在Nvidia GPU上并行运行的应用程序,与x86处理器不一样,应用程序不只并行运行2,4或8个线程,而是数百个线程。

  Nvidia的付出也得到了回报,现在全世界有超过350所大学已经开设了CUDA开发课程,但如果只有Nvidia一家公司有这个干劲,最终也可能是徒劳的。

  OpenCL项目是OpenGL的一个分支,它为3D显卡提供了一个图形库(在很大程度上可以取代微软的DirectX),苹果公司是OpenCL框架的创立者,OpenCL框架用于编写跨CPU、GPU和其它处理器执行的程序,OpenCL包括一个编写内核和API的语言,它们可用于基于任务和基于数据的并行编程。

  OpenCL与CUDA相比有优势也有弱点,首先,它支持多处理器计算,而CUDA只支持Nvidia GPU;OpenCL可以让任何应用程序访问GPU,且不用重写代码,而CUDA必须用C为Nvidia GPU重写代码;OpenCL支持任何输入/输出处理器,因此它也支持安腾、Sun UltraSparc和ARM嵌入式处理器。

  OpenCL框架比CUDA技术更新,因此缺少很多CUDA具有的特性,也没有CUDA成熟,最值得注意的是,CUDA拥有快速傅里叶变换内核(FFT),但OpenCL没有,FFT算法是一个复杂的算法,在高级科学计算和图像处理领域有着广泛的应用。

  这两个框架都有各自的优缺点,CUDA凭借Nvidia的强力支撑已经占领了绝大多数市场,而 OpenCL也不弱,它由标准化组织管理,但从目前来看还是一事无成,我们是将自己绑定到Nvidia还是等待标准更新?有点举棋不定。

  除了CUDA和OpenCL外,还有第三个竞争对手,那就是微软的 DirectCompute,DirectCompute是DirectX 11 API库中的一个组件,我们在Windows 7中可以找到它,和OpenCL一样,它可以让应用程序使用GPU的计算能力。由于它仅在DirectX 11中,因此使用DirectCompute有些限制,首先,它只能运行在Windows 7计算机上,因为微软没有为其它系统准备DirectX,市场上也没有那么多DirectX 11显卡,ATI现在处于领先地位,但Nvidia也正努力追赶,目前,DirectCompute还未被服务器厂商正式利用。

  应用模式

  那么谁最适合GPU计算?正如前文所述,高级数学运算是一种情况,还有医学研究中的疾病逆向工程,医学成像中的超声图像渲染,以及视频和图像处理领 域,如电影特效制作。

  Nvidia最近可谓风光极了,在2010奥斯卡奖项中,三部最佳特效电影(星际旅行,阿凡达和第9区)都离不开Nvidia的功劳,因为它们都使 用了Nvidia GPU进行渲染。在商业领域,Nvidia GPU也被广泛用于能源研究,石油和天然气储量探测计算,以及股市趋势分析。

  但你的数据中心并不一定需要GPU,因此不要认为下一次购买服务器就一定要买集成GPU的,对于基本的服务器任务,如文件服务,网页服务或数据库服 务,GPU是帮不上忙的,对于I/O密集型应用,如应用程序服务器或数据库服务器,也是不需要GPU的,它们需要的是大内存,高速连接,或是固态存储,但 都与GPU无关。

  使用GPU涉及到编程,这也是目前新兴的一种编程类型,想进入这一行的开发人员应该接受专业的培训和教育,但不一定要参加硬件公司的培训,但诸如 Nvidia和AMD提供的培训可能更扎实,但不一定适合企业级开发。

  OpenCL概述

  概述

  OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器 (DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。

  OpenCL 1.0主要由一个并行计算API和一种针对此类计算的编程语言组成,此外还特别定义了:

  1、C99编程语言并行扩展子集;

  2、适用于各种类型异构处理器的坐标数据和基于任务并行计算API;

  3、基于IEEE 754标准的数字条件;

  4、与OpenGL、OpenGL ES和其他图形类API高效互通。

  OpenCL工作组成员

  OpenCL工作组的成员包括:3Dlabs、AMD、苹果、ARM、 Codeplay、爱立信、飞思卡尔、Graphic Remedy、IBM、Imagination Technologies、Intel、诺基亚、NVIDIA、摩托罗拉、QNX、高通,三星、Seaweed、德州仪器和瑞典Ume大学等。

  像Intel、NVIDIA和AMD都是这个标准的支持者,不过微软并不在其列。

  历史

  2008年6月的WWDC大会上,苹果提出了OpenCL规范,旨在提供一个通用的开放API,在此基础上开发GPU通用计算软件。随后,Khronos Group宣布成立GPU通用计算开放行业标准工作组,以苹果的提案为基础创立OpenCL行业规范。

  仅仅半年后,标准就已经完工。Khronos工作组总裁,NVIDIA副总裁 NeilTrevett对OpenCL的定稿速度相当自豪:“如果你去看看其他的大型行业标准,制定过程花上5年都是相当普遍的事情。要把这一过程缩短到 18个月都相当困难,我们之前的纪录是12个月。但这一次,我们只用了6个月。”

  如此赶工的目的正是为了赶上Mac OS X 10.6 Snow Leopard的发布日程。Intel公司TimMattson在发布会上表示:“当时情况就是这样,如果我们能够赶上苹果这个近乎不可能实现的时间表,就能够得到SnowLeopard的支持,那对我们将是一个巨大的推动。为了实现这个目标,我忙得都快离婚了,每周两次电话会议,面对面会议不计其数,我都不知道我在这活上花了多少个小时了。我已经精疲力竭,都快挂了。在最初的会议上,我就是那个认为这个时间不可能达成的人。但是我错了,我们办到了,而且标准定义的相当完整。对此我相当自豪。”

  发布会上,Neil Trevett、Tim Mattson以及来自AMD公司的BenGaster都进行了演讲,展示了OpenCL的功能和代码范例,但并没有对该API的具体实现进行演示。因为目前该标准正在工作组各成员企业的法律顾问手中进行检查,确保不会触及公司的知识产权或专利。30天的法律问题考察期结束后,各成员将最终签字令标准生效。届时OpenCL标准的具体规格和Demo演示就将公开。而随着明年Snow Leopard的发布,OpenCL也将正式进入实用。

  Neil Trevett表示,如果苹果将OpenCL嵌入SnowLeopard的工作能够顺利完成,图像处理、视频处理软件商将迎来巨大的商机:“每台Mac中都封禁了一台超级计算机,只是很难将其释放出来。OpenCL就将解放GPU强悍的运算能力。”除此之外,OpenCL还将在GPU物理加速等领域施展拳脚。更重要的是,它并不限制底层硬件。无论NVIDIA还是AMD显卡,在Snow Leopard下都能使用同样的代码实现通用计算,未来甚至iPhone等掌上设备也有可能实现支持。

  OpenCL支持现状

  2009年6月NVIDIA首家发布了支持OpenCL 1.0通用计算规范的驱动程序,支持Windows和Linux操作系统。

  2009年8月初AMD首次发布了可支持X86处理器的OpenCL SDK——ATI Stream SDK v2.0Beta,立即交由业界标准组织KHRONOS进行审核。

  官方的OpenCL简介slides在这里: (看来OpenCL.org被抢注了,只有www.khronos.org)

  http://www.khronos.org/opencl/

  这个语言长什么样呢? 用下面的图可以说明,普通C语言循环与OpencCL循环的区别:

    

 

  最后,有图有真相,上一张简图:

    

 

 

 

 

热点文章
精选视频
推荐资源

中国授权培训机构

北京 电话:(010)82757632
      (010) 62192881
深圳 电话:(0755)86186715
武汉 电话:(027)61389792
成都 电话:(028)80821007
南京 电话:(025)66022032
西安 电话:(029)82230498
邮箱:sales@e-elements.com

中国授权经销商

香港 电话:(852)22127848
北京 电话:(010)84148118
成都 电话:(028)86528262
上海 电话:(021)33678387
深圳 电话:(0755)26584925
武汉 电话:(027)87322806
邮箱:china@avent.com
深圳 电话:(0755)26743210
上海 电话:(021)51696680
北京 电话:(010)51726678
成都 电话:(028)85139576
武汉 电话:(027)87690155
邮箱:
xilinx_enquiry@comtech.com.cn

社区主办


《电子产品世界》杂志社

内容提供


    赛灵思公司

Copyright ©2000-2015 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备12027778号-2 北京市公安局备案:1101082052