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