高性能计算的核心关键技术之百家观点
http://www.csai.cn 作者:作者不详 来源:计算机世界 2003年4月7日 进入社区
体系结构—创新的步伐不断——中科院计算所 孙凝晖
20世纪80年代,可以说是高性能计算机体系结构和通信技术不断创新的年代,出现了包括MPP、SMP、集群等各种各样的体系,以及各种各样的互联技术;而从20世纪90 年代以来,高性能计算应用进入全面开花阶段,高性能计算在科学计算、商业计算领域齐头并进,各种促进应用发展的技术如开发环境、存储、测试等技术不断完善;21世纪,我们将迎来高性能计算技术创新的春天,技术创新的步伐将会加快。今天,我们在此介绍高性能计算中的一些关键技术。
抛开学术上对体系结构的划分,从应用的角度看看高性能计算机的发展规律。
前美国总统信息技术顾问委员会两主席之一,IBM网格计划领导人Wladawsky-Berger曾认为,按照对国民经济和社会发展的影响程度,科学技术的发展可分为专家使用期、早期流行期、公众认识期、广泛使用期四个阶段。让我们依照这一思路看看高性能计算机的发展情况。
专家使用期——只有少数专家能用
在专家使用期,HPC是“大型机—终端”时代,只有少数专家可以使用,并且“会”用大型机(mainframe),解决科学研究中的计算问题。IBM 360系统和Cray-1,中科院计算所的757机、KJ系统、国防科大的银河-1等都是典型的系统。
早期流行期——百花齐放
在早期流行期,HPC是“PC—局域网—服务器”时代,专业人士开始广泛使用计算机,高性能计算机除进行科学计算外,还能做工程计算,如飞机设计、数值天气预报;做事务处理,如银行交易、企业管理信息系统等。高性能计算机呈现出百花齐放的局面,一个本质改变是微处理器取代了组合处理部件,高性能计算机的成本大大降低。
从体系结构上看,以数据为计算原料的事务处理一直稳定在SMP(对称式共享存储多处理机)上,如Sun的Unix系统;在以计算(computation)为目的的高性能计算领域,则精彩纷呈。
为了在一个时钟周期内做更多计算,人们将许多计算部件放在一个CPU内,成为向量机(vector),又以此为基础发展了共享存储的向量机,能共享远地存储的分布式存储向量机,如NEC SX-5系统。为了让一个应用能使用很大的内存,人们将分布在不同CPU周围的内存合并成一个逻辑的大内存,成为分布共享系统(NUMA),又以此为基础发展了COMA、NCC-NUMA、cc-NUMA系统等,如SGI的Origin系统等。
为了让应用能并行地使用尽可能多的CPU解决一个大问题,人们将大量小的处理单元用互联网络连接起来,成为大规模并行处理系统(MPP),又在此基础上发展了可物理地共享存储的MPP系统,和可逻辑地由虚存来共享存储的系统,如Cray T3E、计算所的曙光1000和金怡廉院士设计的神威等。这个时代,用户多在自己的PC上通过网络使用被称为“巨型机”和“超级计算机”(supercomputer)的这些高性能计算机。
公众认识期——逐渐为人所熟悉
在公众认识期——我们现在处于的时期,是“Internet”时代,广大的机构、企业和民众开始大量使用信息技术,与高性能计算机打交道,带来这一改变的当然是Internet和Web了。
对高性能计算机来说,有两个变化改变着游戏规则:一个是以Intel CPU为代表的微处理器,正在飞快地缩小桌面系统与后台系统的处理单元在计算能力上的差距,这是“摩尔定律”在向人们显示的威力;另一个是商品化和标准化不断发挥作用,由此导致了信息产品的量产,大量用户能够使用高端技术,系统的性能价格比迅速提高,由此形成正反馈。以IBM为例,它的eServer的四个系列在CPU、高性能部件、操作系统、数据库等上越来越走向统一。
这个时代在高性能计算机上的伟大贡献显然是集群(Cluster)体系结构了。Cluster就是用标准化的互联网络(定制或商品化)将量产的高性能部件连接起来,用软件提供单一系统映像。在Cluster平台上,科学计算、事务处理和“Internet”时代特有的信息服务应用都能运行自如。典型的系统有IBM SP、HP AlphaServer SC以及计算所的曙光2000、曙光3000。
广泛使用期——HPC变成HPS
在广泛使用期,人们将看不到计算机系统,看到的是各种各样的服务,这就是IBM的按需计算,计算所提倡的网格计算所描叙的美妙未来。这个时代的本质变化是高性能服务(High Performance Service),HPC变成HPS,这时的高性能计算机体系结构是什么,人们尚不知晓。但是我们可以预测一下现有的体系结构的走向。
在商业计算领域,IBM的大型主机会维持它在以银行交易结算为代表的特定领域的市场,但不会有大的发展了;SMP系统是主流,以大节点SMP系统构成的集群系统将不断进入企业,甚至是银行、证券这些最保守的领域。
在技术计算领域(technique computing), MPP、cc-NUMA、VPP系统在最追求性能的应用领域会有一席之地,其中MPP/VPP在构造最大系统,最追求应用饱和性能的用户,以及资金充足的政府机构那里依然受到追捧;大型的cc-NUMA系统将逐渐走向衰落,理由有二:一是它的惟一优势是大物理内存,大量CPU共享内存的高效编程对用户是一件困难的事;二是用算法和软件的方式使用大内存,要有效和经济得多。但NUMA技术不会衰落,在IBM P690的板与板的互连中,AMP Opteron的CPU之间的互连中,都采用NUMA方式,只是规模较小而已。SMP系统由于应用的持续性,集群系统由于无可比拟的性能价格比将占据主流位置。
未来发展
高性能计算机的体系结构创新的挑战在哪里?我们认为在两个方面:一是满足新需求的技术创新,如电子商务、生物信息、信息安全、网格计算等都提出了新的需求;二是解决存在问题,集群技术无疑是应坚持的技术路线,但这一体系结构存在很多问题,如系统中有许多操作系统映像,天生单一系统映像差;当系统较大时,可扩展性和可靠性较差。计算所智能中心将重点放在四项技术上进行创新,分别是网格零件、数据密集技术、全频谱服务和大规模集群计算。
开发环境—搭建应用的基础——清华大学 郑纬民 陈文光
并行程序的编程模型、运行环境、调试环境等都要比串行程序复杂得多。提供良好的高性能计算开发环境,一直是学术界和工业界所追求的目标。
目前比较流行的高性能计算系统,大体可以分为两类:一类是共享内存系统(SMP),如IBM的P690,HP的SuperDome等,其特点是多个处理器拥有物理上共享的内存;一类是分布存储系统(DMP),如MPP和集群系统,其特点是系统由多个物理上分布的结点组成,每个结点拥有自己的内存,结点通过高速以太网或专用高速网络连接。本文主要介绍这两类系统上的开发工具。
一、并行程序的开发模式
1. 共享内存模型
在共享内存模型中,一个并行程序由多个共享内存的并行任务组成,数据的交换通过隐含地使用共享数据来完成。此编程模式一般仅需指定可以并行执行的循环,而不需考虑计算与数据如何划分,以及如何进行任务间通信,编译器会自动完成上述功能。
目前流行的共享内存模型开发标准是OpenMP。OpenMP定义了一套编译指导语句,用于指定程序的并行性、数据的共享/私有等信息。其目标是为SMP系统提供可移植、可扩展的开发接口。OpenMP由OpenMP Architecture Review Board于1997年推出,现在已发展到2.0版。OpenMP支持的编程语言包括Fortran、C和C++。
OpenMP得到了工业界的广泛支持,有大量的商业编译器和其他开发工具支持OpenMP的开发,如IBM、HP、Sun、SGI、Intel等硬件厂商均有支持OpenMP的编译器产品,另外还有一些第三方厂商的OpenMP编译器。
2. 消息传递模型
在消息传递模型中,一个并行程序由多个并行任务组成。每个并行任务拥有自己的数据并对其进行计算操作。任务之间数据的交换是通过显式的消息传递语句来完成的。
现在广泛使用的消息传递模型有两个:PVM和MPI。PVM即Parallel Virtual Machine(并行虚拟机)与MPI即Message Passing Interface(消息传递界面)。PVM与MPI所提供的功能大致相同,但两者的侧重点有所不同。PVM强调在异构环境下的可移植性和互操作性,程序之间可以互相通信,并支持动态的资源管理和一定程度的容错;而MPI更强调性能,不同的MPI实现之间缺乏互操作性,本身也不支持容错(可以通过专门的容错软件来支持容错)。一般而言,使用MPI比较适合于开发MPP或同构集群上的并行应用,可以有较高的通信性能;而PVM更适合于异构的集群系统。
几乎所有的高性能计算系统都支持PVM和MPI。
3. HPF
HPF(High Performance Fortran)的思想与OpenMP类似,都是通过定义编译指导语句来帮助编译器生成并行代码。HPF的目标系统与OpenMP不同,它支持DMP系统。因此,除了指定并行性的编译指导语句外,HPF还指定数据划分的编译指导语句。HPF与消息传递模型的不同之处则在于:HPF通过编译器来生成通信语句,不需要程序员手工编写。
HPF得到了工业界的广泛支持,如IBM、HP、Sun都有HPF编译器。第三方产品则有PGI的PGHPF、APR的Forge xHPF等。其不足是对于某些问题无法得到与手工编写的消息传递程序相同的性能。
4. 并行库
使用并行库开发高性能计算程序的基本思想是:用户不需要自己编写通用的并行算法代码