如果超级计算机继续以当前的速度增长,我们将在2020年看到第一台百亿亿次级计算机。
然而,田纳西大学诺克斯维尔分校的研究员Jack Dongarra表示,这样的大型计算机系统架构师将面临一系列关键问题的挑战。
在达到百亿亿次级(exascale)性能前我们可能还有很长一段路要走。一个exascale机器将有一百亿亿次FLOPS(每秒浮点运算次数)的能力,即使是今天最快的超级计算机,也只有exascale计算机不到20%的计算机能力。
新的高度
在上周公布的最新一期的超级计算机Top500名单中,最快的计算机是美国橡树岭国家实验室的Titan系统,能够达到17.59petaflops。
但每年统计两次的500强名单显示了超级计算的速度正在快速增长,从名单上看,超级计算机似乎每十年左右就增加十倍的功率。1996年,500强名单上出现了第一个teraflop级计算机,2008年首个petaflop级计算机出现在名单中。根据这个进度,可以推断出exascale级计算可能在2020年实现。
高性能计算(HPC)社区已经把exascale计算看做一个重要的里程碑。英特尔已经创建了一个系列的大型多核处理器,称为Phi,英特尔希望Phi将来可以作为exascale计算机的基础。
Dongarra勾勒出了exascale机器的一些特点:这样的机器的节点数量可能会介于10万和100万之间,将能够在任何给定的时间执行多达十亿个线程。单个节点的性能应该介于1.5和15teraflops之间,并且每秒将需要有200到400千兆字节的吞吐量。
Dongarra表示,超级计算机制造商将不得不构建他们的机器,使其成本和能耗并不会和性能一样以线性方式增加。
软件挑战
除了硬件上的挑战,exascale级超级计算机的设计师也必须解决软件问题。今天的机器在许多不同的节点间传递任务,但这种方法随着节点数量的增加需要进行精简。
Dongarra 表示:“目前我们的并行处理模型是一个Fork/Join模型,但是你不能在exascale级别上这么做。我们必须改变我们的模型,我们必须更加同步。”同时,算法需要开发,以减少整体节点之间的通信量。
另外,还必须考虑其他因素。软件必须配备内置的例程以进行优化。“我们不能依靠用户正确的设置让软件在接近峰值性能的地方运行,” Dongarra说。故障恢复将是另一个重要功能,重复性的结果或复杂的计算在运行时将会不止一次的产生完全相同的答案。
重现性可能看起来像一台计算机的明显特征。但事实上,它对多节点超级计算机上的庞大计算来说可能是一个挑战。
“从数值方法的角度来看,很难保证操作可重复性,” Dongarra说,“主要的问题是对一个并行的总结数据做简化。如果我不能保证这些聚在一起的数字的顺序,我就会有不同的舍入误差。这样微小的差异被放大到某种程度,可能导致答案灾难性的分歧。”
Dongarra 表示:“我们必须想出一个场景,在该场景中,我们可以保证这些操作的顺序完成,所以我们可以保证我们能得到相同的结果。”