自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux集群在HPC體系架構中的基礎介紹

運維 系統(tǒng)運維
現(xiàn)在 Linux 集群在很多領域都已經(jīng)變得非常流行了。隨著集群技術的出現(xiàn)以及開放源碼軟件日益得到采納,現(xiàn)在只需要傳統(tǒng)高性能機器的很少一部分成本就可以構建一臺超級計算機了。

  現(xiàn)在 Linux 集群在很多領域都已經(jīng)變得非常流行了。隨著集群技術的出現(xiàn)以及開放源碼軟件日益得到采納,現(xiàn)在只需要傳統(tǒng)高性能機器的很少一部分成本就可以構建一臺超級計算機了。

  這篇文章簡要介紹采用 Linux 集群技術的高性能計算(HPC)的概念,展示如何構建集群并編寫并行程序。本文是兩篇系列文章中的***篇,討論了集群的類型、用途、HPC 基礎、Linux 在 HPC 中的角色以及集群技術日益增長的原因。第 2 部分將介紹并行算法的知識,并介紹如何編寫并行程序、如何構建集群以及如何進行基準測試。

HPC 體系架構的類型

  大部分 HPC 系統(tǒng)都使用了并行 的概念。有很多軟件平臺都是面向 HPC 的,但是首先讓我們先來了解一下硬件的知識。

  HPC 硬件可以分為 3 類:

  • 對稱多處理器(SMP)
  • 向量處理器
  • 集群

對稱多處理器(SMP)

  SMP 是 HPC 采用的體系架構之一,其中有多個處理器會共享內存。(在集群中,這也稱為 大規(guī)模并行處理器(massively parallel processor,MPP),它們并不需要共享內存;稍后我們將更詳細介紹這方面的內容。)與 MPP 相比,SMP 通常成本更高,而且可伸縮性較差。

  向量處理器

  顧名思義,在向量處理器中,CPU 被優(yōu)化以便很好地處理向量數(shù)組的運算。向量處理器系統(tǒng)的性能很高,在 20 世紀 80 年代到 90 年代早期一度在 HPC 體系架構中占有統(tǒng)治地位,但是最近幾年以來,集群變得更加流行了。

  集群

  集群是最近幾年中最為主要的一種 HPC 硬件:集群(cluster) 就是一組 MPP 的集合。集群中的處理器通常被稱為 節(jié)點,它具有自己的 CPU、內存、操作系統(tǒng)、I/O 子系統(tǒng),并且可以與其他節(jié)點進行通信。目前有很多地方都使用常見的工作站運行 Linux 和其他開放源碼軟件來充當集群中的節(jié)點。

  接下來您將看到這些 HPC 硬件之間的區(qū)別,但是首先讓我們從集群開始。

  集群定義

  術語“集群(cluster)”在不同的地方可能會意味著不同的意義。本文重點介紹以下幾種類型的集群:

  • 故障遷移集群
  • 負載均衡集群
  • 高性能集群
  • 故障遷移集群

  最簡單的故障遷移集群有兩個節(jié)點:一個節(jié)點是活動的,另外一個節(jié)點是備用的,不過它會一直對活動節(jié)點進行監(jiān)視。一旦活動節(jié)點出現(xiàn)故障,備用節(jié)點就會接管它的工作,這樣就能使得關鍵的系統(tǒng)能夠持續(xù)工作。#p#

  負載均衡集群

  負載均衡集群通常會在非常繁忙的 Web 站點上采用,它們有多個節(jié)點來承擔相同站點的工作,每個獲取 Web 頁面的新請求都被動態(tài)路由到一個負載較低的節(jié)點上。

  高性能集群

  高性能集群用來運行那些對時間敏感的并行程序,它們對于科學社區(qū)來說具有特殊的意義。高性能集群通常會運行一些模擬程序和其他對 CPU 非常敏感的程序,這些程序在普通的硬件上運行需要花費大量的時間。

  圖 1 解釋了一個基本的集群。本系列文章的第 2 部分將展示如何創(chuàng)建這種集群,并為其編寫程序。

  圖 1. 基本的集群

基本的集群

  網(wǎng)格計算是一個更為廣泛的術語,通常用來代表利用松耦合系統(tǒng)之間的協(xié)作來實現(xiàn)面向服務的架構(SOA)?;诩旱?HPC 是網(wǎng)格計算的一個特例,其中節(jié)點之間都是緊耦合的。網(wǎng)格計算的一個成功的、眾所周知的項目是 SETI@home,即搜索外星智慧的項目,它使用了大約一百萬臺家用 PC 在屏保時的空閑 CPU 周期來分析無線電天文望遠鏡的數(shù)據(jù)。另外一個類似的成功項目是Folding@Home 項目,用來進行蛋白質的折疊計算。

  高性能集群的常見用途

  幾乎所有的產(chǎn)業(yè)界都需要快速的處理能力。隨著越來越便宜而且快速的計算機的出現(xiàn),更多公司表現(xiàn)出了對利用這些技術優(yōu)勢的興趣。人們對于計算處理能力的需求是沒有上限的,盡管處理能力在迅速提高,但是人們的需求仍然超出計算能力所能提供的范圍。

生命科學研究

  蛋白質分子是非常復雜的鏈,實際上可以表示為無數(shù)個 3D 圖形。實際上,在將蛋白質放到某種溶液中時,它們會快速“折疊”成自己的自然狀態(tài)。不正確的折疊會導致很多疾病,例如 Alzheimer 病;因此,對于蛋白質折疊的研究非常重要。

  科學家試圖理解蛋白質折疊的一種方式是通過在計算機上進行模擬。實際上,蛋白質的折疊進行得非常迅速(可能只需要 1 微秒),不過這個過程卻非常復雜,這個模擬在普通的計算機上可能需要運行 10 年。這個領域只不過是諸多業(yè)界領域中很小的一個,但是它卻需要非常強大的計算能力。

  業(yè)界中其他領域包括制藥建模、虛擬外科手術訓練、環(huán)境和診斷虛擬化、完整的醫(yī)療記錄數(shù)據(jù)庫以及人類基因項目。

石油和天然氣勘探

  震動圖中包含有大陸和洋底內部特性的詳細信息,對這些數(shù)據(jù)進行分析可以幫助我們探測石油和其他資源。即便對于一個很小的區(qū)域來說,也有數(shù)以 TB 計的數(shù)據(jù)需要重構;這種分析顯然需要大量的計算能力。這個領域對于計算能力的需求是如此旺盛,以至于超級計算機大部分都是在處理這種工作。

  其他地理學方面的研究也需要類似的計算能力,例如用來預測地震的系統(tǒng),用于安全性工作的多譜段衛(wèi)星成像系統(tǒng)。

圖像呈現(xiàn)

  在工程領域(例如航天引擎設計)操縱高分辨率的交互式圖像在性能和可伸縮性方面歷來都是一種挑戰(zhàn),因為這要涉及大量的數(shù)據(jù)。基于集群的技術在這些領域已經(jīng)取得了成功,它們將渲染屏幕的任務分割到集群中的各個節(jié)點上,在每個節(jié)點上都利用自己的圖形硬件來呈現(xiàn)自己這部分屏幕的圖像,并將這些像素信息傳送到一個主節(jié)點上,主節(jié)點對這些信息進行組合,最終形成一個完整的圖像。

  這個領域中的例子目前才不過是冰山一角;更多的應用程序,包括天體物理模擬、氣象模擬、工程設計、金融建模、證券模擬以及電影特技,都需要豐富的計算資源。對于計算能力越來越多的需求我們就不再進行介紹了。#p#

Linux 和集群如何改變了 HPC

  在基于集群的計算技術出現(xiàn)之前,典型的超級計算機都是向量處理器,由于它們全部采用專用的硬件和軟件,因此成本通常會超過一百萬美元。

  隨著 Linux 和其他免費的集群開放源碼軟件組件的出現(xiàn)和常用硬件處理能力的提高,這種情況現(xiàn)在已經(jīng)發(fā)生了很大的變化。您可以利用少量的成本來構建功能強大的集群,并能夠根據(jù)需要來添加其他節(jié)點。

  GNU/Linux 操作系統(tǒng)(Linux)已經(jīng)在集群中得到了大量的采用。Linux 可以在很多硬件上運行,并且具有高質量的編譯器和其他軟件,例如并行文件系統(tǒng)和 MPI 實現(xiàn)在 Linux 上都是免費的。采用 Linux,用戶還可以針對自己的任務負載對內核進行定制。Linux 是構建 HPC 集群的一個非常好的平臺。

  理解硬件:向量機與集群

  要理解 HPC 硬件,對向量計算和集群計算進行一下比較是非常有用的。二者是互相競爭的技術(地球模擬器 是一臺向量超級計算機,目前仍然是最快的 10 臺機器之一)。

  從根本上來講,向量處理器和標量處理器都是基于時鐘周期來執(zhí)行指令的;使它們產(chǎn)生區(qū)別的是向量處理器并行處理與向量有關的計算的能力(例如矩陣乘法),這在高性能計算中是非常常見的。為了展示這一點,假設您有兩個雙精度的數(shù)組 a 和 b,并且要創(chuàng)建第三個數(shù)組 x,比如 x[i]=a[i]+b[i]。

  任何浮點操作,例如加法和乘法,都可以通過幾個步驟來實現(xiàn):

  • 進行指數(shù)調整
  • 添加符號
  • 對結果進行取整檢查等

  向量處理器通過使用 流水線(pipeline) 技術在內部對這些步驟進行并行處理。假設在一個浮點加法運算中有六個步驟(與 IEEE 算術硬件一樣),如圖 2 所示:

  圖 2. IEEE 算術硬件中的六級流水線

IEEE 算術硬件中的六級流水線
 

  向量處理器可以并行處理這六個步驟 —— 如果第 i 個數(shù)組元素是在第 4 個步驟中被添加的,那么向量處理器就會為第 (i+1) 個元素執(zhí)行第 3 個步驟,為第 (i+2) 個元素執(zhí)行第 2 個步驟,依此類推。正如您可以看到的一樣,對于一個 6 級的浮點加運算來說,加速比非常接近于 6(在開始和結束時,這六個步驟并不是都處于活動狀態(tài)的),因為在任何給定的時刻(圖 2 所示的紅色),這些步驟都是活動的。這樣做的一大優(yōu)點是并行處理都是在幕后進行的,您并不需要在程序中顯式地進行編碼。

  對于大部分情況來說,這六個步驟都可以并行執(zhí)行,這樣就可以獲得幾乎 6 倍的性能提高。箭頭表示了對第 i 個數(shù)組元素所進行的操作。

  與向量處理相比,基于集群的計算采用的是完全不同的一種方法。它不使用專門優(yōu)化過的向量硬件,而是使用標準的標量處理器,但是它采用了大量的處理器來并行處理多個計算任務。

  集群的特性如下:

  • 集群都是使用常見的硬件進行構建的,其成本只是向量處理器的很小一部分。在很多情況中,價格會低一個數(shù)量級以上。
  • 集群使用消息傳遞系統(tǒng)進行通信,程序必須顯式地進行編碼來使用分布式硬件。
  • 采用集群,您可以根據(jù)需要向集群中添加節(jié)點。
  • 開放源碼軟件組件和 Linux 降低了軟件的成本。
  • 集群的維護成本很低(它們占用的空間較小,耗費的電力較少,對于制冷條件的需求較低)。

  并行編程和 Amdahl 法則

  當在集群上實現(xiàn)高性能環(huán)境時,軟件和硬件就需要聯(lián)合起來工作。程序在編寫時必須要顯式地利用底層硬件的優(yōu)點,如果現(xiàn)有的非并行程序不能很好地在集群上運行,那么這些程序必須重新進行編寫。

  并行程序一次要執(zhí)行很多操作。其數(shù)量取決于目前正在解決的問題。假設一個程序所花費的時間中有 1/N 是不能并行處理的,那么剩余的 (1-1/N) 就是可以并行處理的部分(請參看圖 3)。

  圖 3. Amdahl 法則

Amdahl 法則
 

  從理論上來說,您可以采用無數(shù)的硬件來處理并行執(zhí)行的部分,甚至在接近 0 的時間內完成這些任務,但是對于串行部分來說,這樣做不會有任何提高。結果是,可以實現(xiàn)的***結果是使用原來的 1/N 的時間來執(zhí)行整個程序,但是不可能再快了。在并行編程中,這個事實通常就稱為 Amdahl 法則。#p#

  Amdahl 法則揭示了使用并行處理器來解決問題與只使用一個串行處理器來解決問題的加速比。加速比(speedup) 的定義如下:(使用多個處理器)并行執(zhí)行程序所需要的時間除以(使用一個處理器)串行執(zhí)行程序所需要的時間:

  T(1)

  S = ------

  T(j)

  其中 T(j) 是在使用 j 個處理器來執(zhí)行程序時所需要的時間。

  在圖 3 中,如果采用足夠多的節(jié)點來進行并行處理,那么 T'par 就可以非常接近于 0,但是 Tseq 卻不會變化。在***的情況中,并行程序也不可能快到原來的 1+Tpar/Tseq。

  在編寫并行程序時真正困難的事情是使 N 盡量大。但是這件事情卻有兩面性。通常都是要試圖在更為強大的計算機上來解決更大的問題,通常隨著所解決問題的規(guī)模的增大(例如試圖修改程序并提高可并行的部分來優(yōu)化地利用可用資源),所花費在串行部分上的時間就會減少。因此,N 值就會自動變大了。(請參看本文后面 參考資料 部分所給出的 Amdhal 法則推論。)

  并行編程的方法

  現(xiàn)在讓我們介紹兩種并行編程的方法:分布式內存方法 和 共享式內存方法。

  分布式內存方法

  此處我們考慮一種主從模式非常有用:

  主節(jié)點負責將任務劃分到多個從節(jié)點上。

  從節(jié)點負責處理自己所接收到的任務。

  如果需要,從節(jié)點之間會相互進行通信。

  從節(jié)點將結果返回給主節(jié)點。

  主節(jié)點收集結果,并繼續(xù)分發(fā)任務,依此類推。

  顯然,這種方法的問題就產(chǎn)生于分布式內存的組織。由于每個節(jié)點都只能訪問自己的內存,如果其他節(jié)點需要訪問這些內存中的數(shù)據(jù),就必須對這些數(shù)據(jù)結構進行復制并通過網(wǎng)絡進行傳送,這會導致大量的網(wǎng)絡負載。要編寫有效的分布式內存的程序,就必須牢記這個缺點和主從模型。

  共享式內存方法

  在共享式內存方法中,內存對于所有的處理器(例如 SMP)來說都是通用的。這種方法并沒有分布式內存方法中所提到的那些問題。而且對于這種系統(tǒng)進行編程要簡單很多,因為所有的數(shù)據(jù)對于所有的處理器來說都是可以使用的,這與串行程序并沒有太多區(qū)別。這些系統(tǒng)的一個大問題是可伸縮能力:不容易添加其他處理器。

  并行編程(與所有的編程技術一樣)與其他科學一樣,都是一門藝術,總會留下一定的空間來進行設計的改進和性能的提高。并行編程在計算中有自己特殊的地位:本系列文章的第 2 部分將介紹并行編程平臺,并給出幾個例子。

當文件 I/O 成為瓶頸時怎么辦?

  有些應用程序通常會需要從磁盤中讀寫大量的數(shù)據(jù),這通常是整個計算過程中速度最慢的一個步驟。更快的硬盤驅動器能夠幫助解決一些問題,但是有時這是不夠的。

  如果一個物理磁盤分區(qū)是在所有節(jié)點之間共享的(例如使用 NFS),就像是在 Linux 集群中經(jīng)常采用的方法一樣,那么這個問題就會變得更加明顯了。此時就是并行文件系統(tǒng)的用武之地了。

  并行文件系統(tǒng)(Parallel filesystem) 將數(shù)據(jù)存放在分布在多個磁盤上的文件中,這些磁盤連接到集群中的多個節(jié)點上,這些節(jié)點稱為 I/O 節(jié)點。當一個程序試圖讀取某個文件時,可以并行地從多塊磁盤上分別讀取這個文件的某些部分。這可以降低某個磁盤控制器上的負載,并能夠處理更多請求。(PVFS 就是一個很好的開放源碼并行文件系統(tǒng);目前已經(jīng)在 Linux 集群上使用標準的 IDE 硬盤實現(xiàn)了超過 1 GB/s 的磁盤性能。)

  PVFS 可以作為一個 Linux 內核模塊使用,也可以編譯到 Linux 內核中。底層的概念非常簡單(請參看圖 4):

  元數(shù)據(jù)服務器負責存儲文件的哪些部分存儲在什么地方的信息。

  多個 I/O 節(jié)點上存儲了文件的各個部分(PVFS 底層可以使用任何常見的文件系統(tǒng),例如 ext3 )。

  圖 4. PVFS 是如何工作的

PVFS 是如何工作的
責任編輯:黃丹 來源: 中國IT實驗室
相關推薦

2017-01-13 15:39:29

Linux進程基礎介紹

2010-09-28 09:29:54

Windows HPC

2016-09-21 14:17:11

JUnit架構API

2011-09-29 13:52:57

服務器HPC浪潮TS850

2018-09-11 12:41:42

HadoopJava工具

2022-12-15 17:31:41

架構龍芯

2009-03-18 09:39:01

HPC微軟高性能計算

2023-03-04 13:32:35

Linux創(chuàng)建目錄

2023-03-21 12:52:05

Linux創(chuàng)建文件

2011-01-14 15:37:39

Linux集群系統(tǒng)

2020-12-24 07:29:32

云計算云基礎云原生DevOps

2009-12-25 10:59:06

2021-01-21 10:02:45

Consul架構安裝

2011-12-20 15:52:03

PhoneGap架構基礎工作原理

2019-11-06 10:55:32

虛擬化VMware vSph架構

2016-12-08 22:26:28

2012-07-30 13:15:58

EVB

2009-09-14 09:11:13

CCIE考試體系介紹CCIE

2009-09-15 09:46:04

思科認證體系CCNACCNP

2010-06-25 09:18:40

集群服務器HPC
點贊
收藏

51CTO技術棧公眾號