鲲鹏's profile鲲鹏(BirdGu)的BlogPhotosBlogListsMore ![]() | Help |
|
|
鲲鹏(BirdGu)的Blog软件开发, 日本 January 01 巨星沉浮——看看超级计算机排行榜(应用篇)应用篇 前面有人问超级计算机用在什么地方,现在就来回答这个问题。不过Top500每期榜单上都有一半左右的系统的用途是“Not Specified”。因此只能再结合这些系统的用户来推测它们的用途。 我们先来看一下每期榜单的第一名的用户都是谁: 在Los Alamos, Sandia, Lawrence Livermore,核武器研究是这些国家实验室的重要研究课题。而在核武器研究领域,超级计算机的一项重要应用就是核爆炸的计算机模拟。当然,这些实验室也同时担负着新能源的研究,其它军工技术和系统,以及一些基础理论研究项目。 在2005年11月,Los Alamos有14套系统上了Top 500,Sandia有12套,Lawrence Livermore有10套,NNSA有2套。总计有38套,占总数的7.6%。 日本著名的Earth Emulator是由日本National Space Development Agency(国家空间发展局), Atomic Entergy Research Institute(原子能研究所), Marine Scinece and Technology Center(海洋科学与技术中心)三家合作开发的。主要研究任务是大气,海洋和地球环境变化的预测和评估,对自然灾害的预测,人类活动和自然关系的研究等等。 在1993年6月的傍单上,占有比例比较高的应用领域有: Aerospace, 5%,用户有美国NASA,洛克西德,波音,麦道,洛克维尔(Rockwell),格鲁曼,以及法国,英国,荷兰等的宇航研究机构和公司。 其它还有Eletronics(3.2%), 能源(2.8%) 到2000年6月,电信方面的系统达到了12%,用户有德国电信,法国电信,阿尔卡特,Sprint,荷兰电信,韩国Freetel等等。 2006年6月,初了Not Specified的以外,Semiconductor达到了9.4%,Geophysics和Finance都有6.4%,Weather and Climate Research有3%。Gaming方面有7台,居然全是中国人的,中国大陆5台,台湾2台,而且好像是同一家公司的,所以都是HP的Blade Cluster BL-20P系统。 这是盛大的吗?真有钱。 2006年6月,中国大陆有28套系统上榜,我们来看看这些系统都在什么地方(括号中为排名): 国家气象局 (35), 台湾地区有三台,除了那家游戏公司的两台以外,另一台在“国家”高性能计算中心,排名第491。 巨星沉浮——看看超级计算机排行榜(体系架构篇)系统架构篇 93年的时候,SMP(对称多处理)的架构站了将近一半,49.8%。但是我们前面说道,80年代后期MPP架构已经开始兴起,因此在TOP500中也占到了23.8%,处于第二位。但是由于前面提到的那为明星(或者说流星)Thinking Machinese采用的是MPP架构,因此MPP也就包揽了前4名,其它的MPP系统排名也都很靠前。 NET,Cray和HP都是SMP架构的。其中NEC SX-3/44R和SX-3/44占据了第5,6位。 我对并行计算的体系结构也不熟,这里简单解释一下SMP和MMP,有不对的地方还请行家不吝赐教。 SMP的系统个处理器是共享系统内存的。处理器和内存都连在系统总线上。现在的多CPU的PC服务器都属于这种架构。受总线带宽的限制,能够支持的处理器不可能太多。比如NEC的SX-3/44就只有4个CPU,排名9-20的Cray Y-MP C916/16256都是16个CPU。提高整体性能相当程度上要依靠提高处理器的性能。 MPP的系统有很多计算节点组成,每个节点有处理器和内存,节点间不共享内存。节点间的联接方式很多。比如NEC的Earth Emulator有640个节点,节点间是通过640*640的专用连接设备连接的。 MPP的架构处理器可以作到非常多。比如93年第一名的Thinking Machinese TMC CM5系统就已经用了1024颗CPU (型号不明),最高速度59.7GFLOPS。 除了这两中架构以外,93年的时候还有19.4%的单处理器系统。主要是NEC, Fujitsu, Hitachi等日本厂商的系统。 这里可以看出美国当时已经把重点转向了并行系统,而日本人还固守在单处理器系统上,这可能也是后来两国在超级计算机领域拉开差距的一个原因吧。 另外还有7%的SIMD系统,就是单指令,多操作数系统。所谓SIMD就是一条指令,同时对多对操作数。比如同时计算16对数字之间的加法。Intel MMX中就有很多这样的指令。Thingking Machinese,MasPar是这种架构的主要供应商。另外还有就是那台被错划给HP的DECmpp SX 100。 到了94年6月的时候,MPP(40.2%)超过了SMP(39.2%)。但到95年6月,SMP反扑,以48.2%对43.8%反超。但另外两种架构所战比例已经微不足道了。这以后一直到99年6月,SMP和MPP互相拉锯,各有胜负。但是99年11月的时候,MPP以51.6%对33.8%较大比例超出。并在以后保持了对SMP的优势。 95年11月第一次出现了叫做Constellations(星座)的体系架构。不过对这种架构我也不了解。16套系统全部是SGI的。 97年6月单处理器系统从榜单上消失,然后是11月,SIMD退出。当年6月,日后的王者Cluster露了一小脸,加洲伯克莱大学的Berkley NOW以10.14GFLOPS据344位。该系统是该校自己搭建的,使用了100个SUN的CPU,具体型号不名。97年11月478位,然后就出榜了。 98年6月,洛斯阿拉莫斯国家试验室自己搭的Avalon Cluster,用了68颗Alpha芯片,以19.33GFLOPS居314位。不过只在榜上出现了这一次。 99年6月份第一次出现了有专业厂商制造的群集系统。AlphaServer SC, 256颗Alpha芯片,最高速度154.4GFLOPS,居48位。Top500数据库把它归到HP名下,不过当时拥有Alpha的Compaq还没有被HP收购。 2002年11月,SMP退出。同期MPP和Constellations以40.80%持平,Cluster以18.6%处第三。再没有别的体系结构了。但是MPP的总FLOPS数达到了167TFLOPS,而Constellations只有47TFLOPS,因此性能上还是MPP胜出。就是Cluster也有77TFLOPS。说明Constellations不是太理想的架构。 果然,到了2003年6月,Cluster就以29.8%超过了Constellations的28.00%。 2003年11月,Cluster(42%)超过了MPP的32.6%。这以后,Cluster一直稳居榜首,并不断扩大优势。到了2006年6月,有超过72.8%的系统采用了Cluster架构,而MPP还剩下19.6%,Constellations更是只有7.6%了。 但是,这只是从系统数量上来说的, 如果从性能来说的话,MPP仍然占有绝对优势。Top10中,1-4名和8-10名7套系统都是MPP架构的,Cluster只占了7,8两位。法国Bull SA的NovaScale以Constellations架构占了第5位。 中国的曙光和联想的系统都是属于Cluster架构的。 Cluster架构的优点是使用成熟,通用,廉价的部件搭建,门槛比较低,但要作到顶级还有一定困难。这可能也是使Top500的上榜厂商数量大增的原因。93年的时候只有12个厂商的系统上榜,而2006年,这个数字增加到了25家,还有7套系统是由最终用户自己搭的。可以说Cluster架构打破了少数专业厂商对超级计算机领域的垄断。 ----------------分割线------------------- 在那个论坛也有人问银河机用的是什么CPU。如果是说当年的银河1号亿次计算机的话,那么回答是,银河1号中没有CPU。 现在在网上银河1号的具体技术资料还真不好找。好在在一篇银河主要试制人员的介绍中明确说明银河1号的体系结构是参照Cray-1的。这就好办了。 下面抄一短对Cray-1的描述,原文是英文的,我给翻译成中文了
引用
Cray-1是Cray第一款使用集成电路(IC)的设计。虽然集成电路在60年代就出现了,但是只到70年代早期才达到高速计算所需要的性能要求。在Cray-1中使用的IC是非常简单的,一般只包含4个逻辑门,每个大概包含4个三极管。Cray-1一共拥有约20万个逻辑门。 IC被插在大型的5层印刷线路板上,最多的一快板有144个IC。为了散热,线路板背靠背地装在一起。24个28英寸高的机架中装配了72对这样的线路板。一个典型的模块,比如一个单独的处理单元,包含有1到2快线路板。整个机器中一共有113种,1662个模块。 所以,也可以说真个Cray-1就是一快CPU。 巨星沉浮——看看超级计算机排行榜(中国篇)中国篇 2001年11月,Top500上第一次出现了中国大陆地区的超级计算机系统,不过很可惜,三台全是HP的。 2002年11月,联想的一台DeepComp 1800排名43,这是中国厂商的系统第一次上榜。该系统安装在Academy of Mathematics and System Science (数学与系统科学研究所?),拥有512颗P4 Xeon 2GHz CPU,使用Myrinet网络,最高运算速度(实测)1297GFLOPS. 2003年6月,联想又有两台新上榜,分列98和297位。两个系统都是256颗P4 Xeon 2.4G。但前一台用的是Myrinet,最高速度711.7GFLOPS,后一台用的是Gigabit Ethernet,最高速度385.4GFLOPS。节点间的通讯速度对整体性能的影响可见一斑。 2003年11月,联想的DeepComp 6800排到了第14位。该系统用了1024颗Itanium2 1.3GHz的CPU, QsNet的网络,最高速度4193GFLOPS。 同年,清华的DeepSuper-21C排到163,用了256颗P4 Xeon 3.06/2.8GHz, Myrinet。最高速度877.3GFLOPS。 2004年6月,安装在上海超级计算中心的曙光4000A排到了第10位。这是中国厂商的系统得到过的最好成绩了。该系统使用了2560颗AMD Opteron 2.2G CPU, Myrinet网络,最高速度11264GFLOPS。 同年新上榜的还有浪潮的TS10000,安装在山东高性能计算中心,使用了192颗P4 Xeon 2.8G, Infiniband 4X的网络,最高速度749GFLOPS。排名372。 这一年前面那两台稍差一点的联想的系统都已经被挤出Top500了。 2005年6月,深圳银河有一套系统排到第100,就安装在他们自己公司,562颗Xeon CPU,最高速度3413GFLOPS。 同一期榜上,第150,151,152三个系统全部属于中国的一家游戏公司,Top500上称之为Gaming Compnay(B),三个系统全部是HP的Blade Cluster BL-20P, 800颗 P4 Xeon 2.8GHz CPU, GigEthernet网络,最高速度2199.7GFLOPS。真有钱啊! 到了2006年6月,更是有5套这样的系统列在这家Gameing Compnay(B)名下,分别安装在上海(2套),成都,西安和北京。 现在(2006年6月)的榜上,安装在中国的系统一共有28套,占5.6%, 仅次于美国(59.8%),英国(7%)和日本(5.8%)。但是其中只有三套是中国厂商生产的,曙光,联想和深圳的银河各一套。而使用的CPU更是全部进口的。 期盼着看到使用龙芯3的曙光5000能在Top500上出现。 巨星沉浮——看看超级计算机排行榜(厂商篇)注:本系列文原发于www.javaeye.com,转到这里做个备份。 ----------------------------------前言--------------------------------- Top500 (www.top500.org) 项目开始于1993年。目的是跟踪高性能计算领域的发展趋势。每年6月和11月会推出全球运算速度最快的500个computer systems (因为集群技术的使用,有些系统可能已经不适合继续称为计算机了)。Top 500项目使用Linpack基准测试程序,测试结果的单位是FLOPS,即每秒浮点运算数。不过常用的单位是GFLOPS,1G等于10的9次方。近年来也常用TFLOPS,就是10的12次方了。 从1993年到现在13年时间了,回顾这个榜单,也能从一个侧面反映这10多年来IT业界的一些历史。
-----------------------------------正文-------------------------------- 说起超级计算机就不能不说Cray。1993年6月的Top500中Cray占到了205台,41.00%。当年Cray在超级计算机领域的领导地位可见一斑。 不过93年的时候Cray已经在走下坡路了。到1996年11月(当年Cray的创始人Seymour Cray在一次交通事故中去世,同年Cray被SGI收购)Cray在Top500中的份额跌到了26.2%,然后是2000年6月的10.8%, 2003年6月的5.2%,2006年6月的3.2%(16台)。我们清晰地看到了巨星陨落的轨迹。 80年代后期MPP(大规模并行计算)开始崛起。这方面的先驱者包括了Thinking Machines,93年6月榜单上的另一个明星。虽然数量不多,只有54台,占10.8%,但是它包揽了前四名,再加上第7名,Top10中占了一半。而Cray只能包揽第9到第20。当时Cray对MPP是不太感冒的,认为为这样的系统开发软件是非常困难的。 但是Thinking Machines的衰落却比Cray要快得多。因为他的业务过份以来DARPA的合同,靠着DARPA的合同在1989年获得了盈利(82年成立的),但是1991年DARPA受到批评,认为它在采购中过分偏向Thinking Machinese,对IBM和Cray不公平。因此,1992年,公司再次陷入亏损。1994年申请破产保护,然后硬件部分出售给SUN,公司本体转型为一家做数据挖掘的软件公司,然后在1999年被Oracle收购。 在Top500榜上,Thinkning Machines的份额在94年6月上升到15.8%,Top10中还有4台。95年6月跌到7.40%,99年6月,从榜上完全消失。 DARPA从善如流,给了IBM和Cray以公平,却毁掉了Thinking Machines。 今天IBM无疑是Top500上的天王巨星。2006年6月,Top500中IBM占了47.8%(239台),超过93年时的Cray。而且IBM包揽了前3名,再加上第8名,Top10中有4个,11名到20名中还有7台IBM。今天在超级计算机领域,IBM已经远远超过了当年Cray曾取得过的地位。 谁能想到在93年6月的榜单上,IBM的成绩是0呢?不过到当年11月的时候,IBM就已经有16台上榜,最好的成绩是一台IBM 9076-005 SP1,排名76。这应该是属于IBM RS6000系列的。 另外,HP的发展也很快。93年6月的时候只有3%的份额,到2000年6月上升到10.6%,2006年6月的时候达到了31.2%,仅次于IBM。而且这两家加起来就有79%份额。所以第三名Dell就只有可怜的4.4%的份额了。 不过93年HP的成绩是有水分的。当年列在HP名下的有一个DECmpp SX 200,排名175,写的Vendor是Hewlett-Packard(Compaq)。但是当时DEC还没有被Compaq收购,Compaq也没有被HP收购。可怜的DEC! Top500还有一个大输家,就是日本。93年6月富士通,日立,NEC三家合计站了20%,但是到2006年6月,这个比例已经下降到了不足3%。日本在超级计算机领域已经被美国远远甩在了后面。不过超级计算机毕竟是要用钱堆出来的,所以这也从侧面反映了日本在90年代以后经济上的衰退。 不过日本也并非没有亮点。NEC的Earth Emulator在2002年6月到2004年6月间连续两年占据榜首位置,即使到了2006年6月仍然据第十。Earth Emulator拥有640个计算节点,每个节点有8个向量型的运算处理器。这个目前普遍采用的使用通用CPU的MPP系统,在思路上还是有很大不同的。 October 23 ASP模式应用中多客户数据管理方案探讨ASP(Application Service Provider)模式应用与普通应用之间的一个重要差别是ASP系统需要管理多个客户的数据。不同客户之间的数据完全独立,没有关联。不允许一个客户查询另一个客户的数据。即使多个客户共享一个数据库,对单个客户来说,其它客户的数据可以看作是不存在的。 这里主要讨论在J2EE应用中如何解决这个问题。当然,这里讨论的方法对于其它架构的系统可能也适用。 方案1:单数据源,单套表。 所有客户的数据都存放在一个数据库的同一套表中, 在部分表中增加标示字段,表明该记录是属于哪个客户的。具体哪些表中要增加标示字段当然要看具体应用,不过我觉得可能大部分表示实体对象的表中都需要加。在很多查询条件中都需要包括这个标示字段。即使是用户自定义的查询,系统也需要在查询条件中加入该字段。 优点:数据源和数据库的管理都比较简单。数据源管理方面和普通的J2EE应用没有差别。 缺点:增加程序的复杂性。如果应用比较复杂,很多数据表都需要加入客户表示字段,很多查询都需要包括该字段,会比较麻烦。如果有遗漏,特别是查询条件中遗漏该字段,就会造成一个客户看到另一个客户的数据。另外,需要在系统的安全性方面做比较细致的设计。比如,某个功能通过在URL中包含某个实体的关键字以查询该实体的信息,或对该实体进行操作。在普通应用中后台只需要根据关键字查出该实体即可。但是在ASP应用中,就必须额外判定该实体是否属于当前登录用户,或者要在查询中条件中加入客户标示。当然如果有办法自动完成这样的检查或者自动修改发到数据库的查询条件,这个缺点就可以避免。只是我现在还没有想到这样做的好方法。 ------------------------------------- 方案2:多套表,多数据源 数据库中每个客户一套表。可以是MySql, PostgresSQL, SQLServer中的不同数据库,或者Oracle中的不同schema。在应用服务器中配置不同的数据源,或者使用不同的连接池。 在访问数据库,需要得到数据库连接时,根据当前用户所属的客户选择合适的数据源或者连接池。 优点:不同客户的数据物理分离,安全性比较好。除了获取数据库连接部分的程序以外,其它程序和普通应用没有两样。不同客户的数据可以放置在不同的数据库服务器中,分担数据库服务器的负荷。 缺点:数据库连接的利用效率不高。ASP模式的主要客户是中小企业。这样带来的结果是客户数可能会很多,但是单个客户的用户数和并发登录数都不会太多。在系统这边来说,则是数据源或连接池很多,但每一个的利用效率都不高。在数据库服务器这边仍然会有很多连接,因为每个数据源或连接池都需要保持一定数量的可用连接。这样通过连接池共享数据库连接而减少总连接数的好处被大大削弱了。 另一个缺点是如果需要增加客户时,需要在应用服务器中配制新的数据源,或者修改应用自己的数据库连接池配制。某些情况下可能无法作到在应用不中断的情况下使这些配制生效。 ------------------------------------ 方案3:多套表,多Schema,单数据源。 这个方案基本是方案2的变种。很多数据库提供Schema,比如PostgresSQL中,同一个数据库下可以有多个Schema,Oracle中,每个用户就是一个Schema。即使用同一个用户登录数据库,只要在表名前加上schema名字,就能访问不同schema中的表。不同客户的数据就可以存放在不同的schema中。这样就能用同一个数据源或连接池,只是在所有的表名前要根据当前用户加上合适的shcema名字。如果要程序员自己这么做当然是很麻烦的。但如果用Hibernate就方便了。因为Hibernate中可以配制default schema,Hibernate在生成SQL时会自动在表名前加上schema名字。 因此如果使用Hibernate实现该方案就需要多个SessionFactory,每个客户对应一个SessionFactory。除了default schema以外,这些SessionFactory的配置完全一样。当程序需要SessionFactory的时候,需要有一个分配程序根据当前用户选择合适的SessionFactory。这些SessionFactory可以在系统启动时根据配制文件全部建立好,也可以采取lazy initialize的方法,这样也能支持动态增加客户。 优点:除了方案2的优点以外,共享数据源或连接池,效率更高。 缺点:对实现手段有一定依赖性。使用Hibernate会比较容易实现,其它方式我不清楚。每个SessionFactory都会有一定开销。多个SessionFactory会增加这部分开销,增加到多少程度,对性能有多少影响还有待测试。多个SessionFactory的情况下,二级缓存会否互相干扰,还是每个SessionFactory有各自自己的二级缓存也有待测试。 ------------------------------------ 所有以上方案都是所有客户共享同一个应用(WAR或EAR)。这种方式有一个缺点,不过这个缺点和数据源无关。如果用户可以以点菜式的方式选购不同功能,也就是说虽然不同客户共享一个应用,但是提供给他们的功能是不同的。这种情况下,程序中会有很多地方要判断用户是否可以使用某功能。这会带来另一种麻烦。这个和权限控制有类似,也许可以用Acegi之类的框架解决。但和权限控制又不完全一样。因为有时简单地提示用户他无权使用某功能可能不够友好,而需要以一种更优雅的方式提供用户降级过的系统功能。当然这个和具体应用有关,这里就不展开了。 ------------------------------------ 方案4:多套表,多应用 这个方案和以上方案不同,除了数据物理分离以外,应用也物理分离。每个客户有各自自己的WAR或EAR。如果使用方案3中的多Schema的方法,那么数据源可以共享,每个应用的SessionFactory有不同的default schema。 优点:应用简单。这样的应用和普通的J2EE应用没有任何区别。支持高度定制化的系统功能。每个应用基本相同,又可以有很大差别。比如用户没有选择的功能更本就不部署。 缺点:应用服务器中每个应用都会有一定的开销,占用一定的固定的内存。这个开销来自于应用服务器管理应用的数据结构;每个应用的class loader,和读入的类的字节码(应用服务器会判断出不同应用的同样名字的类具有同样的字节码,从而只保存一份吗?对次我表示高度怀疑);每个应用还可能会有自己的线程,比如任务调度线程。这些开销可能会使一个应用服务器能部署的应用不会太多(和ASP模式的潜在客户数比较),从而在客户数比较大的情况下需要增加应用服务器的数目。 |
|||
|
|