扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共6页)
帮助用户做最合适的选择——863高性能计算机评测中心的运作模式
陈教授表示,我们这个评测中心是04年的时候成立的,国家863计划在2004年决定成立一个评测中心,对863计划支持的高性能计算机进行独立的第三方的评测。中心依托清华大学,联合了很多应用部门和研究部门,比如中国软件行业协会数学软件分会、中科院数学与系统学院、中科院软件所、国家气象局等。
我们做评测实际上我们有两个很重要的思想,第一个思想叫做全过程评测:过去我们去验收一个机器的时候,都是等这个机器做完了,最后去进行验收测试。主要检查机器到底有没有符合合同要求,系统是不是处于一个完好的状态。我们提出全过程评测方法,力图在系统设计、实施、验收和使用各个阶段都使用评测技术,来指导该阶段的工作。
另一个思想称作分层建模方法,用来查找计算机系统各种可能的故障。因为机器一大了以后,有很多潜在的故障点,某些时候故障并不一定反映为系统无法运行,有可能反映到你这个程序能执行,但是速度大大下降。但是如果我们有一个很好的方法,能够预计这个程序在这儿应该执行1分钟,但是我们实际测出来执行10分钟,那系统就可能存在问题吗,这个步骤叫做故障的检测。更进一步,我们怎么知道你这个问题是发生在网络上发生在内存上还是发生在CPU上呢?这就更需要加强更进一步的仔细的测试,所以我们实际的方法就是从底层一步一步的往上走,先去测内存有没有问题,然后再去测你的网络有没有问题,然后再去测其他的,一台机器测没有问题,多台机器合起来做又有没有问题等等是这样去做,这个步骤叫做故障的诊断。
记者:这种是怎么测法?也是拿应用跑吗?
陈教授:拿一些小的基准测试,就是从最底层小的测试值,例如我们用Stream来测带宽,然后我们用Intel的IMB来测点对点的带宽和延迟,然后再去测集合通信的性能,比如说一个广播发送到1000个节点上多长时间,一个通讯要花多长时间,这样一步一步地测试出来,这样就可以去隔离可能发生的故障,所以这个方法我们已经协助测试了大概全国有30台大型规模的系统,包括曙光5000,曙光4000,联想深腾7000、深腾6800,都是当时国内民用领域最大的计算机,也包括一些学校的中等规模的计算机,像北大的、中山大学的、河北大学的等等,大概加起来有30多套,发现了很多的故障。比如说某台机器,我们当时测的就是发现有一些机器的网卡有问题,通信的时候,其他节点之间的延迟可能有几微秒,但某个节点和其他节点的延迟则达到了几十微秒,一百微秒,明显和那个节点,别人和它通信都很慢,你就想那台机器可能是哪有问题。
863高性能计算机评测中心曾经测试过的曙光5000高性能计算机
还有我们测华中科技大学的一台机器,当时发现也是有一台机器也是和别人通信特别慢,后来发现有人在上面不知道为什么装了一个虚拟机。这个例子说明了高性能计算机的复杂性,软件不定谁装了什么,后来忘了删了,机器上面装了虚拟机肯定会慢,但是别人不知道,你用它来算也算得出来,就是慢很多,类似这种问题我们都可以用我们的方法来检测和诊断。
记者:你刚才说的分层建模,扩展出来就是分层的建立测试模型是吗?
陈教授:对,建立测试模型的目标其实是预测,我预计这个程序在这上面应该执行多长时间,但是我发现后来和你最后真正的测试时间不符,我就知道系统中可能存在故障。
记者:就是每层都有自己的参考值?
陈教授:没错。
记者:这个应该是测已完成的成品,如果系统还不存在,评测技术有哪些用途?
陈教授:
在系统不存在的情况下可以使用评测技术主要对两类用户提供帮助。一种是对系统设计者来说,我们研究了一套性能预测方法,能够让你知道我的机器怎么样设计能够满足用户的需求,用户可能说我现在有两个程序要在这个机器上跑,我希望它能够达到一个什么样的性能,这个时候设计者就说,我选这个CPU、这个网络、这么大的内存、这么多的节点,我就能满足这个要求。我们的技术就是帮助设计者来回答这样的问题。但这个问题比较专业,我们专门有一个研究的结果,已经发表在国际上这个领域最好的会议上了,这个就不跟大家多介绍了。
我现在说另外一个问题,对于一个购买者来说,他还没有买这台机器,他的问题是说我现在有一些应用要跑,我要买一台机器,有一些应用要在上面跑,我现在有一个厂商,他要来希望向我提供产品,这个时候我们怎么选择这个产品,这也是我们说的全过程评测很重要的一点,实际上就是如何用评测技术支持购买决策。
要解决这个问题,首先要定义良好的性能指标。我们过去经常大家会看到,我们评价一个高性能计算机,最流行的方法就是用Linpack指标,就是我们买机器的人提出来,我们要买一个、就像我刚才跟大家介绍的,一个100T以上的机器,这句话什么意思呢?无非两种意思,一种是说我这个机器的理论峰值超过100个T,另外一个是说我们实测的Linpack能够超过100个T,这是一个很简单的描述,稍微内行一点的人都明白你说的是什么。这是很常用的指标,我们的看法是,Linpack这样的指标是有意义的,如果Linpack都测不好,你跑其他的应用肯定是跑不好的,所以它是很有意义的。但是从用户的角度来讲,如果我们仅仅依靠Linpack来决定购买一台计算机的话,可能会有很多误导的情况,有失偏颇。我们就想怎么样在这个基础上做一些补充,就是说我们怎么样能够给用户提供一套评测的方法,让用户能够选择对他最适用的系统,这是我们想解决的问题。
863高性能计算机评测中心曾经测试过的联想深腾7000高性能计算机
我们提出来的方法就是,首先要整理用户的应用,就是我要买这台机器,你到底有哪些应用在上面跑?这个要先整理出来。但是你要整理出来以后,比如说我有30个应用可能会在上面跑,像我们学校里面用户非常多,几十个很正常。我能不能把这30个都拿来测试呢?也很麻烦,大家知道,做测试也有一个时间的限制,也有一个这个每一个测试程序要整理也需要很多的时间,所以我们想基本上是选择你最重要的应用,这是一个原则,也就是说我有30个用户,我选择其中5个到10个最重要的应用。
第二是要分类,就是说你有可能有10个应用,但是10个应用都是一个用户的,它的行为都很相像,我可能不用都选这10个应用,而是再选一些不同类型的。所以这个步骤叫做“代表性的应用抽取”。我先把最重要的,而且类型不同的应用我把它提取出来,作为我们做测试的侯选。第二步实际上是测试程序的定制,比如说你拿来一个应用,它并不能直接作为测试程序,我们测试程序有一些什么样的要求呢?第一个要求我们刚才也看到是说你必须把它简化到一个结点上能执行,因为你不可能在做测试的时候,想要的机器都做好了,你必须把测试程序简化到能够在一台机器上执行。二是执行时间不能太长,也不能太短,比如说0.1秒就执行完,这个时间就很不稳定,不具备可比性。所以我们基本上把这个时间把它放在10分钟到1小时之间,也就是说你大概跑几十分钟,这样的话时间上是比较合适的,不会受很小的波动的影响,很灵敏。但是也不能太长,太长我也等不及了。这两个因素要同时满足,其实还有一个因素,就是说它应该能够验证结果的正确性,就是我们所有的基准测试不止是要测试性能,其实我们以前遇到的情况,就是刚才说到的安腾或者刚才说的IBM的系统,IBM的系统跑的是对的,但是换上安腾以后,结果就不一样了,怎么回事?最后发现其实没错,安腾是80位的浮点,原来的是64位的标准的浮点,但是结果就是不一样,我们要考虑怎么让用户接受这一点。所以就是说结果的验证,最后至少我知道这个基准测试是对的,这是一个部分,就是基准测试程序的定制。
第三部分实际上叫做应用性能分数的整合,因为我们最后不是测一个程序,我们是测多个程序。最后你拿出一个矩阵出来说,这几个程序在这个机器上运行这几个时间,另外一个机器是另外几个时间,最后评标的时候,或者说我们自己没有一个很好的认识,就是你这个机器到底是哪个快哪个慢,或者你这个快一点,那个快一点,最后肯定不一样,我们也是按照国际上比较标准的做法,SPEC CPU的做法,实际上是取一个标准系统上的测试程序执行时间做一个单位,所有的系统的时间和大家去除一下,就有一个相对性能,然后把每个程序的相对性能,合起来做一个几何平均值,这个几何平均值就是最后这个系统的性能得分,也就是说相对这个标准系统如果是“1”的话,那么我这个系统可能是1.5或者是0.5,这样的话来反映出它的一个性能指标,这个性能指标就是单台服务器的性能,我们就用这个方法得出来的。
所以总体上就是我们刚才说的,我们提供一套方法是面向用户应用,然后可以用这套方法得出来你要侯选系统中每一个侯选节点的性能,当然你可以根据这个比如说需要100个节点,或者1000个节点,你怎么去预设全系统的性能,当然这和通信网络还有一些关系,但是你这个就更复杂了。但是最基本、最关键的点,我觉得用这个方法可以提供出来了。
所以我们希望能够把这个方法推广开,我们在清华的这个机器上已经做过一次,就是说我们提取了5个有代表性的程序,一个是气候模式的程序,一个是环境污染演变的程序,一个是计算化学的程序,一个是物理系用的程序,还有一个是生物系,就是刚才我讲的蛋白质结构计算的应用,这五个程序是我们将来的系统里面使用较多的关键应用。我们就采用刚才我说的这些方法,对应用进行了裁剪,然后做这个结果的验证,最后做了这个测试。特别是我们还做了功耗测试,就是这个机器的功耗在算的时候、满载的时候是怎么样的,然后空载的时候是怎么样,我们把功耗指标也得出来,这样对于将来估算整个系统的功耗值和电费也是一个很好的参考作用。
记者:您刚才提到全过程评测,以你们要做的那个100T的系统为例:你做购买决策的时候,很多时候其实有一部分也是提给一个设计者,你知道不同的配置包括CPU、包括内存容量,价格会差的非常多。你在测试的过程当中你发现什么样配置、什么样的要求,比较满足像清华这种应用需求?
陈教授:实际上现在尤其是MPI的程序,每一个节点的规模都是可以控制的。所以从这个角度来讲,内存配置的意义不是特别大,我们采用的方法是我们有多少钱能买得起多少内存,就买多少。我们就定一个标准的一个内存容量,把我们的应用程序的规模定制到这个容量上,看看它执行的速度。
另外从通信网络的测试上我们也没有办法一开始拿好多机器来测。所以这个方面我们也不是根据测试数据来进行评估,可能是根据一些基本性能数据,比如点对点通信、延迟、带宽这些特征来做一个估算。基本上是这样,我们现在这个方法最大的好处就是帮助选CPU的型号,哪一种CPU在跑单机MPI的任务有更好的性能,我们就认为用它做出大的系统性能也会比较好。
记者:从HPC应用架构来讲,像一些系统,可能运算的越快越好,像超算的方面,程序非常多,可能要求不一样,更加不通用。但往往通用化的项目,是应用比较平庸的,各方面都不会追求特别好,同样来讲受到的限制不多,你这次选型的时候,你有受到过哪些方面的限制?比如技术特性方面的?
陈教授:是这样的,我们在选择代表性应用的时候,已经考虑了这个问题。我们认为我们主要服务于这些用户,必须把他们都服务好,其他用户,要是觉得这个机器不错就用,不行自己想办法。
记者:预估这些应用,预估计算量的时候怎么做的?比如你单节点,你搜集了30多类应用,你怎么去得出未来、去预估未来每个学院,预算量的估计?
陈教授:我们其实做了很多用户调查,在买机器之前,我们开过好几次用户会,就是调查你觉得现在这个机器怎么样,以后用什么软件,这个需求是怎么样我们都做过。
记者:测试最容易出现的灵敏性的问题是在哪里?
陈教授:以我们的经验来看,应用最大的性能问题实际上是访存。,目前,系统对 “稠密矩阵”的访存问题解决得相对较好,Linpack就是“稠密矩阵”,因此得到了很高的计算小吕。。除此以外,对于随机的内存访问,应用的访存一般都有不少提高的空间。比如我们在2004到2007年跟英特尔一起做过五六个生物信息学应用程序的优化,基本上串行优化这部分就可以提高十倍。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者