当前位置: 华文问答 > 数码

理论上一个超级计算机的 CPU 数量有限制吗?

2012-05-01数码

同意 @太阳 的回答,只是因为比较简短,我还是多说几句吧~

此回答作为@余天升 的补充,仅仅就软件部分展开。但是仅讨论硬件实现的话,

@罗淇文

的答案才是正解,我们都算「跑偏」 XD

  • 首先这个问题让我想起了一句话:「 你可以让1个人用60秒挖一个2米深的坑,但是没有办法让60个人用1秒挖一个2米深的坑。

  • 但是如果我们将这句话再改一下: 「 你可以让1个人用60秒打扫一个60平方米的空地 ,同时也可以让60个人用1秒 打扫一个60平方米的空地
  • 从第一句话可以看出计算速度与工作一样,并不能随计算机数量的增加而线性增加;而从第二句话可以看出,计算速度可以随计算机数量的增加而线性增加, 对比这两句话我们就可以看到一个事实, 就是说存在着两种极端情况,分别是

    1. 一个计算工作每一次运算的结果如果都与下一次运算存在因果关系,就像挖坑的时候只能从上往下一步一步挖,此时多线程计算就像一个工人在忙活,其余工人在围观一样,超级计算机也完全派不上用场。
    2. 每一个计算工作都是相互独立的,这群工人可以每个人完成自己独自的工作而不受他人的影响,那么此时多线程计算就能完全派上用场。

    总之,超级计算机不仅存在硬件设计上的困难,在软件设计上也需要重新编排。而其核心思想就是算法并行化设计。最大限度地打破原算法的次序并按照计算平台的特性合理设计算法,保证每个CPU都能干上活。当然这也就意味着 即便是超级计算机,其对软件运行的加速效果实际上也是与该软件的算法息息相关的。 为了能够有效利用超级计算机的计算性能,重新设计用来跑在超级计算机上的程序代码是必须的。在大学的图书馆,关于 并行计算 的书籍与相关资料都会有,也有一些研究所是专门从事并行计算研究的。

    而所谓的软件就能管理几百几千个CPU,这样的技术恐怕目前还不知是否有可行性。最简单的例子就是,你所用的intel多核处理器体现的优势仅体现在能让你一边看电影一边打游戏。但是还没有什么软件或者驱动声称能够打通CPU的任督二脉,让你的电脑游戏性能成倍提升。