|
設計超級計算機的創新設計在於把複雜的工作細分為可以同時處理的工作並分配於不同的處理器。他們在進行特定的運算方面表現突出,但在處理一般工作時卻差強人意。他們的資料結構是經過精心設計來確保數據及指令及時送達——傳遞速度的細微差別可以導致運算能力的巨大差別。其輸入/輸出系統也有特殊設計來提供高頻寬,但是這裡的數據傳輸延遲卻並不重要——超級計算機並非數據交換機。2 e, Y& [; o% s; r6 F: A
! I1 G1 \$ W: v, ]
根據阿姆達爾定律,超級計算機的設計都集中在減少軟體上的序列化、用硬體在瓶頸上加速。
6 i* I, z2 C- u3 F5 @& W
4 h9 o- P' w2 _; a( X[编辑] 挑戰與科技超級計算機常產生高熱,需要冷卻。冷卻是很大的通風空調[4]問題。# }7 V8 M, W) R
資訊傳送不能比光快。幾米的距離導致幾十奈秒的延誤,而克雷著名的環型設計保持了最短距離。) a- g/ k4 R" o0 p+ b4 r
超級計算機在短時間耗用及生產大量數據,需要投入很多資源確保資訊妥善傳送及存取。
' t% _+ J$ l' `" i. m% Q因超級計算機而開發的科技:
/ J; Z. L+ e: N; Y) ?* {: X: w% ^
3 ^" w4 X9 C& L; }4 Q9 h" f, \9 B矢量處理器
. `, j- ]; j9 L8 l水冷技術# J1 D. Y3 V( _; D
非均勻訪存模型(NUMA)
: N* q4 E; S! c: J1 p9 K[编辑] 處理器技術矢量處理因超級計算機而建立並用於高性能運算。矢量處理技術後來被用於普通電腦內的信號處理架構及單指令流多數據流(SIMD),例如:電視遊樂器、通用圖形處理器(GPGPU)等。[5]
& w! z/ U4 \( ^9 x+ x; Y7 e$ _) E4 z% l% p7 r6 z
[编辑] 作業系統一般的超級電腦都使用Linux作業系統,但在講求絕對高效能的操作環境時,超級電腦開發人員會動用特別的輕量級核心(Light Weight Kernel- LWK),減少中斷請求、行程間通訊等開銷以提高效能。[6]/ Q7 j& }- W. [- U* i2 k
* F! z! h5 y2 Q1 k& V1 x輕量級核心包括 Cray XT3 的 Catamount[7], Cray XT4 的 CNL (Compute Node Linux)[8], 以及IBM藍色基因的 CNK (Compute Node Kernel)。[9]
' A. f: m: I; l; l( [
! e+ m$ k# y/ a) N[编辑] 編程環境訊息傳遞介面 (MPI)及較舊的並列虛擬機器(PVM)常用於非共享內存系統(Distributed Memory System),而OpenMP常用於共享內存並行系統。[10] [11]4 v6 Z% g( m5 Z+ i1 H( W7 E- W, |
% Y" d" T5 C+ z- r% V傳統上Fortran的編譯器可以產生比C或C++更高效能目的碼,所以Fortran仍然被使用作科學編程。- Z. H8 a. t+ e4 J: N, l( w$ m; N s3 m
K# y% s. G" g5 Q9 m; c
[编辑] 優化編譯器超級電腦需要編譯器優化技術以產生優佳的目的碼,現今的優化編譯器都對向量化(Vectorization)、程式迴圈(Loop Optimization)、記憶體階層及數據局部性進行優化。[12] [13] [14]
3 k5 Q9 C7 d6 ^- |( u) ]" d, P! m9 d/ X2 [ f* Z- _( c
此外,優化編譯器都以高層次的中間表示(Intermediate Representation)優化程式 - 包括Open64編譯器的WHIRL、[15] IBM XL 編譯器的 Wcode。[16]0 E1 y! ~: Q: B; C7 Y' J3 x6 P! D* `# L
( B0 v1 |9 B; z2 W' y! p[编辑] 數學函數庫超級電腦主要執行科學運算等擁有大量向量及矩陣浮點計算的程式,因此優佳化常用的數學函數會提高運算效能。BLAS函數庫使向量及矩陣浮點計算效能大大提高,[17] [18] 而優佳化數學函數庫則提高三角函數及平方根等數學運算。[19]
* v1 ]( u2 X `0 ~4 v$ M
# _, i, C" O* B[编辑] 平行檔案系統平行檔案系統支援多客戶端節點、多伺檔案系統服器,以及支援平行I/O (如 MPI-IO、HDF5);現今流行的平行檔案系統包括Lustre和PVFS。[20]
" R. w* L* A6 L L' A9 l* p
* ~8 o3 g1 R u[编辑] 網路技術超級電腦節點之間的通信一般都需要使用高性能的網路介面,現今大多TOP500的超級電腦使用乙太網路(44.8%)及InfiniBand(41.8%)。 [21]& s' }# W" `- ~ k7 B& i3 T
7 C( L8 t, y; R2 n( e
傳統上InfiniBand比乙太網路有更高的頻寬,同時因作業系統呼叫省略(Operating System Bypass)而提供更低的延遲時間(latency);然而2011年思科系統開發VFIO技術於超級電腦和叢集應用,使一般的乙太網路介面也能提供低延遲時間,從而提升乙太網路在超級電腦的應用層面。[22] |
|