作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!
高性能计算机是用网络将多台计算机连接在一起,并构成一个统一的系统,从而拥有远超个人电脑的计算能力。这样利用网络,让计算机合作工作的并行系统又称为集群(cluster)。服务器、分布式计算机、超级计算机都是按照集群的方式组成的。
集群
服务器是指在网络中为客户提供服务的高性能计算机。一台的服务器往往在同一时间接收到大量的客户请求,然后根据请求启动大量的任务,以回应客户请求。由于客户请求之间可能差异很大,所以相应的任务也有大有小。服务器要均衡负载,合理的分配资源给不同的任务。当我们建立一个网站时,我们通常让网站运行在一台服务器,从而让网站可以应对大访问量。
超级计算机是让整个集群为同一个任务工作,以更快的速度来解决一个复杂问题。与服务器不同,一台超级计算机上往往运行一个任务 (或者有限的几个任务),所有的计算机资源都被倾注到同一个任务中。为了解决同一个问题,集群的不同计算机之间要有很好的沟通能力。超级计算机适合一些需要并行运算的任务,比如航空航天器设计、核实验、天气预报、星云模拟等,以便用数值方法来获得模拟数据,所以超级计算机大多位于研究机构和大学中。然而,超级计算机在人工智能领域的应用更能攫取公众注意力。无论是《2001太空漫游》中的HAL,还是打败国际象棋冠军卡斯帕罗夫的“深蓝” (Deep Blue)电脑,超级计算机深刻的影响了流行文化。计算机被看作拥有思维潜能的机器,而超级计算机作为计算机的领军,更有可能最早以机器身份挑战人类所自豪的理性思维能力。下图是不断被打破的超级计算机纪录,中国的天河曾经于2010年登顶:
不断被打破的超级计算机纪录 (FLOPS:FLoating Operation Per Second, 每秒浮点计算次数)
分布式计算机是随着信息时代而蓬勃发展起来的。与上面两种“真实”集群不同,分布式计算机是构建在互联网之上的一个"虚拟"集群。个人电脑的配置远高于用户的实际需要,而且用户也很难满负荷的使用个人电脑,所以日常使用的个人电脑上总会有富余的计算能力。随着互联网的发达,个人电脑的富余计算能力成为一座值得开挖的宝藏。分布式计算就是用互联网来连接个人电脑,构成一个集群。这个集群可以作为一个系统工作,以解决一些复杂问题。比如Climateprediction.net,参与者可以下载安装一个小程序,这个小程序会在后台监听。当参与者个人电脑上有空闲资源时(比如长时间不用进入屏保),这些资源就被用来执行一些计算任务,从而为气候变化预测作出贡献。
历史
高性能计算机是计算机和网络的结合,它的发展也与网络的发展同步。如果说互联网从外部将分立的计算机连接在一起,那么集群则是将网络内部化,让网络成为系统内部不同计算机的沟通桥梁。首先创造性的发明集群的是Seymour Cray。
Seymour Cray
Seymour Cray是一位美国工程师。在1960年代,能够进行高性能运算的只能是经过特别设计的、昂贵的大型机。这些大型机需要复杂的回路以实现高运算频率,所以其设计和生产周期都很长。Seymour Cray出于工程师的直觉,认为并行的是提高计算机性能的有效方式。所以在CDC公司工作期间,他使用廉价的方式获得大型机相似的运算能力。他将多个普通的处理器连接起来,并使得这些处理器协同工作。这就是高性能计算机的原型。很快,Seymour Cray的新架构方式被IBM、HP等公司学习,高性能计算机开始迅速推广。政府和科研部门采购这种新型的高性能计算机,以取代原有的大型机。高性能计算机为登月计划等大型科研项目做出了不可磨灭的贡献。
然而进入八十年代,随着芯片的不断降价以及CPU频率的不断提高,个人计算机如同超新星一样爆发。个人计算机的计算能力逐渐可以媲美小型机甚至中型机。苹果、Intel、微软等公司借PC的东风成为PC时代新的王者。随着政府开始在各个部门配置PC以取代高性能计算机,高性能计算机的市场遭到PC的不断蚕食。高性能计算机只能退守复杂运算和公司服务器市场。但很快,互联网为高性能计算机提供了新的领地。互联网上广泛采用的服务器-客户模式需要一方计算机充当服务器。然而,服务器往往要应对海量的网络请求,家庭使用的PC很难应付如此众多的网络请求,必须要依赖基于集群的服务器。网络的蓬勃发展,特别是2000年附近的网络泡沫,成就了诸如Sun这样的服务器生产商。
如今,IT业向云计算发起冲击。诸如Google、Apple和Amazon这样的公司纷纷建立巨大的数据中心,以互联网为基础,向高性能计算领域迅猛扩张。在个人计算机领域,随着CPU主频靠近量子瓶颈,摩尔定律接近失效。个人计算机正在从单核向多核过渡。并行式的高性能计算机很可能在不久的将来成为新的家庭必备。
硬件与软件
从硬件方面,一个高性能计算机中可以包含多个机箱,每个机箱内都是一个主机。主机与普通PC并没有太大不同,都由主板、CPU、内存、网卡组成 。机箱常常是非常紧凑的躺在一个架子上。由于高性能计算机有很强的通信需求,所以一个主机上往往有不止一个网卡。
服务器
高性能计算机的主机之间的连接方式可能很复杂。根据不同的需要,高性能计算机的内部网络拓扑结构也会不同。一般来说,集群中主机越多,网络的拓扑越复杂。比如下图,是对称的主机连接方式,这些连接方式都适用于科学运算相关的场合:
经典的Beowulf连接则由一台主机统一将来自Internet的请求分配给各个node,适合于网络相关的应用:
Beowulf cluster
从软件上说,现在的集群大多采用UNIX/Linux系统 (Windows NT在服务器领域也有市场)。此外,集群至少需要:
- 一套中心管理软件
- 构建于TCP/IP协议上的通信软件,比如MPI和PVM
- 任务管理软件,将任务分配给不同的主机,并均衡不同主机的负载
- 负责监视和处理异常情况的软件
冷却系统
散热是高性能计算机最值得头痛的地方,所以值得单列出来。一个高性能计算机中心的主要开销往往是空调电费,而不是硬件费用。对于个人PC来说,每个机箱中一般只有一套芯片,所以使用一套风扇就可以将热气吹出机箱。但高性能计算机需要将多个CPU和大量内存集成在一个机箱中,再将机箱密集放在支架上,所以热源密度大大提高。过高的温度会迅速烧坏芯片,也会限制高性能计算机的性能。高性能计算机设计的冷却系统必须非常强力。通常,配置风冷的机房都要额外安装空调,以便维持较低的室温。下图是日本开发的一款“廉价”超级计算机,用的是非常强力的……风扇。
“原始”风冷
尽管风冷系统成本低,但由于空气热容量很小,所以风冷系统的效率低下。尽管可以将空调的冷气直接吹过服务器以达到更高效率,但冷气的成本高且不环保。水冷系统是风冷的另一个选择。旧式的水冷系统是让水管流过机箱侧壁,以降低整个服务器机箱的温度。通常,流入的水大概有十几度的温度,而流出水可能二十几度,进出有七八度的温差。由于水有很高的热容,所以可以有效的移除机箱内的热量。
支架侧壁的水冷系统
旧的水冷系统冷却整个机箱的温度,但热量主要是由CPU和内存等芯片产生。新一代的水冷系统将水管直接贴近芯片,以更精确的降温。下图所示的IBM水冷系统包括黄铜色的管道和包裹在内存和芯片周围的散热片。这样的散热系统最大的隐患在于漏水。由于水冷和芯片过度“亲密”,一旦水管漏水,电子器件将统统报废。所以,这样的水冷系统有很精密的设计。比如管道内部有特殊的涂层,一旦外面的金属管出现裂缝,涂层材料会膨胀而临时堵上缺口。水冷系统所用的水会经过精心过滤,以去除杂志和氧化成分。另外,在重要接口处和机房内,还有自动调节的控湿系统,以防止水冷系统生锈。这样的水冷系统刚刚问世不久,但其高效率已经得到业内人士的认可。(这样一套水冷系统价格不菲)
新式水冷系统、
数据中心
如果说服务器是对运算能力的第一次集成,那么数据中心就是对运算能力的进一步集成。数据中心是集中存放和运行服务器的地方。随着诸如苹果、Google这样的明星网络公司出现,以及云计算和大数据概念的风起云涌,其幕后的数据中心开始走入公共视野。数据中心要求有优秀的架构设计,网路设计,电源设计和空间设计,以容纳海量处理器,并保持整个数据中心的稳定运行,同时随时准备好应对断电等意外。这些数据中心每天需要应付十亿次量级的访问请求,而这些访问请求就是诸如Google和Amazon这样的网络公司的命脉。如果google.com域名出现404错误(中国之外的地方),Google的股价恐怕就要跳水。在稳定的基础上,效率和成本成为越来越重要的考虑。许多数据中心所用的硬件都是来自回收站的二手货 (据说Google会从回收站拉回成卡车的废旧处理器)。通过负载均衡、数据库管理等软件手段点石成金,旧硬件的性能被充分开发。“高性能软件+低成本硬件”的解决方案正在各大网络公司占据主导地位。另一方面,网络公司开始尝试跳过诸如IBM和Sun这样的服务器制造商,直接和Intel合作获得芯片,然后自行组装服务器。
数据中心设计
数据中心有很多有意的分布在偏远的郊区。除了土地成本的原因之外,位于郊区的数据中心也不用和市区竞争用电。随着绿色数据中心概念的兴起,越来越多人开始关注数据中心可能带来的能源和环境问题。Google和苹果等大公司开始有意的将数据中心放在高纬度、高海拔的地区,以享受天然的“空调”气温。另外,数据中心也常常选择在湖泊和河流附近,就地获得冷却水。实际上,数据中心的单位电FLOPS要远超过小型的机房。
Google数据中心
量子瓶颈,并行运算与未来
CPU的加工精度正在靠近量子效应所规定的上限,摩尔定律会在此失效。计算机的主频很可能在很长一段时间内保持稳定。并行运算很可能成为下一个热点。高性能计算机向人们展示硬件上的可能性。然而软件上,人们的准备并不充分。传统的算法必须经过更改才能适应并行情境。如何优化以及标准化并行算法,还远远没有一个确定的答案。此外,云平台会将我们带往何处,也是一个大大的问号。
所以,高性能计算机还是一个远没有结束的传奇。