DOITAPP
DOIT数据智能产业媒体与服务平台
立即打开
DOITAPP
DOIT数据智能产业媒体与服务平台
立即打开

HPC优化难题如何解之AMD篇

对于HPC用户来说,最重要的一个原则就是"应用为本"。所谓以应用为本,就是说用户必须要客观地分析自己运行HPC应用的特征,而后决定如何调整HPC系统硬件配置来满足它对性能的需求,以及如何对它进行调优,确保它能充分发挥硬件的潜能。因此,我们服务器在线此次以HPC系统的优化为主题发起了一个系列采访。

本期我们请到了AMD中国区技术总监刘文卓先生为我们讲解AMD在HPC优化中的独到经验及相应产品技术。我们将以问答方式原汁原味的呈现本次访谈的过程,为各位用户提供一个更好解决HPC优化问题的方向。

DoSERV记者:我们看到在TOP500中采用AMD芯片的HPC一直在逐年增长,因此AMD在助力和搭建HPC方面应该具有很多独到的经验,那么AMD产品在被应用到HPC中时,可以为系统带来怎样的能力提升呢?而且AMD作为CPU产品领域的领导厂商之一,如何与OEM供应商合作对HPC进行优化呢?

刘文卓先生:走到现在,我觉得HPC已经走上了平民化的一条道路。我记得是在2004年11月的时候,曙光4000A作为超级计算机,第一次闯入了TOP500前十的视野,那时的超级计算机还是一件很神秘的事。而现在,很多省市都在建设超级计算中心。

AMD中国区技术总监刘文卓先生

一般HPC都是做工程、桥梁飞机制造以及弹道等方面的计算及应用工作,因此这些应用对浮点运算的要求比较高。而我们AMD的处理器做浮点运算一直相当出色,64位、直连架构等特性都对HPC最终走向平民化起到了一个推动作用,像现在TOP500中的Cray也采用的是我们AMD的皓龙芯片。

还有一个就是我们今年推出的Magny-cours 8核/12核产品,对HPC应用上有出色的表现。其实HPC按照应用来分,有的就可以用我们高端的皓龙6000系列芯片,而有的用我们的皓龙4000系列芯片就能够满足,最关键的是看你想用HPC来做什么。我们之所以会分成4000和6000两个系列,就是因为要针对不同的应用。现在双路的应用占有了75%之多的市场,从某种角度来说某些低端的应用也可以做HPC,原先HPC也叫做集群,就是一组服务器放在一起统一管理,对某些经费有限的用户,比如大学或互联网用户,皓龙4000系列处理器是非常合适的,因为性价比很高。

DoSERV记者:如果从技术上来讲,AMD的芯片在HPC优化上能够起到什么作用呢?

刘文卓先生:目前来讲,我认为功耗和性能是困扰HPC的两大难题。以之前我们合作伙伴曙光5000A超级计算机为例,他们告诉我这台机器仅一天的用电费用就达到了1.6万到2万元,而现在我们的能源又那么紧缺,所以功耗的节省成为了HPC优化的核心问题。我们AMD 8/12核的产品不但性能有几乎两部的提升,而且可以为HPC应用动态降低能耗,它可以根据不同的应用关掉暂时无负载的核心,当机房供电能力不够的时候可以对系统进行功耗上限设置,或者通过AMD的PowerNow!等技术来完成能耗的节省。

DoSERV记者:现在有很多超级计算机都采用了CPU+GPU的混合计算模式,AMD在这个趋势上也是领军者之一,是什么促使AMD认为这种模式可以为HPC带来更大的性能提升呢?在这种处理器架构模式上,AMD是怎么考虑和设计的呢?

刘文卓先生:CPU按照我们常用的摩尔定律来说,一般的更新换代时间是18个月,也就是说它能够在18个月后性能就可以翻一番。而GPU的更新速度是CPU的1.5倍,也就是说通常12个月的时间GPU的性能就翻了一番。大概五年前,CPU和GPU的晶体管数量是差不多的,而现在AMD的GPU的最顶端产品拥有超过20亿个晶体管,我们AMD的四核CPU产品有超过7亿多个晶体管,这样一来差距已经差出很多来了。CPU相对来说体系结构复杂很多,有计算单元,有缓存,还有其他的逻辑部件如分支运算的预测等工作,而GPU则相对简单,大部分是应用在显示运算上的。

GGPU里面大约有超过40%是逻辑运算单元,而CPU只有5%是逻辑运算单元,所以说单纯从运算速度来说,发展到现在,GPU比CPU要快很多。像我们的最快的12核心的皓龙CPU,主频2.3GHz,运算峰值为110.4Gflops。而我们最快的GPU Radeon HD 5970,含有3200个流计算单元,单精度32位的运算峰值速度是4.64Teraflops,是CPU的42倍,双精度64位是CPU 的8倍。对于一些特殊应用,其加速比甚至可以上百倍。刚才讲的能耗问题,我们造一个超级计算机一天就要消耗掉2万元人民币的电,如果采用GPU的话,整个系统的规模就可以大大降低,同样的计算能力GPU可以把能耗降到1/5或不到一半的规模。

AMD中国区技术总监刘文卓先生在AMD产品展区

像上次我在国外开的一个超算会议,研究GPU运算在国外很火,超过一半的HPC的应用研发都集中在GPU上,大家都在研究如何在GPU上计算。其实对编程人员来说,在GPU上是很难做编程的,因为它的设计是为显示用的,不是做计算的。但发展到现在,它的每瓦性能又确实很高,所以大家都在努力做编程以及迁移。

而我们在这方面,AMD整合了ATI,所以在GPU技术上有着得天独厚的优势。不过,就目前来讲,要把这样的模式用好还很困难,我国的天河一号就采用了这种模式,但是要完全用好和充分发挥GPU的计算力至今还是一个难题,所以这里面还有很长的路要走。

我们正在笔记本和台式机上开发一些利用GPU做加速运算的应用,到明年我们的新的Fusion平台发布的时候大家就能看到,非常值得期待。,相信未来也可以迁移到服务器平台。所以从此可以看出来,GPU+CPU是肯定要做的事,而且日后也肯定会迁移到这个平台上面。

DoSERV记者:从某种意义上讲,内存是CPU与I/O设备沟通的一个巨大的缓冲区,是最为繁忙的数据跳转站,而如果想要充分发挥CPU的浮点运算性能,充足的内存带宽是必不可少的。而CPU作为HPC的核心,也必须拥有足够的内存通道,AMD在这方面有着那些准备和计划?还有在处理器架构和协处理器设计上,AMD采取了怎样的方式对内存通道进行优化呢?这样的优化能够为整个HPC的优化带来怎样的影响?

刘文卓先生:这个问题很好。在目前的计算机体系结构中,CPU核心速度最快,其次是二级缓存,然后是三级缓存,然后是内存,硬盘最慢,内存与缓存之间有着数量级上的速度差别。03年,AMD就推出了直连架构,就是为了提高内存的访问速度。直连架构、内存控制器对提升CPU的总体效能有很大帮助。

AMD在最新的12核处理器中将内存通道从原来的两个增加到了4个。要想提升浮点运算效能,就要把浮点运算单元中的管道尽量灌满,而内存通道越多它就灌得越快,算得也就越快。而如果用GPU加速运算,就会存在大量数据从CPU的主存复制到GPU的显存中的一个传输问题,它算完了还要复制回来,这个来回的传输比较占用时间。在现在体系结构上,把大规模的数据扔给GPU去算,要尽量让它算时间长一些再传回来,这样的模式会比较合算。因为如果传给GPU数据的时间超过了CPU自己算出结果的时间,那就不合算了。还有如果让它做迭代或递归这样的复杂计算也不行,为什么呢?我们都知道GPU是做流计算的,显示屏上的每个像素都是算出来的,而且每个像素之间都没有逻辑关系。所以GPU比较适合处理并行数据,就是那种没有横向相关性的数据和任务。比如像加密和解密这样的数据之间无逻辑关系的数据以及分子动力学的数据等等,都比较适合它来做计算。

现在AMD计划在台式机笔记本中推出的Fusion芯片会将CPU、GPU整合在一起,让它共享内存控制器。不是常规的通过PCI-E总线传数据,而是通过内存通道来传送数据,这样一来就可以解决刚才所说那个传输过程耗费时间的问题。我们现在做的第一个版本CPU和GPU的数据还是分开来存,第二版的Fusion将会把采用数据共享的方式,消除了数据拷贝的代价。,我们未来计划在服务器上也这么做。不过,服务器需要更好的稳定性还有OpenCL这样的开放环境,所以就比较复杂。



DoSERV记者:AMD现在已经推出了12核心的Magny-coursCPU,堪称业界核心数最多的处理器,而且在AMD之前的会议上,也表示它将面向HPC和云计算,那么从双核、四核再到八核、十二核,HPC在核心上的优化都有着那些变革?

刘文卓先生:多核肯定是一个趋势,我们除了今年的8/12核马尔库尼产品外,在明年还会推出推土机系列芯片,每个CPU的核心数量达到16核
。纯粹追求主频的技术路线已经证明是行不通的,因为无法解决CPU的功耗问题。其实单线程频率的提高是有意义的,但是在没办法把主频推到最高的时候,只能采用多核心来分担处理任务的负担。当然了,太多核心也会碰到问题,核心之间沟通的开销也会比较大,所以在我们做到16核的时候在考虑利用GPU来做加速运算。

云计算是一个确定的发展趋势。举个例子,像我们过去会将银子埋存起来,后来怕被偷就有了钱庄以及银行。以前各个地方都是打井,现在就变成了自来水。现在我背着本到处跑,背着内存硬盘等等,以后我就不需要一直带着这些东西,我只要把这些东西都存在后台就好了。这就是一个很明显的事,像现在我们会把照片放到网上,还有电子邮件等等,都是典型的云应用。

由于云计算涉及的系统数量特别大,多则能够到数十万台服务器。在构建这样的数据中心或云中心时,首先考虑的就是功耗问题,其次是价格问题,最后是性能够不够用的问题。而且云计算里很多互联网的应用中,CPU的使用率都不会超过30%,这样一来,我们的4/6核的皓龙4000系列处理器就正好能够满足这种大规模数据中心的应用了。如果运算上的需求很高,也可以用我们的皓龙6000系列,可以充分满足他们的计算需求。所以未来是这样的一个发展趋势。

DoSERV记者:据我所知一般芯片厂商都会为芯片产品提供一些相关技术的支持,比如推出编译器,增强系统性能等等,在这方面AMD有哪些产品可以作为支持呢?还有在这种编译器的设计上能够对编译性能的优化起到那些帮助呢?

刘文卓先生:在软件上呢,其实X86的编译器已经很成熟了。我们采用的是Open64这样的开源软件,AMD在上面做了很多编译器上的调优、适合多核的一些优化选项、数学库等等,根据我们AMD产品上的一些特性与软件做结合。在GPU加速运算方面我们推广业界标准OpenCL这样的编程环境。现在我们也在考虑与国内的一些软件企业和研究机构合作,因为这些年来我国的软件水平有了很大的提高。

DoSERV记者:那刚才谈的编译性能能够对HPC的优化起到什么样的作用?

刘文卓先生:编译器对实际应用的优化是很重要的,有很多现实的案例,,我们的工程师只要在编译器上修改一两个选项,整个系统的性能就会有很大的提升,尤其是在多核应用中,有的程序编得不好,只能用到1-2个核心,但现在我们就可以充分利用所有的12个核心。以前,设计CPU的时候都是把指令集做完后再做编译优化,我们自从巴塞罗那处理器以后在设计下一代CPU的时候,就跟编译器软件厂商合作,询问他们要加什么指令,然后我们在设计核心的时候就加入进去。

未经允许不得转载:DOIT » HPC优化难题如何解之AMD篇