| 一、高性能计算基础
1.1.高性能计算介绍
高性能计算(HPC)是一个计算机集群系统,它通过各种互联技术将多个计算机系统连接在一起,利用所有被连接系统的综合计算能力来处理大型计算问题,所以又通常被称为高性能计算集群。
高性能计算方法的基本原理就是将问题分为若干部分,而相连的每台计算机(称为节点)均可同时参与问题的解决,从而显著缩短了解决整个问题所需的计算时间。
通常,解决大型计算问题需要功能强大的计算机系统,而现在,随着高性能计算的出现,使这一类应用从昂贵的大型外部计算机系统演变为采用商用服务器产品和软件的高性能计算机集群。因此,高性能计算系统已经成为解决大型问题计算机系统的发展方向。
那么,什么样的大型问题最适合使用高性能计算系统呢?一般来说,高性能计算是为了实现在下列情况下的计算系统:
能够突破性能极限的计算。
单个高端计算机系统不能满足其需求的计算。
需要通过专门的程序优化最大限度提高系统的I/O、计算和数据传送性能的计算。
1.2.高性能计算的发展
1.2.1. 矢量对称多处理
上世纪80年代,由定制设计的软硬件和Fortran编译器组成的大型单片机系统占据着高性能计算的统治地位。该系统可以完成所需工作,但计算机的快速演进使其在几年内即被弃用。它没有遵循摩尔定律,昂贵的成本抑制了它的发展,它只能解决少数用户的计算需求,显然不能为大众所接受。
矢量高性能计算包括以下组件:
定制CPU
定制内存
定制封装
定制互连
定制操作系统
成本极其昂贵:每gigaFLOP(每秒十万亿次浮点运算)约500万美元
技术演进统计:只有约1/3符合摩尔定律的预测
1.2.2. 大规模并行处理
上世纪90年代,HPC系统开始采用商业化处理器和内存,但这些系统仍需依赖定制的互连、封装、操作系统和系统管理工具。系统添加了一个Fortran编译器,同时其售价仅为80年代的1/25。该系统虽然更为强大,但由于某些硬件仍需定制,所以它仍无法完全遵循摩尔定律的原理。其中一个最典型的实例就是Sandia沂笛槭也渴鸬腁SCII
red系统。
商业化(COTS)CPU
商业化内存
定制封装
定制互连
定制操作系统
成本较高:每gigaFlop(每秒十亿次浮点运算)约20万美元
技术演进统计:只有约1/2符合摩尔定律的预测
1.2.3. 高性能计算机集群系统
目前几乎所有组件均已上市,并被商业化操作系统(如Linux)紧密连接在一起。现在,集群新硬件的快速推出进一步验证了摩尔定律。实际上,许多性能卓越的集群都在其原始配置基础上获得了显著提高。
(COTS)CPU
(COTS)内存
(COTS)封装
(COTS)互连
(COTS)操作系统
集群阵列拉近了它与高端超级计算机的性能差距。
COTS联网技术已经非常成熟。
成本适中:每gigaFLOP(每秒十亿次浮点运算)约4000美元
技术演进完全遵循摩尔定律
1.3. 高性能计算的市场预测
1.3.1. 截止到2005年的预测概览
在本世纪前5年内,技术系统和服务器市场收入的复合年增长率(CAGR)将可达到13.1%,届时市场收入将超过112亿美元。随着高端性能和企业级系统的扩展,预计所有市场都将实现增长。
全球高性能技术系统收入
定制技术计算机 超过1,000,000美元的系统 介于250,000美元与999,999美元之间的技术系统 低于250,000美元的技术系统
集群解决方案的增长幅度将会明显超过整个技术系统市场。集群增长的主要推动因素在于它能够以极低的购价将大量原始计算性能整合起来,因此,集群技术今后必将成为推动组件和性能增长的主要推动因素。
到2005年,服务器集群系统的收入预计会占到服务器市场总收入的14%。 这些系统的进一步普及要归功于以下几个方面:
商业化(COTS)系统的计算能力呈指数增长。
连接节点的商用技术发展迅速,现已能实现高速节点间的无瓶颈通信。
可支持高性能集群并行计算特性的软件开发工作已取得很大进展。
1.3.3. 英特尔支持高性能计算的发展
作为引领这一浪潮的弄潮儿,英特尔致力于不断在科研、陆地与空间探索、工程和娱乐方面突破创新。长期以来,英特尔一直致力于支持高性能计算:
具备出色性价比的处理器
可支持相关性能的主板和平台
HPC的相关行业支持方案
InfiniBand
软件开发
开放源代码的操作系统
服务器管理。
集服务、行业影响和研发支持于一体的综合生态系统。
另外,英特尔?安腾?处理器可使计算机厂商将处理器的设计成本转嫁给英特尔,通过与英特尔这样一个可靠的长期供应商进行合作,在商用处理器竞争中与其他厂商站?quot;同一处理器起跑线"上。
英特尔安腾处理器可在保持极具竞争力的价格的同时,不断缩小产品差异;它能够提供更多集群方案,在高端市场创造更多竞争机会;同时,它还为目前尚未涉及这一技术计算市场的公司提供了一个入门策略。基于上述几点,安腾处理器在未来十年内必将拥有一个呈增长态势的市场环境。
二、高性能计算体系结构
2.1.高性能计算架构
高性能计算系统一般包含如下几个层次:
2.2. 高性能计算系统的应用
高性能计算系统的目的是解决大型计算问题,在现实生活中,许多科学研究和商业企业的计算方面的问题都可以通过高性能计算系统来解决。特别是在下面的领域,高性能计算系统能够帮助开发和研究人员进行建模和模拟。同时,以最快的数度计算出模拟的结果,为下一步的开发和最终结构的确定提供依据。
天气预报气象
制药企业的药理分析
科研人员的大型科学计算问题
石油勘探中对石油储量的分析
航空航天企业的设计和模拟
化工企业中对分子结构的分析计算
制造业中的CAD/CAM系统和模拟试验分析
银行和金融业对经济情况的分析
生物/生命科学中生物分子研究和基因工程计算
同时,高性能计算系统在下列的公共部门的应用也非常广泛:
国家/政府机构
国家实验室
高等院校
2.3. 通讯库和集群控制系统
我们知道,高性能计算系统实际上是一个计算机集群系统,它需要通过通讯和集群控制软件将整个系统紧密联系在一起。同时,还要负责初始化集群节点、在所需数量的节点上安装应用程序、并监视集群节点和互连的当前运行状况。
目前在市场上有多开放源代码的集群控制系统,也有许多高性能计算的用户开发自己的控制系统来适应其特殊的应用软件的需求。
2.4. 高性能计算的互联技术
高性能计算的互联技术在整个系统中非常重要,因为一般的高性能计算系统都需要讲几十台甚至几百台的计算机系统互相连接在一起,互联系统的性能有时会直接影响整个高性能计算系统的性能。
目前,一般的大型高性能计算系统使用Myrinet*系统作为主要的数据互联系统,而使用百兆或千兆以太网进行管理与控制。而在小型的高性能计算系统中,可以用直接使用千兆甚至百兆以太网作为互联系统。
2.5. 计算节点
计算节点是高性能计算系统中的单个计算机系统,是整个高性能计算系统的基础。基于英特尔架构的服务器系统是作为高性能计算节点的最佳选择。应为大多数高性能计算需要多线程同时执行,这样基于英特尔至强?处理器的计算节点可以满足需求。另外,大多数模拟类型程序需要进行大量浮点运算(FLOPS),因而节点处理器支持大量浮点运算的能力就变得至关重要。当前的英特尔处理器(如英特尔至强?处理器)的处理速度已达到每秒二十亿次浮点运算。这意味着由1000枚处理器组成的集群的处理能力可与世界上一些功能最强大的超级计算机相媲美,而成本却低得多。
数据采掘则不同。根据数据库的体系结构,这些应用对I/O的潜在要求较高。而分布式驻留内存数据库例外。在该体系结构中,集群中的每个处理器都要参与一部分数据库处理。当一个查询请求被提交给数据库时,它同时被提交给集群中的所有处理器。由于所有处理器都只需处理一小部分数据库,因而解决查询的速度要比在传统体系结构中快得多。
三、设计高性能计算系统
设计一个高性能计算系统是一件复杂的系统工程,涉及从软件到硬件的各个层面,而且每一个环节都相互关联。因此,设计和构建一个高性能计算系统应该使用系统的设计方法,按照一定的步骤来确定整个系统中的各个部分。
这一部分,我们按照系统的设计方法来对高性能计算的各个环节的设计和设备选型给出相应的建议。
3.1. 判断应用的特性
任何高性能计算系统的唯一δ芫褪窃诵薪饩鱿喙匚侍獾挠τ茫范ㄓτ美嘈褪巧杓埔桓龈咝阅芗扑阆低车牡谝桓霾街琛6杂诩扑憬诘恪⒒チ际跻约凹嚎刂葡低澈筒僮飨低车难≡穸计鸬骄龆ㄐ缘淖饔谩?/font>
对于一个高性能计算的应用,我们可以从如下的几个方面来确定其类型:
3.1.1. 应用的粒度
由于高性能计算的应用需要在多个计算节点上同时运行,则在各个节点计算的同时,还需要相互间的通讯。所谓应用的粒度,是指在一个高性能计算应用中计算所花的时间与通讯所花的时间之比。这是高性能计算应用的一个重要的特征之一。
很显然,不同的应用其粒度也不一样。例如一个生成动画电影的高性能计算应用,用于每幅画面可以由任何一个计算检点独立计算生成,节点间的通讯量非常少,因此,这是一个粒度非常大的应用。反之,对于一个进行汽车模拟碰撞试验的高性能计算的应用,由于在每个节点上计算的任何部件的运动,都会对其它的部件的状态有影响,因而节点间的相互通讯会非常多,这类应用就是小粒度的应用。
应用力度的大小将直接影响对计算节点和互联设备的选择,从而影响对整个项目的投资。一般来讲,粒度大的应用可以使用相对低速互联技术(如百兆以太网),从而降低项目的费用。因而,在应用的开发和优化过程中,应该尽量加大整个应用的粒度,减少不必要的节点间相互通讯。
3.1.2. 应用的计算特性
高性能计算的应用的目的是通过计算来解决某个特定的问题,但不同的应用所需要的计算特性也不一样,一般的高性能计算系统应用的计算特性主要分为入下三种类型:
" 多媒体运算
主要使用整型和双精度运算。例如用于图形图像处理和三维图像生成的高性能计算系统就属于多媒体运算系统。在这种情况下,计算节点的多媒体计算功能非常重要。比如英特尔至强处理器所带的SSE和SSE2指令就非常适合这种应用。
" 科学计算
主要使用浮点运算功能,这也是目前高性能计算系统的最主要应用领域。像天气预报和石油勘探等高性能计算系统都属于这一类。
" 数据库应用
主要使用逻辑计算和I/O操作。现在的数据库集群系统和网格数据库系统就属于这类应用。它需要计算节点有很强的I/O处理能力,同时,整个高性能计算系统也应该具有足够的外接存储空间。
在设计高性能计算系统的过程中,根据不同的计算类型来确定相应的计算节点和系统配置,从而使系统可以满足应用的需求同时达到最佳的系统性价比。
3.1.3. 应用的时效性
一个大型问题之所以需要用高性能计算系统来解决,可能主要是因为如下两种情况:一是因为问题无法在单个节点上计算完成;另一个是因为在一个节点上无法在规定的时间内完成。这里就关系到应用的时效性了。
一般来讲,应用的时效性就是指一个高性能计算的应用需要在多长的时间内计算完成。它是确定高性能计算系统规模的重要参数之一。
我们知道,天气预报系统的计算就是一个时效性很强的高性能计算应用,因为在得到测量的数据后,我们必须在最快的时间内计算出相应的结果,以便相关人员及时发出当天的天气预报。
对于一个时效性很强的应用,在设计高性能计算系统时,一定要以满足应用的计算速度为第一目标,一定要使高性能计算系统在规定的时间内完成计算。否则,该系统就没有意义。
而对于一个时效性不强的应用,可以考虑通过延长计算时间来减少节点和互联系统的配置,但也要考虑到可以容忍的时间限度和系统的可靠性等因素。特别是随着时间的延长,整个系统中某个节点出现故障的概率会增加。
3.2. 确定系统规模
确定高性能计算系统的规模是一个复杂的过程,一般来讲,主要从以下几个方面来考虑:
" 特定的目标
有些高性能计算系统在设计之初就确定了系统规模,在具体设计时,可以根据系统的配置情况来计算是否达到要求。
" 应用的要求
如上一节所讲的那样,从应用的粒度、应用的计算特点和应用对实效性的要求来确定应用的规模。
" 系统投资
从某些方面来讲,系统的投资与系统的规模成正比,也就是说系统投资决定系统规模。但为了达到最佳的投资回报比可以根据系统应用的计算特点来选择合适的计算节点和互联设备,从而在投资不变的情况下获得最佳性能。
现在,我们通常使用每秒的浮点运算次数来表示一个高性能计算系统的性能。通常,这个性能标准可以用Linpack HPC的基准测试来获得。由于在系统设计的过程中,我们根本无法测试整个系统。那么,如何来估算一个高性能计算系统的性能就显得十分重要。
从理论上讲,一个高性能的计算系统的性能在理想的状况下为系统中所有的处理器的计算能力的总和。例如一个高性能计算系统使用双路的英特尔至强处理器为节点。而单个至强处理器的Linpack值达约达到2Gflops,即每秒20亿次浮点运算。则一个有256个双路英特尔至强处理器的高性能计算系统的理论性能可以达到
256 X 2 X 2 = 1024 GFlops,也就是每秒一万亿次浮点运算。如果使用四路英特尔Itanium
2系统为计算节点,由于每个Itanium 2处理器的Linpack值达约达到3.2 Gflops,即每秒32亿次浮点运算,则在理想的情况下,80个节点就可以达到每秒一万亿次浮点运算的性能。
80 X 4 X 3.2 = 1024 GFlops
当然,以上的情况是在理想的状况下达到的。在具体实施时,需要根据互联设备的性能、应用程序的特点来集体考虑。
3.3. 硬件系统
3.3.1. 计算节点
计算节点是高性能计算系统中的单个计算机系统,是整个高性能计算系统的基础。以前,高性能计算的节点经常采用基于RISC处理器的Unix服务器。随着英特尔架构处理器性能的不断提高,越来越多的高性能计算系统使用基于英特尔架构的服务器系统是作为计算节点。由于其超强的性能和比Unix服务器低得多的价格,是整个高性能计算系统的造价大大降低,有着极高的性能价格比。
在具体选择计算节点时,还要考虑到系统的平衡性。我们知道,任何一台计算机系统都包含处理器、内存和输入/输出系统三个部分,通过芯片组将三个部分连接起来(如下图所示)。所谓系统的平衡性是指计算机系统在处理器、内存和输入/输出系统三个部分之间的通讯带宽应该大致相当。
同时,考虑到处理器和内存之间的带宽有限,一般来讲,是用双路处理器为高性能计算系统的节点时最佳的平衡点。
3.3.2. 互连方式
高性能计算系统的互联方式由很多种,在具体设计时,主要有两个因素需要考虑:延时和带宽。所谓带宽很简单,就是两个节点在进行数据通讯时,每秒钟可以传送的最大数据量;数据延时是指在高性能计算系统中,当某个节点需要向其它节点发送数据时,从其开始发送数据到目的节点开始接收数据所需要的时间。
一般来讲,互联系统的价格与延时成反比,而与带宽成正比。为了节省费用,应该针对不同的应用配置不同的互联系统。由于各种应用的需求不同,对于互连方式的延时和带宽的要求也不一样。有些高性能计算的应用需要每个节点之间非常频繁地交换数据,但每次的数据量并不很大,在设计时就需要使用低延时的互联系统,而对带宽的要求则要求不高。反之,有些应用节点之间的数据交换不是非常平凡,但每次交换的数据量非常大,则需要考虑使用高带宽的互联系统,对延时要求则不高。另外,应用的粒度可以作为选择互联系统的重要参考。大粒度的应用对互联系统的延时和带宽要求不高。这种情况性可以选择低价格的互联系统。如果应用的粒度非常小,则应该考虑使用低延时、改带宽的互联系统。
下表列出了当前比较流行的高性能计算系统的使用的互绞降难邮薄⒋砗偷ジ龆丝诘募鄹瘢?/font>
| 互连方式 |
延时(微秒) |
带宽(MB/S) |
端口价格($) |
| Quadrics |
5 |
400 双向 |
4300 |
| Myrinet
2000 (Lani 9) |
10 |
260
双向 |
1850 |
| Myrinet(Lani
7) |
18 |
140
双向 |
1400 |
| SCI
Dolphin 3D |
4
|
200
单向5x5x5 |
2000 |
| SCI
Dolphin 2D |
4 |
200
单向5x5 |
1400 |
| Giganet
|
20 |
100
双向 |
1400 |
| Ethernet
(mpich) |
135 |
10.5
双向 |
140 |
| Ethernet
(lam mpi) |
85 |
10.5
双向 |
140 |
| Ethernet
(via mpi) |
40 |
10.5
双向 |
140 |
| WinterHawk
II |
19 |
137
双向 |
不祥 |
3.4. 集群控制软件
集群控制软件是整个高性能计算系统的管理者,我们知道,高性能计算系统实际上是一个计算机集群系统,它需要通过通讯和集群控制软件将整个系统紧密联系在一起。同时,还要负责初始化集群节点、在所需数量的节点上安装应用程序、并监视集群节点和互连的当前运行状况。
目前在市场上有多开放源代码的集群控制系统,也有许多高性能计算的用户开发自己的控制系统来适应其特殊的应用软件的需求。作为集群控制软件开放源代码的主要代表,OSCAR
和 Scyld 是目前流行的系统:
3.4.1. OSCAR: Open Source Cluster Application Resource
OSCAR是构建、编制和使用 Linux 集群的一种最佳方法。它由全面集成且易于安装的软件套件组成,该软件套件专门针对高性能集群计算而设计,其中包括安装、构建、维护和使用一般尺寸Linux集群所需的一切,因此您无需下载或在集群中安装任何单独的软件包。它包括如下的元件:
" LUI:基于Linux 的无头安装应用程序
" C3:集群节点管理程序
" MPI/PVM:节点信息传送接口
" PBS:负载管理程序
" OpenSSH:安全通讯协议
3.4.2. Scyld Beowulf
Beowulf 本是美国航空行天局用于支持超级计算机的一个系统,1998年由Scyld 重新设计而成为 Scyld
Beowulf。它是一套标准的、面向复杂应用的集群操作系统,具有非常友好的开发界面。其主要功能有:
" 一次安装,到处运行
" 管理和使用如同单台计算机系统
" 支持动态加入计算节点
" 可以支持数百台计算机系统
" 自带基于Linux的操作系统
" 开放源代码。
四、英特尔架构高性能计算系统
4.1. 英特尔的高性能计算生态系统
高性能计算系统含有众多组件。实际上,这需要开发生态系统来推动HPC系统的进一步发展。英特尔一直积极致力于技术计算各个方面的研发。
4.1.1. 处理器
英特尔至强?处理器系列提供了独特解决方案,具有出色性价比,可满足各级企业计算需求。
英特尔安腾?处理器系列为高端计算带来了出色价值:通用构建模块(可选)、规模经济、可兼容显式并行指令计算(EPIC)技术、充足的寻址空间、媲美RISC的卓越性能和价值。
4.1.2. 主板和平台
除CPU构建模块之外,英特尔还提供了一系列其它平台构建模块。英特尔的平台部门是全球第三大服务器制造商。该部门负责对1路1U高密集平台到4路5U高平台进行构建和验证,并为众多OEM和非品牌集成商提供支持。
4.1.3. 互连 - InfiniBand*
InfiniBand是英特尔和另外的几家公司为计算机之间的高速通信而专门设立的新的技术。由于它有很高的带宽和很低的延时,是新一代高性能计算互连系统的最佳选择。其特点如下:
针对计算机间有效通信进行了专门优化
非常适用于多计算机环境(如互联网数据中心和集群)中的共享I/O设备
其结构针对互联网数据中心标准和可扩展性要求进行了专门优化 4.1.4. 软件和优化工具
KAI是并行软件设计工具及编译器技术开发领域的全球领先厂商。KAI已并入英特尔公司旗下,现仍位于伊利诺斯州尚佩恩-HPC的实际测试基地,与NCSA(美国国家超级计算应用中心)相毗邻。通过收购KAI,英特尔能够在英特尔体系结构上全面整合平台、处理器、网络、软件工具和中间件、编译器以及服务等,并对其进行优化。我们能够提供众多产品以及高性能兼容工具和具有各项授权的英特尔重要客户支持,以帮助开发商更轻松地开发可移植性并行应用。
英特尔提供的Fortran和C++编译器针对英特尔奔腾?4处理器和英特尔安腾处理器进行了专门优化。英特尔编译器支持最新的体系结构增强特性,如SSE2、超线程和英特尔NetBurst?微体系结构等。此外,编译器还具有先进的优化特性:外形优化、程序间优化和整体程序优化。英特尔编译器已在Windows和Linux操作环境中进行了测试和验证。英特尔Vtune?性能分析器有助于提高用户的工作效率。它可识别热点并提出代码改进意见,从而有助于提高代码性能和缩短代码实施时间。
英特尔运算内核库(Math Kernel Library)是一个包括线性代数、快速傅里叶变换(Fourier
transforms)和矢量超越函数(vector transcendental functions)在内的软件库,可用于需要在英特尔平台上获得高性能的工程设计、科学和金融应用。英特尔MKL针对最新英特尔处理器进行了专门优化,并可与Windows和Linux环境进行兼容。其中包括Microsoft
Windows 95、Windows 98、Windows NT*、Windows 2000和Windows Millennium
Edition。Linux支持包括带有2.x内核的Linux发行版。
OpenMP应用编程接口(API)支持各种体系结构(包括Unix*平台和Windows NT平台)上的C/C++及Fortran中的多平台共享内存并行程序设计。该规范是由多家主要计算机软硬件厂商联合定义,具有可移植性和可扩展性。它为共享内存并行程序设计员提供了一个简单灵活的接口,来为从台式机到超级计算机的各类平台开发并行应用。
4.2. 典型的英特尔高性能计算系统配置
下面我们简单介绍基于英特尔架构的高性能计算系统的两种典型的系统配置,这些配置仅仅供参考。在具设计时应该根据项目的实际情况灵活考虑。
4.1.1. 中小型HPC系统配置
1. 系统目标:
目标为理论计算值大于每秒1000亿次浮点运算。
2. 计算节点:
采用基于双路英特尔至强处理器的服务器平台。共32台。
由于系统要求达到1000亿次浮点运算,从理论上讲,每个英特尔至强处理器(>2.0GHz)的浮点运算指标为20亿次,50个至强处理器可以满足要求。但考虑到其他因素对系统性能的影响,建议采用32台双路英特尔至强服务器。
3. 互联系统
由于系统的节点数不是非常多,而且处理器的配置从理论上大于系统需求。因此可以采用相对便宜的千兆以太网来作为互联设备。
4.1.1. 大型HPC系统配置
1. 系统目标:
目标为理论计算值大于每秒1万亿次浮点运算。
2. 计算节点:
采用基于四路英特尔Itanium 2处理器的服务器平台。共80台。
由于系统要求达到1万亿次浮点运算,从理论上讲,每个英特尔至强处理器(1.0GHz)的浮点运算指标为32亿次,320个至强处理器可以满足要求。
3. 互联系统
由于系统的节点数非常多,而且每个节点的处理能力非常高。作为大型高性能计算系统,应该采用高带宽、低延时的互联系统。建议使用Myrinet互联系统。
|