有了分散式計算平台後,像天河這種超級計算機還有存在的必要嗎?
超級計算機其實也是分散式集群架構,和普通集群很類似,編程模型都是MPI、Mapreduce那一套。稍有不同的是:
1.超級計算機用infiniband這種通信背板、各種企業級內部互聯架構……以便提高各節點間的網路IO,常規分散式集群一般都是千兆、萬兆網卡。
2.超級計算機一般會配高檔的磁碟陣列,而GFS+Mapreduce方案底層基於掛在各節點上的普通硬碟。
3.超級計算機會使用更先進的CPU和GPU,更多內存。
4.由於發熱強勁,很多超級計算機採用水冷。
從這些細節可以看出:
1.超級計算機更適合計算密集型作業,如果你是用MPI算核物理、天體物理、蛋白質摺疊、渲染《阿凡達》、求解普通PC上需要幾千萬年的迭代方程,那麼就應該用超級計算機。反過來,分散式集群Mapreduce適合IO密集型的作業,加上成本低,可以把集群規模搞得很大,因此最適合掃描過濾海量的數據,例如互聯網行業的經典應用:為搜索引擎創建全網Web頁面的索引。
2.超級計算機造價更昂貴,維護成本也高,甚至每小時電費就得上萬元。記得我以前做蛋白質搜索引擎的時候,在國內最大的超級計算機之一跑過一個80分鐘的job,花了老闆5000多塊上機費(因為我們有項目合作,人家已經給我們打了很低的折扣了)。不過這些作業用MapReduce在普通分散式集群上跑,跑了好幾天。
雲計算是建立在廉價分散式硬體+牛B的軟體系統設計上,在商業上越來越成功。所以正在搶佔傳統超級計算機的用戶市場。例如阿里雲剛剛和國內的動畫公司合作渲染出來的《昆塔》,計算量是阿凡達的四倍。不過就我所知,各大傳統超算中心其實依然是排隊、忙不過來的。隨著國內經濟的升級,很多造船、石油、材料、生物、天體物理、軍事領域的計算需求都很強烈,這一類計算密集型任務,性能和時間往往比成本更重要。
最後是廣告時間(求不摺疊)。我們團隊在招人,雲計算、大數據、分散式計算人才很合適,歡迎投簡歷,具體信息參考 GeneDock 也歡迎推薦,成功入職後獎勵推薦人iPhone或DJI大疆無人機。當然需要。如果你有一個非常大型的計算,需要1000個CPU同時跑,並且他們之間的數據交互量也相當大,這個時候你就必須用超算而不是分散式計算了。
超算並不是一塊特別大的主板上面插了幾十萬個CPU,而是分為一個又一個的節點,每個節點都有一定數量的核(比如說32)。節點與節點之間需要通過網路進行通訊。即使是使用了比普通的網路快很多的InfiniBand,很多程序在超算上跑的時候性能瓶頸依然是在節點之間的通訊,因為數據量實在太大了。可想而知如果這種任務放在分散式計算上跑,使用平均200KB/s而且時不時掉線的網路傳輸數據程序要跑多久。
我記得我們學校超算的一個老師曾經說起過一件事情:有一幫搞核物理(貌似是,記不太清了)的去找IBM幫忙提升他們程序的計算效率,IBM的專家研究發現這個程序的特點是,相鄰節點之間的數據交互非常巨大,而其他節點之間則只有少量數據交互。於是IBM的專家就為此程序專門研發了一個超級計算機,這個超級計算機相鄰節點之間的通訊效率比一般的超算快非常多,而非相鄰節點之間的通訊的性能則比較平庸。用這個計算機跑那個程序速度提升非常明顯,而且世界讓沒有任何一款純的軟體能夠打敗他。
首先需要題主澄清一下:分散式計算平台是指什麼?是指distributed computing?舉個例子?
然後天河一號不屬於distributed computing, 她是parallel computing, 兩個不是一個東西,天河一號不僅有存在的必要,而且是計算容量還遠遠不夠,越多越好,沒有上限的。這根本不是爭排名,而是現實需要擺在那裡,巨大的需求。
先講講distributed computing和parallel computing的區別。distrubuted computing是指很多個computing node分散開,互相之間沒有很快的網路連接,各自領一個任務的一部分,算完後把結果匯總。這個任務是可以分解成一個個獨立的小任務,不需要node之間太多通信的。而parallel computing是很多個computing node放在一起,互相之間用最快的網路連接,一起計算一個任務,這個任務有很多個步驟,需要各個node之間有很頻繁的通信,通信的數據量可以很大。
舉個例子,矩陣的加法是可以分解成各個模塊,一個node可以獨立算出對應模塊的結果。矩陣的乘法就需要分解之後各個node頻繁通信。學MPI應該會寫過矩陣乘法。
最後講parallel computing的必要性。科研和工業上應用都很多,說幾個實際的例子吧,飛機空氣動力學模擬,天氣預報。這些缺口都很大,希望出現更多的天河。手機打字,回頭有空想起再補充。
先給出兩個結論:
1、現在所以超級計算機本質上都是集群;
2、集群可以做分散式計算,但高性能計算的要求比分散式計算要苛刻得多。
下面逐條說明:
1:超算以前有MPP、SMP等形式的存在,那些都是專用機器,近10年來超算已經全面向集群轉變,一台大超算是由很多個計算刀片組成的。這也就是為什麼有人說天河二號是砸錢高級DIY,因為天河二號除了主板(這個我不確定)以外的所有主要硬體都是商用設備,有錢總能買到。
2:現在的超算,或者說高性能集群,你完全可以當分散式集群來用。但是超算有更高級的文件系統和存儲系統,更快個更低延遲的IB網,以及量身訂造優化過的MPI跨節點(分散式)運行環境。後者非常重要,我覺得幾乎可以說是現在超算的核心技術之一。現在的那些分散式系統,其計算任務都是松耦合的,沒有什麼明顯的前後依賴。但是超算上跑的科學計算不一樣,往往上一步解的結果下一步要用,因此各節點之間需要低延時的數據交換。實際上訪問數據的延時和帶寬是大多數高性能計算應用容易遇到的瓶頸,也是優化程序時主要著力點之一(因為內存帶寬和速度跟不上CPU的速度),在一個節點內如此,跨節點的傳輸問題會更嚴重。所以才要上IB網,才要針對性優化MPI環境。分散式系統不一樣,沒有這個壓力,我有一億張圖片要壓縮我就平分下去各機器壓縮完了傳回來就行。所以高性能集群去做分散式系統沒有任何問題,反之則不行。
----------15.12.13更新----------
看到樓上樓下有那麼多人對大型機的認識不正確,我給你們一點用百度都能搜到的資料:
某國產大型主機:浪潮天梭K1 910 ,請點去技術規格那裡看看
IBM 最新的大型機 z13:IBM z SystemsIBM大型機老而彌堅 z13中國市場漆黑一片_DOIT.com.cn
實際上現在的大型機裡面也要用到『通用』的微處理器(IBM大型機的微處理器是Power系列的改過來的,至於安騰,雖然現在已經半死不活,也勉強可以算是『通用』吧,還有其他機器有用到),所以裡面也是一大堆處理核心,而不是什麼單核單線程能力很強。
下面這張圖是《Computer Architecture : A Quantitative Approach (5th edition)》給出的各場景宕機時長平均帶來的損失,還是2000年統計的老數據:
所以大型機要的是穩定和安全,因為銀行部門不允許在交易高峰出現哪怕五分鐘的宕機。
至於計算能力,這裡應該做一個區分:浮點計算能力和整數計算能力。前者在任何形式的模擬計算(所有的科學計算和模擬都是模擬計算)中都是至關緊要的;後者在事務性計算上,突出表現為資料庫以及日常軟體應用,關係緊密。
說大型機的計算能力強大,是指其整數計算能力很強;至於其浮點運算能力,一台大型機也打不過兩三塊Tesla K80計算卡。沒有人現在會去買大型機來做浮點運算,除非是土豪錢多任性。
而現在用在超算上的計算設備,都在加強並行(向量)浮點處理能力。因為大部分科學和工程計算問題最終都要轉化到一個或多個矩陣計算問題上,而矩陣計算問題就要處理大量的向量。所以Xeon Phi里有512位的向量部件,GPGPU上有上千個流處理器,都是極其具有針對性的。
好,回到原本的問題上,我解釋一下為什麼說網路通信技術,也就是硬體層面的IB網架構和軟體上的MPI跨節點通信庫的調試,是超算的核心技術之一。
先說硬體。現在世界上跑得最快的500台超級計算機,在Home | TOP500 Supercomputer Sites查到完整的列表。排名前50的超算,其互聯方式基本都是定製的(基於InfiniBand)或者直接就是IB網,排名最前的非定製非IB網的機器是第66名聯想自己弄的一套,Segment是Industry。用乙太網的機器,其持續運行速度(你基本上可以理解為一個充分優化的應用能連續跑出來的最快的速度)比起其理論最大速度,很多都沒有超過一半。過半的那些很多都是排名比較後或者計算節點數比較少的機器。Mellanox在其報告http://www.mellanox.com/page/top_500中也提到,將近一半的超算用了IB網。而商用的分散式計算集群,比如第66名那台,用的是萬兆以太,計算效率只有三分之一不到。但是作為商用集群,這一點問題都沒有。
再說一下MPI通信庫的問題。有好的硬體,也要有好的軟體去用,前50的超算基本都會針對自己的架構去做一個MPI庫的優化。現在能獲取到的免費高性能通用MPI庫有OpenMPI、MPICH和MVAPICH,商用的有Intel MPI。天河二號上的MPI是基於MPICH做了深度優化的。我之前有一個程序,在16個節點上運行,每個節點上有一個長度為三千兩百萬的double型向量,要將這16個向量做加法,然後存到一台機器上,MPI庫有一個函數MPI_Reduce提供現成的演算法去處理。Intel MPI做一次這樣的處理,用時比天河二號自主的MPI要慢了一倍有多。所以如果你不去做優化,那些一邊計算一邊需要MPI交換數據的程序,就會很慢。分散式集群一般就不會去處理這種事情,最多買個好一點的商業庫,或者直接用免費的。這樣的話做科學計算的速度就遠遠不如定製過MPI庫的超算了。
另外,就我所知,超算上的應用里,有磁碟IO瓶頸的不多,更多的是內存帶寬和網路延時帶寬瓶頸。但商用分散式集群處理的問題,MapReduce之類的,對磁碟IO的要求就比較大。這個時候商用集群可以用便宜單擊來達到高磁碟IO。至於超算,它每個計算節點自己也有一塊硬碟,但是不存數據。所有的用戶數據都是存放在一個統一的高性能存儲陣列上。
包括天河系列在內的各大超級計算機都是一個大規模分散式計算集群,至少http://top500.org上榜的那500都是。
這是天河在知乎上被黑得最慘的一次
有。人類對速度的追求是無止境。之所以分散式今天這麼火,是因為廉價的集群可以獲得相當高的計算能力。但是普通的分散式集群有很多的缺陷,比如網路開銷很大,這既受限制與網路鏈路,也受限制於協議。天河這種機器是精心設計,計算能力還是普通分散式集群無法達到的。如果你需要承擔像天氣預報計算這樣的系統,你最終也是會和天河的設計理念差不多。
《三體2黑暗森林》裡面,面壁人雷迪亞茲,一位狂熱的核彈愛好者,他擔任面壁人期間的主要工作就是全世界到處找超算為他計算巨型核彈。
我要開始吃藥了。
首先題主問題有問題。
計算機分為超級計算機、大型機、中型機、小型機和微型機。天河是超級計算機,不屬於大型機。
介於問題不專業,所以我還是盡量用通俗的話講。(開個玩笑)
純屬個人觀點。
超級計算機一直是用於科學研究,走在時代的前列。因為超算的體系結構和指令結構都是十分複雜的,所以一直凸顯出的是它的計算速度。對於超算的研究,是有助於計算機的發展的。但是,超算也只是適合待在實驗室,畢竟它結構複雜,造價昂貴,維護成本更不必說。而且超算的計算速度與IO瓶頸問題,使得超算大部分時候處於空跑狀態。
大型機現在專指IBM主機,也就是英文裡面的mainframe專指。最早時候,在PC出來之前,其實只有大型機的。IT領域的應該都看過著名的《人月神話》這本書,現在的大型機就是書裡面的IBM 360發展過來的。大型機速度雖然趕不上超算,但是通過各種平台的軟體及體系,很好的平衡了計算速度和IO,使得其很好的運用於大型數據中心。但也是由於其維護成本高昂,都是大型非技術公司購買其服務的。在中國,比如五大銀行、證券、金融等公司。在國外,大型機客戶就多了,還涉及到一些醫療數據中心等等等等。而且大型機是按每年的計算量收費的,不是一次性支付。總的來說,大型機還是比較有應用性。
中小型機,現在幾乎已死,分散式計算的出現使之成為一塊雞肋。價格不便宜,卻達不到大型機的運算能力。
至於題主提到的分散式計算平台,大部分是由x86架構PC集群構成。因為PC便宜,壞了就換,而且可以完成現在海量數據的處理。所以,現在很多科技公司都願意使用x86集群,因為有技術團隊,而且維護成本低廉。
其實無論是PC集群還是超大型機,是人們兩種相對的處理問題的方式而已。題主的問題標籤是雲計算,而雲計算暨可以採用集中式,如超算和大型機,也可以採用分散式,就是如今火熱的分散式。說到此,順便評論下中國的去IOE之風。自從當局指示國內要自力更生,去IOE後,各個大小公司都開始喊著去IOE,經常有朋友和我談類似的問題,說我們大機已死,巴拉巴拉。。。但是中國目前並沒有可以代替的技術能夠真正實現,尤其是像五大行那種,要求要用浪潮伺服器取代。當年沒技術引進技術,現在依賴過很,已經去不掉了。
好吧,說了那麼多,其實我想說的是,存在即合理。請大家忽略上一段話,我只是個學大型機又學分散式的學生,我連皮毛都不懂,我瞎扯的,不喜勿噴。我畢業論文還沒寫完,匿了。
光腦出現前計算能力和能耗比的矛盾無法解決就有存在必要
克雷公司出現前,超級計算機是一台台設計來買的,現在特指專門組合的集群
有了git提供分散式開發支持以後,我這樣的資深碼農還有存在的必要嗎?
ps: 我就不吐槽天河和大型機不是一回事這種槽點了……因為我知道題主想問什麼。依然有必要,而且很必要。
分散式程序本質上是 divide and conquor 思路,能利用多少台機器取決於任務可被分解的粒度,但在很多場景下(比如機器學習)任務分解後的粒度依然很大,甚至超出單個 PC 的承載能力,這時就需要小型機、大型機乃至超速出馬。
舉個例子,搜索引擎在對用戶搜索詞做分析時,需要進行大量的模式匹配,為了保證速度我們把模式存在內存詞典中,這就導致對搜索詞的分析程度受限於單機內存。市面上能買到的機器內存一般在 200GB 以下,這導致很多高級分析難以開展,進而影響搜索結果質量。
怎麼解決呢?一個思路就是嘗試用 infiniband 或 fpga 等做高速網路,跨機器訪問內存,進而 cpu 密集任務(如文本相關性計算)、多輪迭代的 io 密集型任務(如機器視覺)也能得到改善。
天氣預報、地理勘探、生化實驗等也是同樣的,要麼單個任務太大,要麼任務間交互太多,這都超出了 PC + 乙太網集群的能力,需要藉助高速網路組成一個超級單機。這就是超算了,很必要。有必要存在。
分散式計算有一個重要的目標就是用一堆便宜的PC堆積出一個能與大型機有相同計算能力的集群。想法非常好,但分散式計算的前提是,任務要可分解,才能「分散式」計算。
但是很多本質上是串列化的任務是無法並行拆分的,比如微積分計算、正則表達式匹配、航天、衛星軌道計算等,這些都依賴單機單線程的強大計算能力,因此大型機是不可或缺的。
還有,分散式要應對的主要問題是PC的穩定性,如果突然的宕機可能會對金融領域造成致命的不一致性,而大型機有著良好的可靠性和服務,自然有存在的市場。
- 天河是並行計算的機器集群,是為了解決高性能計算的問題。
- 分散式計算是為了解決大量的計算問題。
前者的問題是計算量大(應用範圍:科學計算等),可並行處理;後者是計算量多,可分解處理(應用範圍:淘寶處理訂單等)。
以矩陣相乘為例:分散式計算比較適合計算百萬個1000×1000的矩陣的相乘;而並行計算比較適合計算一個1000000000×100000000矩陣的乘法。
為了達到上述的要求,以天河超級計算機為代表的並行計算集群的體系結構不同於一般的分散式集群,每個節點的CPU/GPU 數量多,內存大,計算前所有數據讀入內存,計算過程中幾乎不訪問硬碟,硬碟只作為數據的備份和運算結果的保存。為了針對特定領域所需要的高並發性能,往往採用高吞吐、高性能的GPU或者特定的FPGA 代替一般的CPU進行計算,而分散式則採用通用的商用伺服器或者更低廉的機器。
可見就計算能力來說,分散式計算集群在並行計算集群面前就是小巫見大巫,完全不是一個數量級,但所針對和解決的問題也是不同的。下圖比較了天河二號和百度集群的一些規模參數:
還有一個就是並行計算的實時性要求比分散式計算要高。(比如氣象、災難衛星採集的數據需要准實時地分析得到結果,以便儘快處理災情,這樣並行計算比較合適;而分散式計算比較適合實時性較弱的業務,如日誌分析和數據挖掘)
大型機指的是IBM Z系列這類機器,主要應用於銀行,英文翻譯為main frame.
天河這類機器和大型機完全是兩個不同的東西。
別的不說啦,我們實驗室里的計算集群已經用上了4倍速的INFINIBAND網路,插頭有兩個拇指那麼粗,點對點有效帶寬20G/s,就是任意兩台機器通信的帶寬都不小於20G/s。網路延遲ping命令已經快測不出來了,微秒量級。硬體支持遠程讀寫內存,就是RDMA協議。
天河1A的網路是定製網路硬體和定製協議,點對點帶寬我記得是40G/s。天河二隻會更快。
具體到程序來說,計算能力需求是一方面,更重要的還是數據通信,比如我們組的計算程序一般要上千個進程,每一個進程每秒要收發幾百兆的數據,計算要持續幾個小時到幾天。
裝完逼就閃人。上面有很多同學回答的非常詳細了。
我簡單的回答,因為接觸過分散式平台和hpc系統,算是有所了解吧。
1. 分散式平檯面臨的問題是io問題,各種IO都是問題
2. HPC系統,要解決的是計算和節點的IO,而計算非常關鍵
曾經用spark來運行一個LR機器學習演算法,粗略的估計了一下,性能差了兩個數量級。
有必要。
雲和超級計算機都是為了解決計算問題。
要有錢,都上超級計算機機了。
雲不就是為了少花錢嘛。
即將開始的下一代雲計算會用到很多超級計算機的技術。
有必要,
這種設備在科學前沿領域都是需要的。其計算能力和處理能力,可以解決一些問題
分散式計算平台是解決資源利用問題,兩者沒有強烈的對比性,都是為了解決不同程度的
問題存在。而且,其單台設備相比,或者相同量級對比,都顯得沒有什麼意義。
推薦閱讀: