目前超級計算機的性能局限是硬體還是軟體,為什麼?

《日本經濟新聞》6 月 26 日報道稱,美日兩國政府將在新一代超級計算機的開發領域展開合作。東京大學和富士通等參加上述項目,今後將共同開發用於驅動超級計算機的操作系統 (OS),以在國際競爭中掌握主導權。在被視為國家科技實力指標的超級計算機領域,國際合作也有望擴大 [...] 新一代超級計算機將具有 100 萬億次的計算能力 [...] CPU 將增加至數十萬個以上,利用目前的超級計算機操作系統 Linux 無法驅動 [...] 與美國能源部旗下的阿爾貢國立實驗室合作開發超級計算機操作系統。而 IBM 等美國超級計算機廠商也可能參加... via 美日將合作開發超級計算機 OS 對抗 「天河 2 號」


回答這個問題必須先澄清幾個概念:

1. 性能: 如何衡量超算的性能,其實取決於你打算用超算來幹嘛?以及你真正為了達到這個目的可以利用起來的運算能力有多少?
到了超算這個級別上,基本上運算的主要目標是為了某些用途(例如模擬)大量進行浮點運算,那麼主要衡量指標就是浮點運算,神馬排序,布爾運算之類的就別拿來說事了,超算的目標一般是不會出現在什麼資料庫應用,什麼文件處理之類的事情上,那些事情,主要瓶頸在I/O,不在運算上,所以XFS這樣的事情也不要拿出來扯了。
而單純的每秒浮點運算次數這樣的無腦數值,拿出來說事的意義其實也不大。就算你每秒1億億億次的浮點運算能力又怎樣?如果這1億億億次運算之間毫無關聯,這一億億億次運算將不會產生什麼實際價值和意義。因此超算的指標除了性能還有效率也很重要。

2. 軟體/硬體:軟硬體的分界線在什麼地方?
舉個例子,大家知道,我們看視頻(例如藍光)需要有解碼的過程,一種方法我們可以通過軟體解碼,例如PC上最常用的藍光播放軟體powerDVD,其實就是一個實現並包含了一個解碼演算法的軟體。
另外一種方式,我們可以用專門的解碼晶元,例如著名的sigma 8634/8635。其實說白了就是把解碼演算法通過邏輯電路用硬體的方式做出來。
那麼如果解碼演算法本身有問題有瓶頸,你說這是硬體問題還是軟體問題?
為了簡化這個討論,我設定一個前提,那就所謂的硬體問題,就是最終落在物理性能這個底層領域的問題,例如什麼電信號轉化極限啊,摩爾定律極限等等。演算法問題就同意歸到軟體這個概念範疇了。

3. 超算:超算不是指單CPU/GPU極限,所以討論什麼CPU製程,什麼64位定址空間什麼,什麼CPU頻率極限,沒啥意義。現在超算都是靠成千上萬的CPU/GPU堆出來的,單unit的極限對於整體瓶頸影響,在目前的階段來說,不是根本問題。

4. 理論局限/實際局限:一般來說大多領域,理論都是先於現實實際的,超算也不例外。考慮到這個領域是一個實踐性非常強的領域,所以理論局限意義不大,目前超算領域,理論局限和實際局限中間的空間還有太大的潛力沒有挖掘出來。例如前面有人說什麼電通轉光通改變局限之類的意義不大。電通的潛力還有大量沒有被挖掘出來呢。
都知道光通速度快,但是現在20~30G帶寬的銅纜通信早就研發出來了,其應用潛力和應用領域都還沒有被挖掘出來呢。

基於前面的概念基礎,其實可以簡單給出答案,超算現在的瓶頸主要就在並行處理上,局限在演算法和模型,可以歸入軟體問題。如新聞中所說,一個專門的超算OS可能是解決問題可能途徑之一。

只要解決的並行處理問題,運算能力可以靠大量CPU/GPU堆出來。遺憾的是目前任何一種有效可行的模型和演算法,都有其適應適用的數量上限和效率瓶頸。不斷得突破這些模型及演算法,就等於突破運算能力上限和效率瓶頸,就意味著性能可以進一步提高:只要你的CPU/GPU夠多。

在現實操作的的層面上,這些個演算法和模型的瓶頸很多時候有可能落在硬體環節上,例如供電,時鐘等。大家可能還注意到,我使用了CPU/GPU這樣的字眼,而不是單純使用CPU這樣的字眼。

理論上,從現有市面上的成熟產品來說,GPU的浮點運算能力是強項,是專門為了浮點運算而設計的(顯卡刷圖形,其實就是瘋狂得進行浮點運算,然後得出一個2維點陣的最後顯示結果),而CPU更多得是為了處理指令而設計的。
遺憾的是,市面上的GPU幾乎不會針對並行計算有什麼專門的設計,所以目前超算基本還是CPU唱主角。但是已經有不少超算設計方案是CPU/GPU混合模式了。當然也有純GPU方案的「中算」(相對於超算的簡單說法)在商業領域應用了。前不久剛剛見過一個,一個機箱里插了20多塊頂級顯卡,蔚為壯觀(是一個專門做外形設計渲染和模擬的雲服務項目)。

為了超算專門設計生產為了並行計算而生的GPU?目前貌似類似產品還很少,但是少量此類產品已經開始問世並嶄露頭角,例如AMD(ATI)的FireStream,NVIDIA Tesla GPU Server,我上面所提到的,一個機箱里插了20多塊頂級顯卡,使用的就是NVIDIA Tesla GPU Server。(在此感謝@張永輝 指正)

歸根結底,超算性能是一個和性價比緊密相關的事情。

性能比人家快了40%?這有多大意義呢?它的意義在於,別人花100秒算出來的事情,你花了60秒就算出來了,並不是說你算得出來,別人算不出來的差別。你的意義就在於搶出了這40秒。這40秒有多大的價值,你的超算就有多大的價值。

在很多時候,其實這40秒並沒有那麼大的價值。如果還需要為了這40%付出太大的代價,可能就不是一個好的選擇。

況且,算得更快,可能還不是解決方法的最佳途徑,我們還有別的思路解決問題。

講個故事,和運算性能有關。

有個NB的軟體叫CATIA,專業做設計的童鞋可能知道,這個軟體是專門做設計用的,大到鳥巢,飛機小到什麼汽車,高端工藝品,都可以用這個工具進行設計。

這個軟體很NB很專業,在你設計完了以後,它可以直接幫助你算應力承載啊,加工難度啊什麼的一堆的工藝和性能(這些個名詞我說的可能不專業啊,不要噴啊)。

但是渲染外形,做這些的計算,需要耗費大量的運算。專業級的工作站都要算好長時間。以前他們設計師的苦惱就是設計一個方案完成以後,要等它算好幾天才能出個結果,才知道這個設計方案的最終效果如何,改一改就要重算,就要再等幾天看結果。工作效率很低。

當然,解決這個問題,可以用更NB,速度更快的機器(性能的價值貌似體現出來的吧?),例如上超算。但是你擱台超算在那,是可以幾分鐘出結果,但是你設計成百幾千上萬個優秀產品出來都未必能把這個超算的錢掙回來,所以沒有現實意義。

最後這個問題的解決方案是這樣的,有一個加拿大還是哪的天才小子,做了一個近似演算法。這個演算法很簡陋,必定會額外產生千分之幾到百分之幾的誤差,比起CATIA里的演算法來說差太多,同時也不能用真正用於生成的生產用設計稿以及設計論證,完全達不到要求。
但是它勝在速度快,普通PC機幾分鐘就出結果。後來被廣泛用於設計稿的初審和初算。事實上對於設計師來說,在大量變更和改版的設計稿中,最終要生成生產圖紙的是極少數,大多時候設計師們只是要看看大概齊這方案和設計行不行,用這哥們的東西足夠了。最終幾個重點的設計的終稿再用CATIA算好了。前面大量的運算時間都被節省了下來,工作效率大大提高。

這哥們後來靠賣這個演算法的軟體發了大財。

所以,有時候,即便我們看起來運算性能處在關鍵節點上的事情,其實都還有其他的解決途徑。


因此超算的性能局限這個事情,就現階段來說,從根本的原因和意義上來說,利益和資源的驅動是決定性的,這也是中國在這方面能走在前列的原因,因為相比之下,中國政府推動力夠強。


假如說,2020年,人類要是不研製出達到某個NB運算能力的超算來,全人類就會滅亡。你去試試看?
無需什麼基礎科學突破,無需什麼光通,量子通技術引入,無需什麼CPU半導體主頻和製程的突破,無需生物計算機之類的NB玩意,就目前這點科技,幾年內人類資源重點投入,足夠製造出比現在超算NB許多許多倍的東東來,你信不信?


都有吧。

硬體上,超級計算機一般有一大堆處理器一起共享一大堆內存和外存,這個尺度的匯流排很難搭建。

軟體上,這麼多處理器和內存在系統上的的合理調度也會是問題。Linux的具體實現上也有自己的軟體上限,超過了那個上限,有些部分就需要修改。調度原理可能還是基本一樣的,但內核代碼改起來可能不是那麼容易。

當然,這麼多處理器怎麼才能讓計算軟體合理使用也不那麼容易。

其實,更難的是在於怎麼省錢,要不要省錢,要省多少錢,包括硬體採購成本,軟體開發成本,耗電量和維護成本。不惜血本也要拼一個世界第一的思路肯定是站不久的。


這個我不是專業人員,我不知道現在的發展情況。但是就我個人了解而言,目前局限主要在硬體上,想要突破硬體的物理極限是很困難的。不過量子計算機給了我們一個很好的答案,建議查看量子計算機相關的資料。未來一台量子計算機的計算機能力相當於想在全世界所有計算機的計算能力總和。當然軟體演算法的優化也是不可忽視的。但是相比於硬體的革新,硬體給人們帶來速度的快感是無與倫比的。我個人覺得還是等待硬體的突破,軟體是可以人為優化的。


硬體為主.
我們老師說過, 目前集成電路差不多到了電信號轉換速度的極限. 主要是因為電信號帶寬有限, 無論是傳輸速度還是運算速度的潛能都差不多被榨乾了. 另外電子元件對於電信號存在遲滯時間, 或者經不起頻率太高的信號震蕩.
要突破這個瓶頸唯有依靠光信號或者量子通信. 量子通信還在實驗室里, 光通信目前技術和成本上已經完全可以民用, 只不過改造電路(以及光路)的成本太高, 短時間內無法過渡過來, 而且目前電子設備太多, 發射和接收模塊都需要加裝光電轉換器也不太現實.
另外一個就是尺寸上的極限. 我記不清有一個什麼尺寸, 一旦電路在空間的尺度小於這個尺寸很多電路原理都將失效, 因此現在的技術只能把硬體向極限尺寸靠近, 終將遇到瓶頸. 摩爾定律在5年10年內或許繼續有效, 但遲早有一天不再適用.
另外說到光信號, 學過光通信的人都知道, 不管是轉換器件還是傳輸器件, 尺寸不可能小于波長量級. 也就是說相同體積的設備要有更高的運算速度只能增加集成化的程度, 想要集成度更高唯有往小去做, 那麼只能縮短波長, 所以只能提升光信號的頻率. 但是頻率是不可能無限提高上去的, 因此即使是光通信光計算也必然存在極限.
剩下的只能指望量子通信了...
----------------------------------------------------------------------------
補充一下, 廣義的極限肯定是達不到的, 因為隨著一種信號傳輸方式到達它的理論極限時必然又有一種新的技術被提出來. 只要人類智慧沒有極限計算機會有極限嗎
不過如果把極限定義為在一段時間內科學停滯不前, 那麼是有可能的. 只有新的理論被提出才可能滋生相應的技術. 而目前已經有一段時間沒有出現本質上的突破性的理論了.

答完題發現題主問的是局限, 我全部答成極限問題了...就當思維自動擴展好了


是硬體,雖然cpu很多,但是想要達到理想程度還是不夠的。
比如說人腦也可以算作計算機,裡面腦細胞就妥妥的不止上述文字那麼多。
軟體上的話,說白了還是演算法。演算法上面無非就是那些經典的演算法。這些一直沒有變過,幾十年前的演算法和現在的長的差不多。演算法要麼是用空間換時間,要麼就是用時間換空間,所以這些演算法本身被改進的可能不大,當然也可以期望一個超級演算法的出現。而硬體的話,可以從集成電路,材料上面入手,發展空間還是很大的。當然如果說靠數量的話,這樣子肯定是不可能的。

樓下的回答我不是很認同,首先你這裡說linux是驅動不了上面的計算機的。下面的超級計算機的turbo linux就是這個東西,軟體不好,換一個唄。這些東西人們都可以寫出來的。軟體用處就是讓硬體更好的工作。


存儲牆


超級計算機可以理解為計算機超集(群),是對硬體運算能力的整合技術。從長遠來看,計算機的極限還遠遠未能達到,當然這得意於硬體發展水平和人們對硬體的應用能力也在不斷提高。一反面我們未能觸摸到極限,另一方面新的思想會更替老的思想,所以基於這樣的事實討論你說的問題是得不到答案的。硬體和軟體,相輔相成。


軟體和硬體都有。

衡量超算性能的指標目前比較通行就是峰值,包括理論峰值和實測峰值。
理論峰值就是超算的各個計算部件(cpu和gpu)理論峰值的和,基本就是部件廠商提供的數據。
實測峰值就是通過運行並行程序測出來的值,現在通行的測試是linpack,它是個解線性方程的並行程序,它的問題規模,也就是和超算的總內存相關的,一般是是內存80%的平方根,參數設置合理的linpack會榨乾超算的所有資源,相當於烤機,一次linpack測試至少需要幾個小時,它的輸出結果就是實測峰值。當然在測試過程需要對linpack的參數進行調整,從所有結果中拿一個最優值,報到top500的委員會。
這就要求超算有足夠的穩定性,幾萬個節點至少要能滿負荷運行幾個小時,運行出一個結果,這麼大規模的機器群壞一個很正常,所以穩定性極為重要。
曾經做測試的時候,剛開始運行機器開始亮紅燈,檢查內存有問題。
實測峰值一般都小於理論峰值,占的百分比就是效率,效率高低才能反映超算真正的性能,有點象投資產出比。

實測損失的部分和哪些相關呢?軟體硬體都有關係(和沒說一樣嘛:))

硬體主要包括網路、存儲。
因為超算運行的都是並行程序,並行程序就是把一個大問題拆分成若干個小問題,每個小問題交給一個cpu核來計算,但是這些小問題肯能會相互依賴,所以cpu核之間就需要交換數據,就需要通信,原本在一台機器里時通過匯流排基本上是實時的,但是現在CPU核不在同一台機器上就需要通過網路,所以網路要有足夠的帶寬和低的延遲,現在主流的基礎網路是infiniband FDR,帶寬是56Gbps。當然為了把幾萬個節點連接起來不能簡單用交換機堆疊,就類似於設計一個一萬個人訪問的和設計一千萬人訪問的網站是完全不同的,實際上好的超算核心技術都在這裡。

另外存儲也是,幾萬個CPU核同時訪問磁碟讀寫數據,現有的存儲都滿足不了要求,必須用到並行文件系統,例如lustre。
上面這些都是為了減少並行的損耗,損耗越小你的效率就越高,性能就越好。

硬體完了就是軟體,並行軟體的設計非常重要,就像我們買了一個xbox,當然希望有能發揮gpu性能的華麗遊戲。並行軟體也是如此,這裡面任務拆分和通信設計都非常講究也極具挑戰性,比如一個程序用2個CPU運行,通信開銷比較小,但是如果是1000個cpu來運行就是完全不同的問題了,通信開銷就不容忽視了。
現在很多超算都會有根據它的結構專門優化的軟體。所以現在學界認為單純的linpack是不能全面反映超算的性能,畢竟超算在用的時候都不會來跑這個。

現在流行的CPU+Gpu或者類似的混合架構(天河2是mic)在設計軟體時就更加複雜了。問題如何拆分,哪些在cpu算,哪些在gpu算,兩者數據如何交換都是問題。

講到這裡,超算的性能和傳統的機器是類似的,我們需要有好的硬體和能充分發揮性能的軟體,這些都存在瓶頸。

我不覺得半導體技術是瓶頸,超算本來就不拘泥於單個而在於集合性能。個人覺得網路問題更大一些。否則用一百萬處理器堆起來豈不更好?

為何要用超算,在於模擬的精度,這種追求是無止境的,比如天氣預報,例如我要計算整個全球的天氣,原來我的精度是10公里,現在我可以精確到1公里,當然這類問題的數據都是TB記,不是單個節點能算的,實際上現在超算能解決問題的規模都是由內存總量決定的。

說了這麼多,有很多不嚴謹的地方歡迎大家指正。


當前的瓶勁不知道,非超算領域人士;
大學專業是物理,以我有限的物理專業知識來猜測下以後超級計算機瓶頸:
電腦本質是二進位(無論cpu運算還是磁碟存儲),二進位是邏輯的,物理表現就是高電平低電平,這就是就是晶體管的控制作用了。所以相同尺寸下,電路尺寸越小,數量就越多,運算能力越強~
但不能無窮無盡小,電路上跑的是電子,電路總不能比電子還小吧?而且接近原子尺度,會產生量子效應-測不準原子的運行路徑,一切皆是概率~這時傳統電子行業不行了,只得運用量子力學來構造新式計算機了~


如果是純粹理論上的計算能力的話,絕對是硬體制霸
但是實際應用中,鏈路的級聯,資源的分配等軟體反而成了最大的制約


超級計算機的局限永遠在物理極限上,也就是在硬體上。
最顯著的是CPU的運算能力,硬碟數據的讀取速度,匯流排的帶寬等等。


為什麼說局限不會在軟體上呢?因為軟體是用演算法解決問題的,對於一定規模的問題,演算法需要的代價是不可能無限減小的,也就是說它是有極限的,比如排序演算法,再好的演算法複雜度也不可能小於log(n),除非是對於某些特定情況下的排序。我們可以用接近最優的演算法去讓硬體更快的得出結果,但是無論科學如何發展,特定演算法的複雜度總是在從大的那一邊趨近於一個極限。而且這個極限必須大於0。換言之,你總得去算,算就得耗費時間,你可以算的好,節約時間,但是你不能不算就得出了結果。

硬體從目前的架構上來看,以CPU為例,Intel今年發布的新CPU製程已經到了22納米,已經在目前的架構下逐步趨近一個極限,但是請注意,不同於軟體的極限,硬體是可以出現突破的,在物理學材料學以及電子和計算機學科發展的推動下,硬體的發展可謂一日千里,100年前大量是用的計算硬體是算盤和計算尺,而現在我們已經擁有了超級計算機,誰又能想像到100年後會有怎樣更新的技術來顛覆當前的計算機科學。比如量子計算機神馬的。


插個題外話,想知道提問者,知道這個問題的答案的意義是什麼?對你有哪些作用?


我認為目前超極計算機的局限還是在軟體,深入理論就不講了。。。。。。就講一個事實,目前的超級計算機的利用率是非常低的,其CPU利用率也是低到不能再低了。究其原因,就是並行演算法的設計,並行調度以及負載平衡等問題都不能得到有效的解決。


不是這個領域,不能回答這個問題,感覺還是軟體瓶頸。


謝邀:個人認為,是Architecture. :-) 我總是喜歡從ABCD中選E...Orz
先不論你軟體是否分散式,系統是否為linux,硬體多少運算核心,多少GB RAM,
只要你是馮諾依曼結構的,你就得按這個結構去處理數據 e.g. X86
同樣,只要你是哈佛結構的,你就得按這個結構的設計去處理 ARM9(原先是馮諾依曼結構後轉為哈佛結構)
假如有一個人發明了一種新的結構,能夠像地心說向日心說z那樣顛覆原有概念,那麼是將是局限性上質的飛躍


目前無論是超級計算機,還是一般服務器,最主要的瓶頸都是硬體的IO,特別是存儲的IO。軟體主要是演算法,演算法說到底就是數學的高度應用,數學的發展一直都是超前於物理學。


看其他人回復了好多。其實單就你的問題而言,根本就沒那麼複雜。
超算也是計算機,計算機是硬體和軟體的集合,二者相輔相成的決定了整體性能。
在硬體性能相差不大的情況下,軟體性能會成為整體性能高低的決定因素。
在軟體性能相差不大的情況下,提升硬體性能會是整體性能提升。
但在單純的提升某一個方面,最終會使另一個方面成為瓶頸。
比如在軟體一定的情況下,適當的提升硬體性能會使整體性能得到提升。但是繼續提升硬體性能,並不會使整體性能線性增長。而且最終將導致軟體成為性能的瓶頸。
目前超算排名中大多在比較硬體性能,但超算的目的不是搞排名,而是應用。所以軟體決定了,超算的實際價值,而目前的軟體明顯跟不上硬體性能提升的腳步,無法對硬體的高性能做一個相匹配的支撐。(這裡的軟體包括操作系統和應用軟體兩部分)
所以,針對你的問題,我的回答是「軟體」。


謝邀 這是個坑爹的項目,純粹是窮顯擺:花 30 億買來的超級計算機,誰都沒想好這貨能幹嘛


只能說是計算機的體系結構設計決定了計算機的計算方式,即當代計算機只能按當前設計的方式去計算,是有局限性的計算方式。硬體的提升改變不了設計的本質。


謝邀,我不知道為樓主為何說超算存在局限,在市場沒有大規模應用時,一切軟硬體都是DEBUG模式,而超算這塊明顯是國家之間的比拼,就像科技冷戰,而中國的穩定地投資與基礎(在70、80年代超算的設計上還是相當有水準的)並不差,不像老毛子國家都解體了,所以現在存在一個現象,就是中國與美國在你追我趕,美國是因為民主政體,超算投資比例相對沒有那麼大,但人家有核心啊,如果美不讓INTEL出口給中國,那中國的超算性能就會停在那(短板啊!)直到5-10年後龍芯牛逼起來,但那時早就不知道被甩多少條街了。扯遠了,就說應用這塊,明顯的軟體上應用太少,這與周邊設施也有關,比如天氣預報這塊可以用到超算的,但信息採集的節點跟不上(包括採集點、衛星數量),所以天氣預報就不準了。還是市場還沒有達到批量生產的層次(雲計算一定程度上阻礙超算的發展,雖然有共同的基礎,但方向不一樣),不然需求上來了,你看IBM會不會像之前買小機一樣賣超算。總之一句話,超算對於現在的應用夠用,剩下的都是國家之間比拼。


推薦閱讀:

有沒有哪個時刻讓你突然感覺到:「我的計算機專業白學了」?
為什麼華爾街看重大學出身,而矽谷不看?
被自己寫的代碼美哭是一種什麼樣的體驗?
從事CS,IT以外的專業不能賺錢么?
計算機視覺,計算機圖形學和數字圖像處理,三者之間的聯繫和區別是什麼?

TAG:軟體 | 計算機科學 | 超級計算機 |