你需不需要一台每秒可以進行數百萬億次浮點運算的機器?或者,你想不想知道點關於你家地下室里的超級計算機是如何上電運行的趣事兒?建造一台屬於自 己的計算集群——亦即超級計算機——是每個閑得發慌還有錢燒的專業極客都能做到的事情!從技術上來講,一台現代多處理器超級計算機實際上是一個計算機網 絡,這些計算機並行地工作以解決特定的計算問題。本文將從硬件和軟件兩個角度為你解開建造一台超級計算機的神秘面紗。
Steps
1.首先要確定硬件部件和所需要的資源
你需要一個頭節點(head node),至少一打的計算節點(compute node),一台以太網交換機,一個電源分配單元(power distribution unit)和一個服務器機架。計算一下電力消耗,冷卻需求和占地需求。同樣,你需要確定你的私有網絡的IP地址段,節點的命名,預計使用的軟件包以及搭建 服務集群所用的技術(后面會有更多解釋)。
- ●盡管硬件相當昂貴,但是這里列出的軟件都是免費的,並且大多都是開源的;
- ●如果你想要了解一下你的超級計算機理論上能有多快,你可以用這個工具:http://hpl-calculator.sourceforge.net/
2.建立計算節點
你需要自己組裝計算節點,或者你也可以使用預配置的服務器。
- ●選擇一款能夠最大化空間、冷卻和能源消耗效率的機架式服務器;
- ●或者,你可以使用一打左右閑置的過時服務器——它們集合在一起工作的性能要比它們獨立運行時的總和還多,而且還能省你一大筆錢!整個系統的處理 器、網絡適配器、主板應該是同一型號的,這樣才能達到最佳運行效能。當然了,別忘了給每個節點配內存和硬盤,並且至少給頭節點配一台光驅。
3.將服務器裝在機架上
安裝的時候從下面開始,這樣可以避免機架頭重腳輕。你可能會需要朋友的幫助才能完成這件事——這么多的服務器將非常的重,把它們放到機架的滑軌上會非常困難。
4.在機架頂端安裝以太網交換機
現在來配置交換機:允許9000字節的大的幀,將IP地址設置為你在第一步里面確定的靜態地址,關閉例如SMTP嗅探這樣不必要的路由協議。
5.安裝能源分配單元
根據目前你的節點的最大需求,可能220V就能滿足你的高性能計算需求了。
6. 一切都安裝妥當之后,就可以開始配置環節了
Linux是高性能計算集群(HPC Cluster)操作系統的事實標准,這不僅因為Linux是科學計算的理想環境,也是由於在數以百計甚至千計的節點上安裝的時候,Linux不會產生任何花費。設想一下,在如此多的節點上安裝Windows會花掉你多少錢呢?
- ●從更新主板BIOS的固件開始,將所有節點的BIOS固件都更新至最新的版本;
- ●在每個節點上都安裝好你喜歡的Linux發行版,頭節點需要安裝隊圖形界面的支持。比較流行的選擇,包括CentOS、OpenSuse、Scientific Linux、RedHat以及SLES;
- ●作者極力推薦你使用Rocks Cluster Distribution來搭建計算集群。除了它已經安裝好計算集群需要使用的所有工具外,Rock還提供了一種通過PXE和RedHat的“Kick Start”來進行批量部署的方案。
7. 安裝消息傳送界面、資源管理器以及其他必須的庫
如果上一步里你沒有選擇Rock做為你的節點的操作系統,那么現在你需要手動設置並行計算機制所必需的軟件。
- ●首先,你需要一個便攜的bash管理系統,例如Torque Resource Manager,這些軟件允許你划分以及分配計算任務;
- ●如果安裝了Torque Resource Manager,那么你還需要Maui Cluster Scheduler來完成設置;
- ●其次,你需要安裝消息傳送界面(message passing interface),用來在不同的計算節點的進程之間共享數據。不用想了,OpenMP是你的菜!
- 最后,不要忘了用多線程的數學庫及編譯器來編寫你的計算任務。我是不是說過其實你只需要Rocks?
8.將所有的計算節點接入網絡
頭節點負責將任務分配到計算節點,計算節點再把結果返回回來,節點間的消息傳遞也是如此,所以當然是越快越好了。
- ●使用私有網絡將集群中的所有節點互聯起來;
- ●頭節點其實還充當局域網里的NFS、PXE、DHCP以及NTP服務器;
- ●你必須將該網絡從公網中分離出來,這樣可以保證該網絡中的廣播報文不會影響到其他的網絡;
9.對集群進行測試
在你把你強大的Top500計算集群交付給客戶之前,你還要測試一下它的性能。HPL(High Performance Lynpack)評測軟件包是測試集群的計算速度的常見選擇。你需要從源代碼編譯它,編譯的時候根據你選擇的架構,打開所有可能的優化選項。
- ●當然了,在編譯源代碼的時候,你需要打開所有可能的編譯優化選項。例如,如果你使用的是AMD的CPU,編譯Open64的時候,請加上-0fast優化選項;
- ●把跑分結果和TOP500.org上最快的計算機做個比較!