(中国科学院计算机网络信息中心 北京 100080)
摘要 简要介绍了当前高性能计算机、并行算法、并行编程环境和高性能计算应用的国际研究现状和发展趋势,阐述了近几年中科院高性能计算环境建设和高性能计算应用的发展情况,最后对我院发展高性能计算技术及应用给出了几点思考。
关键词 高性能计算技术,并行算法,并行编程环境
高性能计算是计算机科学的一个分支,研究并行算法和开发相关软件,致力于开发高性能计算机。随着信息化社会的飞速发展,高性能计算已成为继理论科学和实验科学之后科学研究的第三大支柱。在一些新兴的学科,如新材料技术和生物技术领域,高性能计算机已成为科学研究的必备工具。同时,高性能计算也越来越多地渗透到石油工业等一些传统产业,以提高生产效率、降低生产成本。金融、政府信息化、教育、企业、网络游戏等更广泛的领域对高性能计算的需求也迅猛增长。
1 国际研究现状和发展趋势
1.1 高性能计算机
电子计算机在诞生之初主要就是为科学计算服务的。到20世纪60年代,随着技术的成熟,计算机开始走向商业领域,且应用范围越来越广。为有别于“通用计算机”,专门针对科学计算进行优化设计的计算机开始被称为“高性能计算机”(HPC)。
1.1.1 高性能计算机发展历史
20世纪70年代出现的向量计算机可看作是第一代HPC,通过在计算机中加入向量流水部件,大大提高了科学计算中向量运算的速度。其中较著名的有CDC系列、CRAY系列、NEC的SX系列和中国的银河一号及中科院计算所的757计算机。80年代初期,随着VLSI技术和微处理器技术的发展,向量机一统天下的格局逐渐被打破,“性/价比”而非单一性能成为衡量HPC系统的重要指标。90年代初期,大规模并行处理(MPP)系统已开始成为HPC发展的主流,MPP系统由多个微处理器通过高速互联网络构成,每个处理器之间通过消息传递的方式进行通讯和协调。代表性系统有TMC的CM-5、Intel Paragon、中科院计算所的曙光1000等。较MPP早几年问世的对称多处理(SMP)系统由数目相对较少的微处理器共享物理内存和I/O总线形成,早期的SMP和MPP相比扩展能力有限,不具有很强的计算能力,但单机系统兼容性好,所以90年代中后期的一种趋势是将SMP的优点和MPP的扩展能力结合,发展成后来的CC-NUMA结构,即分布式共享内存。其代表为Sequent NUMA-Q、SGI-Cray Origin、国内的神威与银河系列等。在发展CC-NUMA同时,机群系统(Cluster)也迅速发展起来。机群系统是由多个微处理器构成的计算机节点通过高速网络互连而成,节点一般是可以单独运行的商品化计算机。机群系统比MPP具有更高的性价比,其代表是IBM SP2,国内有曙光3000、4000,联想深腾1800、6800等[1,3]。
1.1.2 高性能计算机研究现状与发展趋势
每年6月和11月发布的TOP500一直是全球HPC领域的风向标[4],排行榜的变化折射出全球HPC在技术和应用方面的研究现状和发展趋势。第28届全球TOP500 HPC排行榜于2006年11月14日在美国召开的SC06大会上正式对外发布,最新排行榜反映出如下一些新的变化。
(1)总体性能趋势。TOP500组织称,最新全部500套系统的总体计算性能将达到3.53千万亿次每秒(Pflops),而半年前只有2.79Pflops,一年前是2.30Pflops。能够进入TOP500 HPC系统的Linpack性能已从半年前的2.026万亿次每秒(Tflops)上升到2.737Tflops。而进入前100位的系统Linpack性能则从半年前的4.713Tflops上升到6.619Tflops。
(2)美国霸主地位牢不可破, TOP10美国占7套。美国仍然是HPC的最大用户,在研发和应用领域都遥遥领先。此次TOP500排行榜中,一共有309套安装在美国,美国在HPC领域的综合发展水平依然是全球第一,其全球霸主地位仍然牢不可破。
欧洲有所复苏,共有92套系统,超过亚洲的79套,重回第二位。在欧洲,英国是最大用户,拥有30套系统,其次是德国,拥有18套。亚洲最大的用户是日本,拥有30套,而中国则从半年前的28套减少到18套。
(3)厂商:IBM和HP是最大赢家。当前TOP500中各个性能档次的大多数系统都来自IBM和HP。IBM仍然是TOP500的领导者,所占份额为47.2%。HP为第二大厂商,占31.6%,但HP此次未能进入TOP10。份额超过3%的其它制造商为:SGI(4.0%)、DELL(3.6%)、CRAY(3.0%),这三大厂商都有系统入选TOP10。
(4)体系结构:Cluster大行其道,MPP不容忽视。工业标准化的机群系统Cluster仍占据TOP500 HPC排行榜的垄断地位,361套系统,占72.2%。绝大部分的机群系统来自IBM和HP,主要面向工业和商业的低端应用领域。采用星群(Constellations)结构的系统为31套,比半年前的38套有所减少。而108套面向高端市场的MPP结构系统比半年前的98套有所回升。
(5)处理器:AMD大获增长,Inetl仍是最大赢家。目前,TOP500共有263套系统采用英特尔处理器,占52.6%,比一年前的333套(66.6%)有较大幅度下降。形成鲜明对比的是,AMD的皓龙系列处理器从一年前的56套(占11.20%)增加到现在的113套(占22.6%),并首次超过IBM的Power,成为现在TOP500中应用最多的第二大处理器。另有91套系统采用IBM的Power处理器(占18.2%),而一年前只有72套(占14.4%)。另外,双核处理器也已获广泛应用。已有76套系统采用皓龙双核CPU,31套采用了英特尔最新推出的Woodcrest双核至强。
(6)互连网络:InfiniBand增长迅速。尽管半年前有256套系统采用千兆以太网,而现在只有213套,但千兆以太网仍然是用得最多的内部系统连接技术。Myricom公司的Myrinet从87套减少到了79套。相反,InfiniBand技术获得了迅猛增长,从半年前的36套增加到现在的78套。
(7)操作系统:Linux成为首选。Linux目前已成为HPC的首选操作系统。当前TOP500排行榜中有376套系统使用了Linux操作系统,比重为75.2%,而2001年仅有39套;相比之下,此次只有86套使用Unix操作系统,而2001年是443套。短短几年时间,TOP500 中操作系统的格局发生了翻天覆地的变化。
网络化将是HPC最重要的趋势,网格(Gird)已成为高性能计算一个新的研究热点。网格将分布于全国的计算机、数据、存储设备、用户、软件等组织成一个逻辑整体,各行业可以在此基础上运行各自的应用网格。
1.2 并行算法和并行编程环境
并行计算是提高计算机系统计算速度和处理能力的一种有效手段,它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题划分为不同的时间段,在某一个时间段内分解成若干个部分,各部分均由一个独立的处理机来完成。
1.2.1 并行算法
算法是求解问题的方法和步骤,而并行算法就是用多台处理机联合求解问题的方法和步骤。并行算法执行过程是将给定的问题首先分解成若干个尽量相互独立的子问题,然后使用多台计算机同时求解它,从而最终求得原问题的解。并行算法作为并行应用开发的基础,在并行应用中具有举足轻重的地位[2]。
从历史上看,20世纪70年代末和80年代初是并行算法研究的顶峰时期,最著名的成果是递归问题的向量化。随着多向量处理并行计算机(如CRAY Y-MP,YH-2)的出现,既要考虑多处理机间的任务级大粒度并行,又要考虑单处理机上向量级细粒度并行的算法在80年代初期和中期比较流行。基于SIMD并行计算机设计的并行算法在80年代中期较热门,但因缺少通用性,过分依赖机器,程序设计复杂,随着80年代后期高性能计算机的发展,很快被淘汰。目前,并行算法的设计以MIMD类为主流,要求具有可扩展性和可移植性。90年代中期后,并行算法研究渐渐面向实际而内容有所拓宽,不但研究并行算法的设计与分析,同时也兼顾到并行机体系结构和并行程序设计。
近几年来,随着半导体器件工艺水平的提高以及计算技术和通信网络的迅速发展,双CPU或4CPU的高档机已随处可见,HPC的普及,也给并行算法的研究带来新的机遇。同时,近几年来由于硬件技术的飞速发展,使得拥有成千上万个CPU的HPC相继研制成功,如何充分有效地利用如此巨量的CPU,成为并行算法研究面对的一个极富挑战性的问题。
1.2.2 并行编程环境
当前,比较流行的并行编程环境可分为3类:消息传递、共享存储和数据并行。它们的主要特征如表1所示。
(1)消息传递。在消息传递并行编程中,各个并行执行的任务之间通过传递消息来交换信息、协调步伐、控制执行。消息传递一般是基于分布式内存的,但同样也适应于共享内存的并行计算机。目前,大量并行程序采用的都是基于消息传递的并行编程方式。基于消息传递的并行编程环境中,最流行的是PVM(Parallel Virtual Machine)和MPI(Message Process Interface)。
PVM[5]是由美国的Oak Ridge国家实验室、Tennessean大学、Emorg大学、CMU大学等联合开发而成,能够将异构的Unix计算机通过异构网络连接成一个“虚拟”的并行计算系统,为其上运行的应用程序提供分布式并行计算环境。目前几乎所有的并行计算系统都支持PVM。
MPI[6]是一种基于消息传递的并行编程接口,而不是一门具体的语言,目前已发展成为消息传递模型的代表和事实上的工业标准。1997年7月在原来MPI-1的基础上推出了MPI的扩充部分MPI-2,MPI-2主要扩充了3个方面:并行I/O、远程存储访问和动态进程管理。MPICH是Linux平台下最重要的一种MPI实现,是一个与MPI规范同步发展的版本。LAM(Local Area Multicomputer)是Linux平台下另一免费的MPI实现。所有的并行计算机制造商都提供对MPI的支持。
(2)共享存储。共享存储并行编程主要利用添加并行化指令到顺序程序中,由编译器完成自动并行化。共享存储模型仅被SMP和DSM并行计算机所支持。共享存储的编程标准包括Pthreads、X3H5和OpenMP等,其中OpenMP是最常用的共享存储并行编程方式。
OpenMP[7]是一组指令与所支持的运行时库例程的集合,用来支持多线程应用的编程。Intel、IBM、HP、Sun、SGI等厂商都提供对OpenMP的支持。OpenMP使用简单,通过少量指令,程序员就可将串行程序顺利地演化成并行程序,但要求编译器必须能够支持OpenMP。
(3)数据并行。数据并行编程指的是将相同的操作同时作用于不同的数据,从而提高问题求解速度。数据并行提供给程序员一个全局的地址空间,所采用的语言本身就提供有并行执行的语义,程序员只需要简单地指明执行什么样的并行操作和并行操作的对象,就实现了数据并行的编程。
数据并行很早就被应用于向量计算机,可高效地解决大部分科学与工程计算问题。但对非数值计算类问题,则难以取得较高的效率。目前,数据并行面临的主要问题是如何实现高效编译,只有具备了高效的编译器,数据并行程序才可以在共享内存和分布式内存的并行计算机上取得高效率。
近年来,HPC体系结构的一个发展趋势是SMP(symmetric multiprocessor)机群系统,其是由拥有多个处理器的SMP节点和连接各节点间的快速网络(Infiniband、myrinet、QSnet等)构成的多级体系结构,所以MPI+OpenMP的混合编程越来越多地被采用。MPI+OpenMP的混合编程采用MPI作为消息传递接口,而OpenMP作为编写多线程的API(应用程序接口),即机群级并行使用MPI实现,MPI+OpenMP多级并行编程的应用在很多领域已获得较大成功。
1.3 高性能计算应用
回顾计算机问世半个多世纪的历史,高性能计算应用与高性能计算技术的发展是密不可分的。一方面,计算机技术的发展为高性能计算应用提供了强大工具和物质基础,应用开发也推动了高性能计算技术本身的发展。高性能计算技术被广泛地应用于核武器研究和核材料储存仿真、生物信息技术、医疗和新药研究、计算化学、天气和灾害预报、工业过程改进和环境保护等许多领域。值得注意的是游戏等娱乐领域近年来已逐步成为HPC新的用户。
近年来高性能计算在工业和制造业领域的应用越来越普遍和广泛。传统飞行器设计方法试验昂贵、费时,所获信息有限,迫使人们用先进的计算机仿真手段指导设计,大量减少原型机试验,缩短研发周期,节约研究经费。目前在航空、航天、汽车等工业领域,利用CFD进行的反复设计、分析、优化已成为标准的必经步骤和手段。
国外的HPC应用已具有相当的规模,在各个领域都有比较成熟的应用实例。在政府部门大量使用HPC能有效提高政府对国民经济和社会发展的宏观监控和引导能力,包括打击走私、增强税收、进行金融监控和风险预警、环境和资源的监控和分析等。在发明创新领域,壳牌石油公司通过全球内部网和高性能服务器收集员工的创新建议,加以集中处理。在设计领域,好利威尔公司和通用电气公司用网络将全球各地设计中心的服务器和贵重设备连于一体,以便于工程师和客户共同设计产品,设计时间可缩短100倍。此外,制造、后勤运输、市场调查等领域也都是HPC大显身手的领域。
2 中科院的研究进展
面对暴雨、海啸、洪水、地震、SARS等不可预知的自然、社会挑战以及各种商业风险,世界各国均倾注大量人力、物力、财力资源推动本国高性能计算的发展,我国政府、企事业、科研单位也在积极推动HPC应用的普及。中科院非常重视高性能计算环境建设和高性能计算应用的发展,对发展我国高性能计算事业起到巨大推动作用。
中科院计算机网络信息中心超级计算中心自成立以来,秉承“面向科研领域、立足服务社会、提供优质服务、推进并行事业”的方针,承担我院高性能计算软硬件环境建设任务,推动我院高性能计算应用的发展,为院内外用户提供高性能计算服务和技术支持。在高性能计算环境建设和高性能计算应用方面取得了一定的进展。
2.1 高性能计算硬件环境建设
“十五”期间,中科院在超级计算环境建设与应用方面取得了显著成就。从几十亿次的SGI(1996年)、到近百亿次的日立(1998年)和逾千亿次的国产曙光2000-II(2000年),直至5万亿次的国产联想深腾6800超级计算机(2003年),计算能力大幅提高。深腾6800是超级计算中心现有的最重要计算资源,用户多、应用范围广,其中70%以上的应用课题得到“863”、“973”、国家自然科学基金等国家重点项目资助,在科学计算应用中发挥了重要作用。至2005年底,深腾6800共有正式用户155个,平均整体使用率达到了89%,最高时达到96.2%,系统处于满负荷运行状态。截至2006年底,用户已达184个,平均CPU利用率79%,平均整体使用率达90%。如此高的系统负载,使得用户作业等待时间过长,折射出“十一五”期间超级计算环境建设的更大需求和更高目标。
根据我院“十五”期间的超级计算环境建设与应用情况,结合超级计算中心多次开展的面向全院的计算需求调研分析结果,“十一五”期间超级计算环境建设的预期目标是引进一台百万亿次超级计算机及大容量存储设备,进一步提升中科院高性能计算环境的水平,满足大规模与超大规模数值模拟计算的应用需求,为院e-Science及“1+10”创新基地建设服务。
2.2 高性能计算软件环境建设
以开发高性能计算环境的科学计算与系统应用软件,建设有自已特色的高性能计算环境为目的,通过基础并行软件平台、系统应用软件与工具平台和科学计算平台这三大平台的建设,最终建立起了一个与硬件环境相配套、较为完备而有明显自我风格的基于网格的高性能计算环境。
包含9大公开并行软件包和1个自主开发并行软件包的“基础并行软件平台”为用户提供了一个并行应用程序开发的基础平台,丰富了深腾6800系统的软件资源,可供国内从事科学计算的广大人员使用,在代码编写、正确性、可移植性和性能优化等方面大大减轻了应用程序开发人员的负担。
“系统应用软件与工具平台”为用户提供了基于web的高性能计算易用环境,融合了作业提交、信息查看、记账服务、系统管理及演示等功能,并在计算Portal的基础上,开发了环境科学、生物信息、材料科学、可视化以及计算化学等7个应用Portal,完成了14个应用的封装。该安全易用的web化高性能计算开发应用环境的完成在国内尚属首例,对国家网格软件功能设计与系统开发具有很好的参考价值与借鉴作用。
“科学计算平台”开发出一批具有自主知识产权的科学计算应用软件,建成了一个能基于此开展科学研究、并行计算服务和技术支持、网络计算服务、计算结果可视化等工作的科学计算平台,并通过在应用领域的实践,发展和创新了高性能科学计算方法和并行软件系统及大规模并行实现技术,完善了我院科学计算环境,为建立国家科学计算网格奠定了基础。
2.3 高性能计算应用进展
深腾6800的应用领域涉及气象数值预报、地震预报、生物信息、药物设计、环境科学、空间科学、材料科学、计算物理、计算化学、流体力学、地震三维成像、油藏数值模拟、天体星系模拟等,其中70%以上的课题得到国家级重点项目的资助,在院内外的科学计算中发挥了重要作用,并作为国家网格项目北方区中心结点与上海超级计算中心及全国6个省市的大型计算机实现了异地互联。以高性能计算环境为基础,中科院超级计算中心积极与院内外的多家单位合作,取得了一系列引人注目的应用成果。
与中科院力学所非线性力学国家重点实验室(LNM)和中国地震局合作的应用课题“非均匀脆性介质破坏的共性特征、前兆与地震预报”,在成功预测2004年和2005年中国大陆地震以及南亚地震方面取得了引人瞩目的成果,并由超级计算中心帮助完成的并行化LURR地震预报程序已按国家地震局的要求移植到地震局的计算环境中,将在我国中长期地震预测预报中发挥重要作用;与中科院武汉测量与地球物理所合作的应用课题“地球重力场仿真系统研究”,其成果在2005年珠峰测高中发挥了重要作用;与中科院生态环境研究中心和中国气象科学研究院合作的应用课题“大规模科学计算在生态环境研究中的应用”,其成果为北京市城市规划提供了科学依据;与中科院空间科学与应用研究中心合作的应用课题“灾害性空间天气数值预报模式的初步应用开发”,参与了“双星计划”,为中国航天事业发展做出了贡献;与中科院过程工程研究所合作的应用课题“大规模并行粒子模拟通用软件平台的开发与应用”,其成果已经在工业应用中(如宝钢)取得显著成效。
2.4 高性能计算需求
2006年开始,超级计算中心结合中科院“1+10”创新基地和重点学科的部署,重点对过程工程、空间科学、计算化学、药物设计、材料科学、地球科学、环境科学、生物信息、流体力学、高能物理等11个应用领域的相关用户再次进行“十一五”期间的高性能计算需求调查。调查内容包括用户对计算能力(CPU、内存、网络)、存储能力(对磁盘空间的需求)及应用软件需求等几个部分(见表2)。
在这次调查中,我院有22个科研单位的42个课题组对高性能计算提出了需求,这些课题的来源主要包括国家自然科学基金、大科学工程、“973”、“863”、中科院、上海科委、国家气象局、北京市科委等。
不同的用户分别用计算所需CPU数与每年所需总机时来表述所需要计算能力,为便于统计,我们对每个用户的计算需求统一换算为每年所需总机时数,并进一步转换为计算性能(Gflops)来表示。
据目前数据统计,以上所有学科领域总计算机时需求为129百万CPU小时,以深腾6800为参照,所对应的计算能力约为78Tflops,约用15006多个处理器。同时对应用软件以及可视化也有相当多的需求,这里不再赘述。
3 对中科院高性能计算发展的思考
(1)以用户需求为导向,加强高性能计算环境建设。高性能计算环境建设不能盲目以追求计算机峰值为目的,而应以用户需求为向导,以高性能计算的应用水平为依据,与全院的规划及创新基地建设密切结合,合理建设高性能计算环境。
(2)加强院地合作,建立应用范围广泛的软件平台。高性能计算环境建设中,要实现软件建设和硬件建设并重,加强院内外单位的合作,加大自主软件的开发和集成力度,使高性能计算环境真正发挥应有的作用。在高性能环境的软件建设方面,我院的投入还需要增加,给其以持续不断的支持。
(3)强调计算机系统的实用效率、方便使用方面的研究。高性能计算机的问世给科学研究及工农业生产等带来了前所未有的发展,同时对使用计算机也提出了更高的要求,程序越来越复杂。因此,需要加强计算机系统研制的支持,开发易于使用的高性能计算机系统,为使用HPC的用户提供方便。
(4)注重人才培养,促进高性能应用的发展。加强自身人才培养,引进既懂专业知识又懂计算科学的复合型人才,提升服务水平,与我院的重大任务和创新基地建设相结合,选择各学科有强烈需求的重要科学计算应用问题进行重点支持。加强国内外的学述交流,邀请国际上的科学计算专家来华讲学和选派重点学科的骨干到国外学习科学计算知识,促进我院科学计算研究的发展。
(5)寻求国内外合作,建设具有科学计算特色的网格系统。积极拓展多种形式的国内外合作,开展多种资源的有效集成和共享,共同建成科学研究所需要的网格系统,为全国各行业更多的用户提供高性能计算应用、信息查询、知识教育与学习等服务,推进中国网格技术与应用发展。
目前我院的高性能计算硬件环境已可与国际上的先进研究机构相比,但是应该看到在应用水平上还有相当的差距,提高应用水平是当务之急。
主要参考文献
1 黄凯,徐志伟著,陆鑫达等译.可扩展并行计算
技术、结构与编程.北京:机械工业出版社,2000,5.
2 张林波,迟学斌,莫则尧等.并行计算导论.北
京:清华大学出版社,2006.
3 樊建平,陈明宇.高性能计算机研究的现状与展
望.信息技术快报,2003,(5).
4 TOP500 Supercomputing Sites.http://www.
top500.org.
5 PVM:Parallel Virtual Machine.http://www.epm.
ornl.gov/pvm/pvm_home.html.
6 The Message Passing Interface (MPI) standard.
http://www-unix.mcs.anl.gov/mpi/.
7 OpenMP:Simple,Portable,Scalable SMP
Programming.http://www.openmp.org. |