•首先這個問題讓我想起了一句話:“你可以讓1個人用60秒挖一個2米深的坑,但是沒有辦法讓60個人用1秒挖一個2米深的坑。”
•但是如果我們將這句話再改一下: “你可以讓1個人用60秒打掃一個60平方米的空地,同時也可以讓60個人用1秒打掃一個60平方米的空地 。”
從第一句話可以看出計算速度與工作一樣,并不能隨計算機數量的增加而線性增加;而從第二句話可以看出,計算速度可以隨計算機數量的增加而線性增加, 對比這兩句話我們就可以看到一個事實, 就是說存在著兩種極端情況,分別是
1.一個計算工作每一次運算的結果如果都與下一次運算存在因果關系,就像挖坑的時候只能從上往下一步一步挖,此時多線程計算就像一個工人在忙活,其余工人在圍觀一樣,超級計算機也完全派不上用場。
2.每一個計算工作都是相互獨立的,這群工人可以每個人完成自己獨自的工作而不受他人的影響,那么此時多線程計算就能完全派上用場。
總之,超級計算機不僅存在硬件設計上的困難,在軟件設計上也需要重新編排。而其核心思想就是算法并行化設計。最大限度地打破原算法的次序并按照計算平臺的特性合理設計算法,保證每個CPU都能干上活。當然這也就意味著即便是超級計算機,其對軟件運行的加速效果實際上也是與該軟件的算法息息相關的。為了能夠有效利用超級計算機的計算性能,重新設計用來跑在超級計算機上的程序代碼是必須的。在大學的圖書館,關于并行計算的書籍與相關資料都會有,也有一些研究所是專門從事并行計算研究的。
而所謂的軟件就能管理幾百幾千個CPU,這樣的技術恐怕目前還不知是否有可行性。最簡單的例子就是,你所用的intel多核處理器體現的優(yōu)勢僅體現在能讓你一邊看電影一邊打游戲。但是還沒有什么軟件或者驅動聲稱能夠打通CPU的任督二脈,讓你的電腦游戲性能成倍提升。
新聞熱點
疑難解答