每年六月和十一月,都会有一份全球超级计算机排名榜单在众多业界人士和媒体的期盼之下轰轰烈烈登场。半年评选一次的高性能计算500强榜单上,计算速度一次又一次被刷新。人们在惊叹,计算能力似乎永无止境。但是,在这看似令人振奋的消息背后,那些惊人的速度是否可信并且具备实际意义呢?

  11月17日,最新一届高性能计算TOP500名单正式发布,继六月分一期IBM Roadrunner突破一千万亿次之后,Cray的系统也突破了这一极限,可以说HPC真正进入了千万亿次时代。

  前十名名单:

  我们还应该相信高性能计算TOP500吗?

  “跑”还是“走”

  厂商依然在卖力地宣传超级计算机有多快:用一部手提电脑花上一千年才能算出来的结果,超级计算机只要用一秒钟就能完成!没错,超级计算机的速度确实没有任何设备可以企及,一直苦于没找到可满足速度要求的超级计算机的用户们,千万亿次每秒的速度――是不是听起来都如此美好?但也许事情并非如此。

  目前,已经有一些冷静的业界人士在探讨,这样的超级计算机的实际意义有多大。

  美国国家大气研究中心(NCAR)超级计算机研究主任Richard Loft就指出,在他们的海洋和气候模型中,Roadrunner在实际操作中能发挥出的速度只是其峰值速度的2%高一点――在每秒20万亿次到30万亿次之间。在实际运行中,Roadrunner并没达到每秒千万亿次(petaflops)的目标,也许叫它“Roadwalker”更适合。

  Loft称:500强榜单告诉你的都是这些计算机速度的绝对峰值或最大极限,而非它们在实际科学计算当中表现出的真实速度。

  Linpack的问题

  Loft认为,500强榜单的这个缺陷是由Linpack测试基准造成的。这一基准已经沿袭了数十年之久,通过浮点运算来测试处理器的速度,比如让两个很长的十进制数字相乘。但是,数学运算速度再快也不能代表机器的总体性能有多高,Linpack忽视了多个进程间的通信或内存访问应用,而这些对于高性能计算的用户来说是非常重要的。

  此外,厂商为了赢得客户都热衷于让自己排名更靠前。为了让自己的产品运行Linpack速度尽可能的更快些,厂商们都煞费苦心地调整其系统,而TOP500排行榜组织者也允许他们这么做。

  为了说明这一点,Loft举了一个他们实际运算时的例子,将一个巨大空间(比如太平洋)划分成无数个小区域,随着时间的推移模拟大气、液体的流动,并且在超级计算机里,给每一个小区域或一组区域指定一个特定的处理器。

  如果处理器的运行速度非常快当然很好,但是,当试验进行到结束近100年的气候模拟阶段时,处理器需要进行大量的内存访问,这时处理器就会变得慢得多。此外,有些应用需要处理器之间进行信息传递,这种情况下处理器速度也会相对下降。

  因此,对于实际操作中的许多应用来说,系统内部的通信网络带宽要比其单纯的浮点运算性能重要得多,这才是真实的商业应用(如在线搜索或交易处理)所迫切需要的。

  除此之外,更大的问题在于目前所有程序一般都是串行指令,很难改成统一的并行指令。因此,如果一个处理器的工作量超标了,那么所有其他访问只能在一旁等待,从而降低了机器的整体性能。 Linpack是以矩阵为最小单元,通过将每个矩阵都划成合适的大小,每个处理器都可以均衡的工作,从而得出超高整体性能的假象。

  Loft指出:如果继续把重点放在峰值浮点运算性能上,那么实际应用当中的诸多问题仍将继续困扰用户。