同意 @太阳 的回答,只是因为比较简短,我还是多说几句吧~
此回答作为@余天升 的补充,仅仅就软件部分展开。但是仅讨论硬件实现的话,
@罗淇文的答案才是正解,我们都算「跑偏」 XD
从第一句话可以看出计算速度与工作一样,并不能随计算机数量的增加而线性增加;而从第二句话可以看出,计算速度可以随计算机数量的增加而线性增加, 对比这两句话我们就可以看到一个事实, 就是说存在着两种极端情况,分别是
-
一个计算工作每一次运算的结果如果都与下一次运算存在因果关系,就像挖坑的时候只能从上往下一步一步挖,此时多线程计算就像一个工人在忙活,其余工人在围观一样,超级计算机也完全派不上用场。
- 每一个计算工作都是相互独立的,这群工人可以每个人完成自己独自的工作而不受他人的影响,那么此时多线程计算就能完全派上用场。
总之,超级计算机不仅存在硬件设计上的困难,在软件设计上也需要重新编排。而其核心思想就是算法并行化设计。最大限度地打破原算法的次序并按照计算平台的特性合理设计算法,保证每个CPU都能干上活。当然这也就意味着 即便是超级计算机,其对软件运行的加速效果实际上也是与该软件的算法息息相关的。 为了能够有效利用超级计算机的计算性能,重新设计用来跑在超级计算机上的程序代码是必须的。在大学的图书馆,关于 并行计算 的书籍与相关资料都会有,也有一些研究所是专门从事并行计算研究的。
而所谓的软件就能管理几百几千个CPU,这样的技术恐怕目前还不知是否有可行性。最简单的例子就是,你所用的intel多核处理器体现的优势仅体现在能让你一边看电影一边打游戏。但是还没有什么软件或者驱动声称能够打通CPU的任督二脉,让你的电脑游戏性能成倍提升。