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