當前位置: 華文問答 > 數碼

理論上一個超級電腦的 CPU 數量有限制嗎?

2012-05-01數碼

同意 @太陽 的回答,只是因為比較簡短,我還是多說幾句吧~

此回答作為@余天升 的補充,僅僅就軟件部份展開。但是僅討論硬件實作的話,

@羅淇文

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

  • 首先這個問題讓我想起了一句話:「 你可以讓1個人用60秒挖一個2米深的坑,但是沒有辦法讓60個人用1秒挖一個2米深的坑。

  • 但是如果我們將這句話再改一下: 「 你可以讓1個人用60秒打掃一個60平方米的空地 ,同時也可以讓60個人用1秒 打掃一個60平方米的空地
  • 從第一句話可以看出計算速度與工作一樣,並不能隨電腦數量的增加而線性增加;而從第二句話可以看出,計算速度可以隨電腦數量的增加而線性增加, 對比這兩句話我們就可以看到一個事實, 就是說存在著兩種極端情況,分別是

    1. 一個計算工作每一次運算的結果如果都與下一次運算存在因果關系,就像挖坑的時候只能從上往下一步一步挖,此時多執行緒計算就像一個工人在忙活,其余工人在圍觀一樣,超級電腦也完全派不上用場。
    2. 每一個計算工作都是相互獨立的,這群工人可以每個人完成自己獨自的工作而不受他人的影響,那麽此時多執行緒計算就能完全派上用場。

    總之,超級電腦不僅存在硬件設計上的困難,在軟件設計上也需要重新編排。而其核心思想就是演算法並列化設計。最大限度地打破原演算法的次序並按照計算平台的特性合理設計演算法,保證每個CPU都能幹上活。當然這也就意味著 即便是超級電腦,其對軟件執行的加速效果實際上也是與該軟件的演算法息息相關的。 為了能夠有效利用超級電腦的計算效能,重新設計用來跑在超級電腦上的程式程式碼是必須的。在大學的圖書館,關於 平行計算 的書籍與相關資料都會有,也有一些研究所是專門從事平行計算研究的。

    而所謂的軟件就能管理幾百幾千個CPU,這樣的技術恐怕目前還不知是否有可行性。最簡單的例子就是,你所用的intel多核處理器體現的優勢僅體現在能讓你一邊看電影一邊打遊戲。但是還沒有什麽軟件或者驅動聲稱能夠打通CPU的任督二脈,讓你的電腦遊戲效能成倍提升。