中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux集群在HPC體系架構中的基礎分析

發布時間:2021-10-28 19:03:48 來源:億速云 閱讀:176 作者:柒染 欄目:系統運維

這期內容當中小編將會給大家帶來有關Linux集群在HPC體系架構中的基礎分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

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

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

HPC 體系架構的類型

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

HPC 硬件可以分為 3 類:

  • 對稱多處理器(SMP)

  • 向量處理器

  • 集群

對稱多處理器(SMP)

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

向量處理器

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

集群

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

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

集群定義

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

  • 故障遷移集群

  • 負載均衡集群

  • 高性能集群

  • 故障遷移集群

最簡單的故障遷移集群有兩個節點:一個節點是活動的,另外一個節點是備用的,不過它會一直對活動節點進行監視。一旦活動節點出現故障,備用節點就會接管它的工作,這樣就能使得關鍵的系統能夠持續工作。

負載均衡集群

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

高性能集群

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

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

圖 1. 基本的集群

Linux集群在HPC體系架構中的基礎分析

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

高性能集群的常見用途

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

生命科學研究

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

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

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

石油和天然氣勘探

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

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

圖像呈現

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

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

Linux 和集群如何改變了 HPC

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

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

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

理解硬件:向量機與集群

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

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

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

  • 進行指數調整

  • 添加符號

  • 對結果進行取整檢查等

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

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

Linux集群在HPC體系架構中的基礎分析

 

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

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

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

集群的特性如下:

  • 集群都是使用常見的硬件進行構建的,其成本只是向量處理器的很小一部分。在很多情況中,價格會低一個數量級以上。

  • 集群使用消息傳遞系統進行通信,程序必須顯式地進行編碼來使用分布式硬件。

  • 采用集群,您可以根據需要向集群中添加節點。

  • 開放源碼軟件組件和 Linux 降低了軟件的成本。

  • 集群的維護成本很低(它們占用的空間較小,耗費的電力較少,對于制冷條件的需求較低)。

并行編程和 Amdahl 法則

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

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

圖 3. Amdahl 法則

Linux集群在HPC體系架構中的基礎分析

 

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

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

T(1)

S = ------

T(j)

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

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

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

并行編程的方法

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

分布式內存方法

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

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

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

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

從節點將結果返回給主節點。

主節點收集結果,并繼續分發任務,依此類推。

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

共享式內存方法

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

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

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

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

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

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

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

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

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

圖 4. PVFS 是如何工作的

Linux集群在HPC體系架構中的基礎分析

上述就是小編為大家分享的Linux集群在HPC體系架構中的基礎分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

康平县| 鹿泉市| 水城县| 孝义市| 蓝山县| 海晏县| 福泉市| 滦平县| 科尔| 甘孜县| 嘉兴市| 依安县| 巴塘县| 象山县| 手机| 南江县| 榆树市| 巧家县| 保定市| 宿迁市| 冕宁县| 平昌县| 贡嘎县| 新晃| 伊宁市| 芮城县| 湟中县| 青海省| 娄烦县| 博客| 嘉荫县| 集安市| 玉门市| 阳高县| 扶绥县| 虹口区| 新干县| 安义县| 敖汉旗| 永兴县| 洮南市|