最新
推荐
2014年高等教育信息化十大“关... 01-04 教育部成立教育信息化专家组 12-24
CERNET第二十一届学术年会 11-24 李志民:互联网促进人类文明迈... 11-15
| 我们用大型联网,我们当时考虑整个集群不太给一个应用用,我们考虑应用的核数,大的可能不过128、或者256这样程度,多数会更少,待会儿还会有PPT说明这个。所以在联网方面我们用英特尔技术,不是最新的技术。我们大量测试表明高性能计算绝大情况极小的数据包,高性能的交换,对每一个系统刺激它办法反应的时间,小数据高需要联网设备灵敏的反应。
基于这样考虑,我们选择中档设备,但是它实研是很高的。如何组织集群、如何把它实时里边有一些工程问题。我们这个集群在储存分成两个部分,一个并行文件系统,一共有52个TB,我们并行文件打算在IniriBand。在座各位都是网络中心的负责人,如果建立高性能集群的时候,千万注意文件系统,如果IO时候出现延时,意味着整个集群停顿下来等着他输入输出。 很多输入输出产生瓶颈,本来20秒写完一个文件,写了12个小时还没有写完。这就是集群崩溃。我们还有128TB的储存,各个集群数据对自己非常重要,对别人不重要。 再一个我们有10个登陆节点,我们预计用户可能100—200之间,为什么能测这么高的并行效率?我们是改造它编译模式,我们一个节点内采取多线成,节点前才采用MPI。这个不光我们一家,国外有很多很多学校得到这样经验。 对于企业用户来讲非常好的消息,企业用户应用往往跑到一个节点上,基本不会跨节点构成集群做计算的机会,在一个节点通过多线成程序设计,能够提高我们应用反应能力,这一点上是一个很好的模型。 我们南京大学做这样一个集群,其实我们一开始完全没有想到在排行榜露面,是科学院软件所他们要求把数字报上去,我们实际满足我们学校自己的需求。因为南京大学只有文科、理工大学,我们主要做理论研究,涉及到计算很多很多。这个领域在其他学校也是很普遍的,可能大家都在做差不多的事情,但是南京大学以计算机为手段来做实验的人,相对来说多一点。因此我们对计算机有相当大的需求。从应用来讲我们主要分布物理、化学、天文、地球、生命、电子这样几个。 其中物理、化学、地球、大气应用多数跟物质在微观状态下性质有关,所以都跟量子力学有关。我想简单谈一下,为什么我们这样计算需要那么强大的计算机?首先基本概念因为物理现象发生有基本空间尺度和时间尺度决定的。每一个体系都有相应时间,这个时间决定它时间跨度,基本空间尺度决定模拟体系的大小,比如一个材料锻炼先发现原子层次上,我们只要对一部分原子做这样研究,我们就可以知道产生断裂基础是什么。这两者合起来决定计算的复杂性,我们需要多长时间。 从微观研究物质的时候,用量子、分子动力学问题时,纳秒、纳米已经非常漫长、非常宏大了。微观这个现象里空间尺度制约由什么决定?中学化学阿佛俠德罗定律告诉我们1mole任何物质中所含该种物质的粒子的数目约为6.022×10的23次方个。当物理空间尺度大到一个立方厘米的时候,我们把世界所有超级计算机高速连起来,也没有办法计算,更不要谈单台服务器上。不等于我们用这样方法不能研究我们科学问题,时间制约也是这样,原子制约有一定频率,在很短时间里边就会发生较大的变化,我们研究微观现象、微观世界物质的规律就是捕捉这种变化,我们时间尺度必须下于它变化的。 精细地追踪原子的运动,时间步长往往需要设定在飞秒10的负15次方秒量级,甚至更小。 现在我来举一个实际例子,这是我的同行剑桥大学阿尔菲(音)教授做的模拟,地核铁和镍不同温度下熔融是多少,他用了64个计算节点,256颗CPU核,用的程序是量子分子动力学,体系一共包括980个铁原子,但是每追踪时间不长,每一个CPU上压花7分30秒,做这样模拟需要78—130天,要对五个内能条件进行,共消耗时间约1—2年。256核算一年到两年时间,大家可能有一点点概念了。 下面例子是我自己,我用8—16个两路四核节点,多的时候月128颗CPU,是用opteron2384/2.7GHz,三个体系分别为14、28、14个原子,量子晶格动力学,每个体系对九个不同压力条件进行计算,耗时6—12天,共需要约24天。即便这样简单的体系,就十几个原子需要计算资源是巨大巨大的。 当今世界上超算中心运行的程序大概在60%运行这一类的。对于硬件的挑战我们刚才已经看见了,科学计算从目前来讲,我们对计算能力、对CPU、对并行计算机计算能够永无止境的要求,CPU提高刺激我们解决更加复杂的问题,比如现在科学研究过度单独研究微观就研究微观、研究宏观研究宏观,很多领域三个时间尺度现象混合起来,比如材料的破坏,比如研究飞机翅膀怎么会断掉,你要微观方式模拟,整个断裂现象对飞机影响是宏观的,但是温度压力条件需要微观计算提供模拟数据。在很多很多学生做论文随便做文献抄一个数据,做计算没有任何实质,参数是本身,这个都不知道你做什么。所以我们需要多尺度的模拟。 多物理机制的控制,研究高精度,空间网格更小,比如我们做天气,考虑全球气候变化,全球天气哪怕一公里网格最后形成全球模型也是巨大的,日本当年地球器,最大目标空间精度一公里天气模型,这样需求显然不可能无限式扩展,当然现在厂商在做这样努力,做多核处理器满足这样的需求。我们探索其他方面有没有特殊结构,比如CPU、或者像蓝色基因在网络储存有特异设计,或者CELL。 硬件的台站,CPU频率提高一点不重要,频率提高总归受能耗的限制,也会受物理的限制,因为光速是肯定的。实践证明也没有必要,我们实际对CPU频率提高这样需求来说,还不如说我们需要计算机带宽更多。 我们看一个小例子,这个是在英特尔前三代处理器上做实验,这是我的一个研究当中其中一个问题一部分做测试,大家可以看到5140、5150、5160是双核处理器做同一个问题计算,这三款处理器尽管频率从2.33到3.0,但是表现并没有特异,大家看橙色几乎一样,CPU频率不起作用。我们同样看5365、5440也是这样,这是两个四核的,这两个四核我们可以看到这个计算用四个核的时候,跟那边其实也没有太大的改变,计算时间略微短一点。 后边列实际它的缓程大小,四个核里边容量更大、相互鼓励因此对程序执行带来好处。大多数科学计算应用既是计算压力型、又是数据密集型,我计算的时候从数据读大量的数据,我愿意说成数据压力型、或者内存压力型应用。这种内存压力型应用实际上CPU频率一点不重要,等到你充分利用CPU计算能力之前,这项已经饱和。 这是另外一个例子,实际有36个独立的并行任务,这里边分成1组、2组、4组、8组。只分一组我用一台节点所有内存和缓冲资源进行计算,分8组这些节点资源分成八个,显然这样计算任务享受内存资源、缓冲资源只有原来的八分之一,原来在这个领域有一个说法,这样任务并行性非常好,我们网络甚至只要10兆就可以,这是我测的。把它分组多了,并行任务执行越多性能越差。用8CPU做一个任务,跟8个CPU做八个任务时间差了十倍。 我们做更细的研究,前面一组一个节点上,最后是四个节点,这个变化跟前面有所不一样,5430有两个独立的I2缓冲,前面是共享I3缓冲,不管怎么样只有微弱的下降,当你用八个核的时候执行时间突然增加,当我们逐渐扩大节点数,意味着我们扩大八个并行任务能够用的内存和缓冲的资源,如果两个节点缓冲、内存大了一倍,如果用三个节点增加三倍,这个性能就逐渐变化。后来我们做一个实验,在四个节点做16个并行任务,最边上条和中间一条面临环境一样的,这样做出来结果是果然如此。 我们做一个数据搜索的时候,现在数据库软件所做的是什么,你做一个多处理器,每一个处理器做单独的请求,如果八个请求会在八个核上做处理,从我们实验结果表明用一个核处理一个问题非常糟糕的,如果改成多线并行处理,相应时间比同时处理八个多。以后企业系统实际在多核环境下边,需要很多很多考量。 实际上真正条件在软件方面,软件在我们国家首先是应用,因为应用计算科学手段利用超级计算机解决复杂科学问题和大型工程技术问题,需要复合型技术人才,还有能力的培养。左边是美国国家实验室,这边是上海超算中心,美国用4500和3万核以上应用占32%,3万核占了50% ,右边是上海超算中心,大家可以16个核以下应用占了60%,100个核以下占39%,用100个核计算只有11%,所以应用水平不能比。你用的核越小表明你解决问题复杂性越低,非常有说明意义。所以提高咱们中国高性能计算设施应用水平要从我们教育开始,我们培养学生就有这样的缺陷。这是一个非常重要的问题。 为此,上海超计算中心提出应用倍增计划,鼓励大家更多用CPU。软件的挑战还表现另外一个方面,就是我们的培养并行程序设计的工程师,大家都知道开发并行软件的人不是学这个工程师,都是学化学、物理这个领域的专家做,学计算机的很少。我们大学开设并行计算设计也是很少,即便开设课程能够很好的教学老师也很少很少,老师都没有实践经验,很多教授自己不写程序这样教学没有意义。 我们现在用很多软件都是开源,开源是现在重要软件开发模式,开发这样复杂软件光靠几个人不行,需要全球相关领域的科学家合作。但是在中国缺乏这样的土壤。另外从企业角度来说高性能计算毕竟使用多核处理器一个方面,还有一个方面如何为企业服务,企业信息系统如何享受多处理器硬件平台带来优惠,虚拟化是一个解决方案,我个人意见我觉得虚拟化某种程度也是现在权宜之计,因为现在缺乏这样的人才,不光中国美国也一样。终究一天重新审视多层的应用。 再一个是程序设计技巧的问题,并行算法评判一个好的算法标准现在也变了,这是我特别想强调一点,我这里举一个例子,经常听到一句话免费午餐已经没了,以后软件工程师没有学会并行设计就没有用武之地。过去评判标准有三条,你的算法尽量变成高度并行的纸任务,第二个纸任务之间通信必须越少越好,第三是内存合理应用,但是很不幸第三点强调最少的。 我下面举一个例子,第三条在很多情况下比前两个更重要。这是经常用于超大型科学计算问题,超大型计算不可能直接解,那样耗费时间太长,内存代价很大。一般采用叠加法,中间这一个点求解的时候,我需要周围四个点已知值对它进行平均。解这样一个问题是逐行进行扫描,中间把黄色的地方计算,我需要它的四个方位值,而南方和东方值是未知,数据有依存性,过去我们有一个很好的方法,过去我们有一个很好的方法红黑,把节点分成两类,一类红色、一类是黑色的,大家一看就知道我要求二值的时候,用的都是周边一的的。我计算一地方值的时候,也是上面计算,这样计算没有任何关联,很高的并行度,我们按行分开,分布不同的核计算,需要设计交换只是边界的地方交换,但是它的性能是这样曲线,大家可以看到,用两个核还不错,但是用三个核、四个核、一直用到八个核那条线几乎是平的。这样算法往往用于解大型问题,N很大意味着我缓冲全部用光了,你用的核再多也没有用,每一个核算的时候都要通过缓冲取数据,相互取很多。这个例子告诉我们,按照过去标准一个良好的算法,今天变成不对的算法。 |
版权所有:中国教育和科研计算机网网络中心 CERNIC,CERNET,京ICP备15006448号-16,京网文[2017]10376-1180号
关于假冒中国教育网的声明 | 有任何问题与建议请联络:Webmaster@staff.cernet.com