在2005年IDC举办的一个HPC用户的论坛上,纽约城市大学的HPC总监Paul Muzio曾说过,一个HPC软件工程师的理想就是有一个强大的处理器能够直接访问内存。相比之下,一个计算机科学家的理想则是构建拥有成千上万颗处理器,并且有创新分布式存储结构的千万亿次计算机。
"但是对很多用户来说不幸的是,"他补充说,"计算机科学家的系统可能会比较早实现,随着技术的发展。未来的挑战是建立一种制度,使之像软件工程师希望的那样。"
时间快步向前直到五年后的今天,Paul Muzio的期望则更加明显化了。最早的一批千万亿次计算超级计算机已经开始在美国、德国以及中国等国家开始使用–超过十万颗处理器,混合了不同的处理器架构,同时还使用了分布式的内存体系结构。
HPC应用程序在哪里使用这些无限潜力的能量呢?到目前为止,美国橡树岭国家实验室的Cray美洲豹超级计算机有三个实际的应用程序打破了一些记录。稍大的数据量已经超过了百万亿次,大部分都在Cray和IBM的机器上完成,一些用于科研的代码已经为了千万亿次在做优化。所有的这些应用程序已经足够并行化–并且映射到更高并行化的计算机上。
但是,大量的HPC应用程序最早被设计用来运行–你知道的–每个处理器都有独立的通道互连内存。大部分代码并不是为未来而设计,在现在看来多半扩展性不够。IDC的一个调查显示,超过一半(56%)的代码不能扩展到八路以上,大概只有6%的程序能够扩展到128个处理器以上,在今天这种超大型机器里面,128简直可以用微小来形容,更不用说他们还有更加宏伟的目标了。
这里仍然有一些现有的多核HPC系统存在的问题:
首先,为了控制能耗和散热,无论是桌面的多核系统还是超级计算机都在降低主频,你会看到更低的主频在取代以往3–4GHz主频的处理器。现在的问题是,尤其是对于一般利用一个或者几个核心的程序来说是个挑战。在另外一个IDC的调查中,12%的HPC站点认为他们的程序在新的系统上反而运行更慢。超过半数的受访者表示,他们希望在未来12个月内会对系统进行改造和优化。
第二,2009年基于英特尔或者AMD标准X86处理器的集群占据了市场上三分之二的的营收。但是,当标准X86处理器从一个变为两个,或者从两个变成四个,它们的峰值性能却没有相应增加带宽,尽管这种情况已经有所改进。这种较差的"字节直到率"降低了效率,从而影响了I/O性能,而使得核心更加繁忙。通过增加一个PCI加速器或许能够平衡这种问题。但是,这实际上是从软件和硬件两个角度来持续进行改进。
最后,大规模硬件并行计算系统的核心,飞涨的尺寸已经领先于编程范例,而选择通用图形处理器则又增加了编程的挑战。