您好,登錄后才能下訂單哦!
HPC解決方案是微軟產品歷史長河中的一個砂礫,國內很少有人提及,因此老王準備把這個砂礫擦擦,為大家呈現出來
開始之前我們不妨先來看下HPC的概念,前面我們花了將近50篇左右的文章,講了微軟高可用性群集,除了高可用群集,微軟事實上還有負載均衡群集和高性能群集技術,負載均衡技術無非是ARR,NLB,DNS輪詢,這些大家都常用的技術,而微軟的高性能群集技術,就連專門做微軟itpro的人也很少知道,因此本文我們就來從一個入門的角度,爭取讓不懂HPC的微軟ITpro可以看懂,也可以讓懂HPC但不了解微軟產品的人看懂。
首先我們先來看下高性能群集與其它幾種群集的不同
高可用群集:群集所有節點,來維持一個應用的持續運作,如果當前應用所在節點失敗,自動故障轉移至其它節點
負載均衡群集:群集所有節點來平衡一個應用的訪問請求,利用每個節點的響應,以提高應用效能,同時支持故障轉移
分布式群集:群集所有節點來共同完成一件事,一件事可以被分散成若干小事由不同節點處理,最終匯總結果
高性能群集:群集所有節點來共同完成一件事,通常以計算為主,綜合群集的性能來達到快速完成計算目的
分布式群集與高性能群集進一步探討
這兩種群集模型,某些程度上存在一定相似度,但某些程度又不太一樣
例如,一個分布式群集的節點,可以是server,pc,hpc,可以是跨機房,跨地區,跨國,可以是windows,linux,unix,可以分布式計算里面再包括多個群集,多個節點,基本上分布式群集最大的一個特點,就是對提供計算的節點沒有更多的要求,只要能夠提供計算能力就行,是松耦合化的,不會和某一種OS,某一種硬件綁定
高性能群集在這一點上則與分布式群集不同,高性能群集強調的是高性能,因此,如果這個群集里面各個節點來自不同國家,肯定無法完成高性能的目的,因此,一個高性能群集的各個節點,肯定是通過高速網絡很快的連接在一組的服務器,不可能是分散在不同國家的,同時高性能群集一般不會由PC,普通server參加,起碼會由相對性能高一些的server,或專門為高性能計算設計的server來組成,一個高性能群集的節點通常是標準化的,或者定制化硬件。
分布式計算通常會把一個作業分成多個小作業,然后交由各個節點,高性能計算通常是并行作業
分布式計算更加適用于在計算尋找模式的東西,分析計算,相加計算
高性能計算群集更多的會被應用于數學,工業,科研領域等,需要在短時間內處理多維度的計算
高性能計算是否就是云計算?
從運作形態來講,老王把云計算分為兩個角度來看
對于最終用戶,個人用戶,或企業使用云計算的部門而言,云計算就是一種新的IT消費模型,它自助化,自動化,只要付錢就可以使用,部署快捷,彈性收費,不需要花費其它前置費用和時間
對于云提供商或企業提供云計算的部門來說,云計算就是一種新的IT管理模型,將原來分散的架構開始集中化,通過軟件定義+資源池,就可以執行大部分存儲,網絡工作,同時使用云后可以做一些自動化的維護操作,減輕IT維護時間,另外云計算將成本管理,SLA引入,有助于IT部門進一步體現自身價值
因此大家可以看到從運作形態上來講,云計算更加像是一種企業信息化的選擇,企業選擇云計算來輔助現有數據中心,提升資源申請效率
高性能計算與云計算有一點非常沖突的是,云計算主要是要求提供彈性,要快速部署,快速響應用戶的請求,甚至要基于程序的性能做部署,因此后臺會引入虛擬化,多租戶等技術,高性能計算通常不會是虛擬化,都會是由實體的物理機承擔,以獲得最好的性能。
近些年來,也有些公司提出將高性能計算和云計算集合,主要還是公有云廠商提出的概念,可以從iaas或paas層對接本地高性能計算群集,將公有云作為高性能計算的一部分,但是一些高性能計算用戶還是會對此持有懷疑態度,主要的計算還是會在本地跑,什么場景下適用于公有云呢,可能是要做一些模擬計算的時候,本地高性能群集排隊已滿,這時候可以臨時把作業提交到公有云,最好是不產生數據,僅看結果,這類計算可以適用于公有云。
高性能群集名詞與常見功能
高性能計算(Highperformance computing,縮寫HPC) 最早我們提到高性能計算通常是指某臺高性能主機,通過分片等技術將作業提交到這臺主機進行計算,隨著信息技術不斷發展,高性能計算逐漸也面向企業,現在的的高性能計算通常是指某一群集中組織的幾臺計算機(作為單個計算資源操作)的計算系統和環境,更多的是通過高性能群集軟件+服務器實現高性能計算效果
高性能計算服務器架構選擇
SMP(Symmetrical Multi-Processing),是指在一個計算機上匯集了一組處理器(多CPU),各CPU之間共享內存子系統以及總線結構,SMP服務器的主要特征是共享,系統中所有資源(CPU、內存、I/O等)都是共享的。也正是由于這種特征,導致了SMP服務器的主要問題,那就是它的擴展能力非常有限。對于SMP服務器而言,每一個共享的環節都可能造成SMP服務器擴展時的瓶頸,而最受限制的則是內存。由于每個CPU必須通過相同的內存總線訪問相同的內存資源,因此隨著CPU數量的增加,內存訪問沖突將迅速增加,最終會造成CPU資源的浪費,使 CPU性能的有效性大大降低
NUMA(Non-Uniform Memory Access),由于SMP在擴展能力上的限制,人們開始探究如何進行有效地擴展從而構建大型系統的技術,NUMA就是這種努力下的結果之一,利用NUMA技術,可以把幾十個CPU(甚至上百個CPU)組合在一個服務器內,NUMA服務器的基本特征是具有多個CPU模塊,每個CPU模塊由多個CPU(如4個)組成,并且具有獨立的本地內存、I/O槽口等。由于其節點之間可以通過互聯模塊(如稱為Crossbar Switch)進行連接和信息交互,因此每個CPU可以訪問整個系統的內存(這是NUMA系統與MPP系統的重要差別)。顯然,訪問本地內存的速度將遠遠高于訪問遠地內存(系統內其它節點的內存)的速度,但NUMA技術同樣有一定缺陷,由于訪問遠地內存的延時遠遠超過本地內存,因此當CPU數量增加時,系統性能無法線性增加。如HP公司發布Superdome服務器時,曾公布了它與HP其它UNIX服務器的相對性能值,結果發現,64路CPU的Superdome (NUMA結構)的相對性能值是20,而8路N4000(共享的SMP結構)的相對性能值是6.3。從這個結果可以看到,8倍數量的CPU換來的只是3倍性能的提升。
MPP(Massive Parallel Processing) 由多個SMP服務器通過一定的節點互聯網絡進行連接,協同工作,完成相同的任務,從用戶的角度來看是一個服務器系統。其基本特征是由多個SMP服務器(每個SMP服務器稱節點)通過節點互聯網絡連接而成,每個節點只訪問自己的本地資源(內存、存儲等),是一種完全無共享(Share Nothing)結構,因而擴展能力最好,理論上其擴展無限制,目前的技術可實現512個節點互聯,數千個CPU。目前業界對節點互聯網絡暫無標準,如 NCR的Bynet,IBM的SPSwitch,它們都采用了不同的內部實現機制。但節點互聯網僅供MPP服務器內部使用,對用戶而言是透明的。
在MPP系統中,每個SMP節點也可以運行自己的操作系統、數據庫等。但和NUMA不同的是,它不存在異地內存訪問的問題。換言之,每個節點內的CPU不能訪問另一個節點的內存。節點之間的信息交互是通過節點互聯網絡實現的,這個過程一般稱為數據重分配(Data Redistribution)。
但是MPP服務器需要一種復雜的機制來調度和平衡各個節點的負載和并行處理過程。目前一些基于MPP技術的服務器往往通過系統級軟件(如數據庫)來屏蔽這種復雜性。舉例來說,NCR的Teradata就是基于MPP技術的一個關系數據庫軟件,基于此數據庫來開發應用時,不管后臺服務器由多少個節點組成,開發人員所面對的都是同一個數據庫系統,而不需要考慮如何調度其中某幾個節點的負載
通常情況下SMP和NUMA是過去人們實現高性能計算的選擇,實現高性能計算的一個關鍵標準,是能夠讓作業程序在多個節點并行執行,以獲得最快的計算結果,現在大家更多的是選擇通過MPP架構或普通服務器組成的群集,以實現高性能計算,針對于并行,從原來單獨的硬件層面,延伸到軟件層面,通過并行程序和高性能群集系統的結合,以達到高性能計算。
高性能計算群集常見指標
GFLOPS 就是 Giga Floating-point Operations Per Second,即每秒10億次的浮點運算數
一個 MFLOPS (megaFLOPS) 等于每秒1百萬 (=10^6) 次的浮點運算
一個 GFLOPS (gigaFLOPS) 等于每秒10億 (=10^9) 次的浮點運算
一個 TFLOPS (teraFLOPS) 等于每秒1萬億 (=10^12) 次的浮點運算
一個 PFLOPS (petaFLOPS) 等于每秒1千萬億 (=10^15) 次的浮點運算
Linpack理論峰值計算 = CPU主頻 X CPU每個時鐘周期執行浮點計算的次數 X 系統中CPU核心數
是否支持GPU高性能計算,在浮點運算、并行計算等部分計算方面,GPU可以提供數十倍乃至于上百倍于CPU的性能
高性能計算常見角色
管理節點:負責整個高性能群集的監控,資源分組,資源調度,作業調度,授權控制,系統推送(通常會在頭節點安裝DHCP,WDS等PXE部署組件,當進行大規模部署的時候,直接pxe引導部署其它計算節點,或結合BMC實現喚醒部署)
計算節點:用于運行作業,這種類型的節點通常不能成為不同類型的節點(即更改角色)
用戶訪問節點:作為高性能群集對外的入口,用戶登錄到這個節點提交作業,通常會有Web,console,api,腳本等接口
存儲節點:存儲高性能群集產生的數據,或存儲高性能群集需要的數據,通常會映射這個節點的NFS,SMB至其它計算節點上
數據庫節點:高性能計算群集通常會有一套數據庫系統,用于存放群集作業調度,報告,診斷等數據,通常會直接使用頭節點,或部署遠程數據庫節點
整個架構中最關鍵的是管理節點,數據庫節點,實際環境中通常會把高性能與高可用結合,針對于管理節點和數據庫節點實現高可用。
如果是計算節點壞了,通常情況下管理節點會把它標記為失敗,下次分發計算任務排除該節點,理想情況下計算節點應該是無狀態的,壞了直接新加,計算所需數據來自存儲節點。
用戶訪問節點,如果實現了門戶訪問,可以搭建多臺,結合負載均衡群集實現高可用
高性能計算常見術語
作業:高性能群集最終會提供給用戶門戶,控制臺,或接口,以供用戶向高性能計算群集提供請求,作業就是你希望讓高性能群集執行的計算任務,通常一個作業里面可以包含多個任務,可以設計作業里面不同任務之間的優先順序與關聯性
隊列:成功提交的作業,會提交到HPC群集頭節點,再由頭節點根據調度器規則,調度到合適的資源分組執行作業,如果當前高性能群集所有資源正在使用,或者有優先級更高的計算正在進行,則新提交的作業將被排隊進入隊列,直到有計算資源釋放
資源分組:通過管理節點可以針對于當前群集內所有的計算節點進行資源分組,將資源由服務器,轉換為計算能力,轉換后按照分組計算能力,對使用方進行交付,用戶使用時可以選擇,要將作業放到什么樣計算能力的資源分組執行,如果該資源分組正忙,則用戶作業也會進入隊列。
MPI是什么
MPI并不是一種新的開發語言,它是一個定義了可以被C、C++和Fortran程序調用的函數庫。這些函數庫里面主要涉及的是兩個進程之間通信的函數,采用分布式內存模型,MPI是一種消息傳遞編程模型,駐留在不同節點上的進程可以通過網絡傳遞消息相互通信,實現進程之間的信息交換。
簡單來說,MPI是一種可以用于不同節點進程之間傳遞消息的編程模型,透過MPI我們可以實現進程級別的跨節點通信,進而實現并行計算
一個MPI應用程序的執行如下
MPI初始化
由管理節點將消息分發給計算節點并行執行
計算節點執行完成后經過通信將結果返回給應用程序
除了MPI,還有其它實現并行計算的方法,例如OpenMP,OpenMP通過在節點間共享變量,已達到并行計算效果,以線程作為并行計算粒度,采用共享內存模型
當我們要將作業提交到高性能群集時,雖然群集具備實現高性能計算的能力,但是如果我們提交的作業不是并行的,依然不能實現高性能計算效果,因此也需要考慮如何讓作業并行執行。
通過上面的介紹老王簡單為大家介紹了下高性能計算的一些術語,以及實際運作的形態,我并沒有一味介紹高性能計算概念,而是通過對比,舉例的方式使大家更便于理解,構建自己腦中的模型
下面我們將專注于微軟對于HPC的解決方案,微軟進入HPC領域大概是在2003的時候,那時微軟第一次推出windows computer cluster server解決方案,進入高性能計算領域,整個解決方案當時有兩部分 ,Windows Server 2003 Compute Cluster Edition和Microsoft Compute Cluster Pack,一個系統版本和一個組件包,事實上核心的高性能計算功能,例如資源分區,作業調度,都是在cluster pack中,Computer Cluster edition僅是一個經過優化的操作系統版本,到了2008時代也是如此,2008時代改叫HPC server和hpc pack。從2012開始,微軟已經不再發行hpc server系統版本,hpc pack可以直接在標準版,數據中心版OS運行,最后發行computer cluster版本原因當時的OS還不能和硬件很好的感知,例如RDMA,ODX等功能,2012開始這些都已經完美的內嵌在Server版本中。
最新的hpc pack版本是 hpc pack 2016 ,通過hpc pack可以幫助我們配置hpc解決方案所需要的角色,提供管理hpc群集的工具
微軟HPC解決方案的角色如下,以最新hpc 2016為例
頭節點:負責整個高性能群集的監控,資源分組,資源調度,作業調度,系統推送(hpc pack將自動為頭點安裝dhcp,wds)
計算節點:用于運行作業,這種類型的節點通常不能成為不同類型的節點(即更改角色)
代理節點:Windows Communication Foundation(WCF)代理節點用于將WCF調用從面向服務的體系結構(SOA)客戶端路由到在群集中的節點上運行的SOA服務,這種類型的節點可以在不重新部署的情況下將角色更改為計算節點
工作站節點和非托管服務器節點 :工作站節點和非托管服務器節點是組織中的計算機,它們也可以運行作業,但它們不是專用的群集資源。他們可以安排在特定時間運行工作,也可以按需提供。這種類型的節點不能更改角色
Microsoft Azure Paas節點: 如果您有Microsoft Azure訂閱,則可以根據需要添加Azure節點,以便在需要時增加群集容量。與計算節點,工作站節點和非托管服務器節點一樣,Azure節點也可以運行作業。添加Azure節點時,還可以在Azure部署中配置固定或可變數量的代理節點,以便實現本地頭節點和Azure節點之間的通信。
Microsoft Azure IaaS節點:如果您擁有Microsoft Azure訂閱,則可以根據需要添加Microsoft Azure IaaS節點,以便在需要時增加群集容量
hpc pack 2012 - 2016重要功能更新
1.HPC Pack 2016支持計算節點工作組部署
2.HPC Pack 2012 R2 Update 2支持Azure linux計算節點部署
3.HPC Pack 2012 R2 Update 3支持本地linux計算節點部署
4.HPC Pack 2012 R2 Update 3 支持Windows計算節點的GPU
5.HPC Pack 2012 R2 Update 3 中Linux節點的管理和調度體驗類似于我們已經支持的Windows節點,可以看到Linux節點的熱圖,使用特定于Linux節點的cmdlet創建作業,監視作業,任務和節點狀態等,Linux節點開始支持便利的工具clusrun
hpc pack頭節點部署要求
操作系統:Windows Server 2016,Windows Server 2012 R2,頭節點必須加入域
SQL Server:默認情況下hpc pack會直接在頭節點本機安裝一個sql express,并自動配置數據庫,也可以使用遠程數據庫實例,支持數據庫群集或alwayson
.net framework:要求4.6.1或更高版本,Windows Server 2016自帶,Windows Server 2012 R2需單獨安裝,在HPC pack安裝文件DotNetFramework目錄有安裝包,2012R2安裝前還需按順序安裝KB2919442,KB2919355補丁
其它必備組件會由hpc pack自動安裝
hpc pack 數據庫列表
HPCManagement : 群集管理信息
HPCScheduler:作業調度
HPCReporting:群集報告
HPCDiagnostics:群集診斷
HPCMonitoring:群集監控數據
如需進行數據庫優化請參考鏈接,適用于hpc pack 2012 2012R2 2016
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/hh507109(v=ws.11)
微軟HPC群集網絡角色如下
企業網絡 | 企業組織網絡,用于連接到企業內部基礎架構服務器,如AD,并需要接入用戶網絡,用戶會將作業通過該網絡提交至頭節點,并且在某些情況下連接到群集中的其他節點,除非專用網絡和應用網絡也連接群集節點,否則所有群集內管理和部署流量都將在企業網絡中進行 | |
專用網絡 | 承載節點間群集內通信的專用網絡。如果不存在應用網絡,則專用網絡包含管理,部署和應用程序通信 | |
應用網絡 | 專用網絡,最好具有高帶寬和低延遲。此網絡通常僅用于群集節點之間的并行消息傳遞接口(MPI)應用程序通信。 |
詳細HPC網絡拓撲規劃請參考https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/ff919486(v=ws.11)
實作環境介紹
08dc :10.0.0.2 255.0.0.0
hpc-headnode
企業網絡10.0.0.9 255.0.0.0
專用網絡18.0.0.1 255.0.0.0
hpc pack 2016下載地址 https://www.microsoft.com/en-us/download/details.aspx?id=56360
下載完成后在頭節點打開如下,點擊新建安裝或將新功能添加到現有安裝
選擇安裝類型,我們第一次安裝選擇 創建頭節點,并創建新的HPC群集
如果針對頭節點進行了高可用部署,這里可以選擇高可用,我們這里只有一臺,所以選擇單頭
評估安裝規則
需要注意的是千萬不要自作聰明提前安裝WDS,否則這里會報錯
選擇數據庫部署模型,默認hpc pack 2016安裝的是sql server 2016 express,如果遠程部署則至少SQL 2008R2標準版或企業版
遠程部署SQL server參考 https://docs.microsoft.com/en-us/previous-versions/orphan-topics/ws.10/ee783551(v=ws.10)
證書這里,可以從導入設置中選擇新建一個自簽名證書
或者直接向AD申請一張允許導出密鑰的計算機證書,點擊瀏覽 hpc pack會識別到這張證書,這張證書被用做HPC pack各節點間通信安全,因此需導出一份帶密鑰的PFX,后期添加計算節點時需導入此證書
最后hpc pack會根據自帶的離線安裝包為頭節點安裝必備組件,這時候可以泡杯綠茶,等待所有選項變成綠勾
安裝完成必備組件后,提示輸入HPC群集連接串,這是HPC群集和高可用群集不一樣的地方,高可用群集我們是給一個邏輯的名稱,而HPC群集的對外連接始終是頭節點
點擊完成后會自動打開HPC Pack 2016群集管理器,在開始執行管理之前要完成部署任務
配置網絡拓撲,這里老王選擇企業和私有網絡上的所有節點,考慮到節點中可能會有加入域節點,因此老王設計每個節點兩個網絡,企業網絡,和專用的HPC網絡,但最終對外只發布管理節點企業網絡地址
配置完成如下,如果檢測到網卡支持RDMA Direct這里會顯示出來,建議為HPC網絡啟用RDMA,同時私有網絡配置部分,會在管理節點創建一個DHCP作用域,用于部署計算機節點時使用,該作用域為HPC網段
設置安裝節點賬戶,本地管理員權限即可
配置新節點命名規則,主要適用于通過HPC管理節點 批量部署時的計算節點名稱
三個必備任務完成后即可看到HPC群集完整內容,像極了SystemCenter 2007 2012時的UI
接下來還有一些可選配置的內容
為HPC群集添加管理員權限,通常建議在AD里面創建一個安全組,這個安全組的用戶可以對HPC群集具備資源管理,群集配置,報表查看,作業調度等權限
添加用戶權限,被添加的用戶,有權限通過客戶端應用程序,cmd,api,powershell,webportal向hpc群集提交作業,通常也建議使用組進行管理
配置作業調度器策略
配置作業電子郵件通知,實現作業開始結束使用郵件通知作業所有者
創建不同級別的節點組
創建作業模板,作業模板會作為用戶提交作業預約時顯示
限制作業運行時間,如果某一類型作業執行有時限限制,可以通過此處進行配置
設置該作業模板優先級,凡是通過這個作業模板創建的作業,作業優先級默認及最大可調整范圍
限制節點組,可以配置透過此模板創建的作業,僅允許在那些節點組運行
也可以針對于作業模板限定使用權限
為HPC群集開啟Web門戶,進入安裝bin目錄,輸入以下命令即可,腳本會自動幫助我們安裝IIS,配置HPC門戶所需內容
如果配置無誤,接下來可以通過訪問頭節點名稱/hpcportal路徑,打開HPC portal,打開網頁前會需要身份驗證,經過身份驗證的HPC用戶或管理員可以在portal上面在線提交作業,目前只有英文版
添加Windows計算節點
Windows計算節點系統要求
操作系統:Windows Server 2016,Windows Server 2012 R2,Windows Server 2012,Windows Server 2008 R2 SP1,支持域或工作組
.net framework:要求4.6.1或更高版本,Windows Server 2016自帶,Windows Server 2012 R2需單獨安裝,在HPC pack安裝文件DotNetFramework目錄有安裝包,2012R2安裝前還需按順序安裝KB2919442,KB2919355補丁
拷貝頭節點證書帶密鑰的pfx版本至計算節點
在windows計算節點上開啟HPC pack安裝向導,選擇創建新計算節點加入現有HPC群集
加入群集處輸入頭節點名稱,如果有多個頭節點,可以按照逗號隔開輸入
添加證書,并輸入證書密碼
向導自動為計算節點安裝必備組件
安裝完成后在頭節點群集管理器可以看到節點,當前為未批準狀態,在HPC群集中出于安全考慮,防止惡意添加的計算節點進來拷貝群集數據,每個被添加的計算節點,都必須經過管理員批準后方可加入群集
批準方法可以通過添加節點向導,或分配節點模板,節點模板的概念是指一組規范,凡是添加進來的節點,要選擇一種節點模板套入規范,才可以正常加入HPC群集
選擇節點模板后,HPC會自動根據我們的設置,為計算節點套入規范
當所有規范和設定都已經執行完畢,節點變成聯機狀態,這時候計算節點就可以正常運行作業
我們可以通過修改節點模板,配置當新加入節點時,需要執行那些操作
將計算節點添加到節點組
微軟HPC群集調度模型
在微軟HPC群集調度模型中分為作業和任務兩個概念,其中作業主要是指對高性能群集資源的預約,通常包括申請的處理器數目,運行作業所需要的節點組,計劃運行的時間
作業調度算法
在使用過程中我們可以通過API,CMD,Powershell,門戶,控制臺,對HPC群集提交作業,作業會被記錄至HPCScheduler數據庫,同時由頭節點將作業進行調度,提交作業相當于預定一個資源窗口,在作業包括的時間內可以完成所需要的任務,HPC群集頭節點負責維護一個作業隊列,如果調度器發現現有資源可以滿足隊列中的第一個作業最小需求,則將其取出投入運行,否則調度器不做任何工作
作業調度算法例外:當所有正在運行的作業表明了計劃運行時間,而當前的空余資源不夠隊列的第一個作業之最小需求時,可以從隊列找出最靠前的一個作業進行調度(backfill),其必須滿足
backfill作業也表明了計劃運行時間
backfill作業可以置入當前的空余資源
根據當前正在運行的作業可以計算出何時才能有足夠多的資源供隊列中第一個作業運行,該時間距現在的距離必須大于backfill的計劃運行時間
任務是描述需要完成的具體工作
HPC群集支持提交空作業,隨后為作業附加任務,但任務必須依賴于作業運行
每個任務只能使用該作業所分配到的資源來完成自己的工作
雖然作業是對應單個程序,但有些程序需要跨多個節點并行運行,所需在任務定義也需要指明最小和最大的資源需求
任務可以明確表明自己需要各節點組,如果有權限也可以直接指定專屬節點
任務需要提供程序在計算節點的啟動地址,工作目錄(工作目錄通常會選擇一臺存儲服務器映射至各計算節點相同網盤,用于存放程序文件),及啟動該程序所需要的參數
任務定義中可以指定對程序運行過程中的標準輸入,輸入出和錯誤流進行重定向
同一作業中的任務之間可以定義依賴關系
任務調度算法
如果某個任務所依賴的任務都已經被執行完畢或沒有任何依賴任務,則該任務進入無依賴狀態(調度器內部狀態)
每個作業中都維護一個任務隊列,當出現資源空余時,調度器將選擇最靠前的一個無依賴狀態并能夠被容納在該資源中的任務進行調度
微軟HPC群集功能支持
支持資源分組,默認采用節點組方式進行分組,也可以采用資源池方式進行資源分組
支持群集節點狀態,性能,日志監控
支持作業調度,任務調度,支持手動控制任務或作業執行
支持工作組節點作為計算能力
支持通過API/CMD/Powershell/Console/portal等方式提交作業
支持執行MPI,MS-MPI是為Windows開發的消息傳遞接口(MPI)的Microsoft實現,它允許MPI應用程序在HPC群集上作為任務運行
采用作業模板作為高性能計算群集服務質量限定,可以在作業模板中限定通過此模板執行的作業優先級,能夠使用的處理器,節點組,內存,以及能夠利用此作業模板申請作業的權限,管理員可以通過創建不同的作業模板,結合節點組,用戶組來對需要不同質量服務的用戶進行分類
采用節點模板作為添加節點基線,通過配置節點模板,讓各新添加的節點符合基線后加入高性能群集,也可以通過在節點模板中封裝操作系統 驅動 軟件,實現通過頭節點PXE批量引導部署計算節點
和微軟其它組件整合,利用Exchange服務器作為郵件通知,利用SCOM,OMS作為群集監控,利用×××S/SSAS/PowerBI配置分析報表,頭節點支持WSFC部署,數據庫支持Always On或WSFC部署,計算節點支持Azure Paas或Iaas方式部署,授權可以使用AD或AzureAD,任務工作目錄可以是映射到各結算節點的NFS/SMB網盤,背后可以來自于S2D,傳統文件服務器群集或經過2016存儲復制的UNC路徑。
微軟HPC群集可以提交的作業類型
MPI作業:可以選擇新建作業或新建單任務作業來創建MPI作業,對于運行MPI應用程序的任務,任務命令必須以mpiexec開頭:因此,并行任務命令必須采用以下格式:mpiexec [mpi_options] <myapp.exe> [arguments],其中myapp.exe是要運行的應用程序的名稱,對于并行任務,Windows HPC Server 2008開始包含基于阿貢國家實驗室MPICH2標準的MPI軟件包。微軟的MPI實現(稱為MS-MPI)包括啟動程序mpiexec,每個節點的MPI服務以及用于開發用戶應用程序的軟件開發工具包(SDK)
參數掃描作業:
參數化掃描作業由同一應用程序的多個實例組成,通常是串行應用程序,并行運行,輸入由輸入文件提供,輸出指向輸出文件。輸入和輸出通常是一組索引文件(例如,input1,input2,input3 ...,output1,output2,output3 ...),它們設置為位于單個公用文件夾或單獨的公用文件夾中。任務之間沒有溝通或相互依存關系。這些任務可能并行也可能不會并行運行,具體取決于作業運行時群集上可用的資源。
任務流程作業
在任務流作業中,一組不同的任務按照規定的順序運行,通常是因為一個任務取決于另一個任務的結果。作業可以包含許多任務,其中一些是參數化的,一些是串行的,還有一些是并行的。例如,您可以創建一個由MPI和參數化任務組成的任務流作業。您可以通過定義任務之間的依賴關系來確定運行任務的順序。
下圖說明了任務流作業:
任務1首先運行。請注意,只有任務2和3可以并行運行,因為兩者都不依賴于另一個。任務4在任務2和3都完成后運行。
SOA工作作業
面向服務的體系結構(SOA)是構建分布式,松散耦合系統的一種方法。在SOA系統中,不同的計算功能被打包為稱為服務的軟件模塊。服務可以分布在整個網絡上并由其他應用程序訪問。例如,如果應用程序執行重復的并行計算,則核心計算可以打包為服務并部署到群集。這使開發人員能夠解決令人尷尬的并行問題,而無需重寫低級代碼并快速擴展應用程序。通過在多個服務主機(計算節點)之間分配核心計算,應用程序可以更快運行 最終用戶在他們的計算機上運行應用程序,群集節點執行計算。
甲客戶端應用程序提供了一種用于最終用戶訪問的一個或多個服務的功能的接口。開發人員可以創建群集SOA客戶端應用程序,以提供對部署到Windows HPC群集的服務的訪問。在后端,客戶端應用程序向群集提交包含服務任務的作業,啟動與代理節點的會話,并發送服務請求并接收響應(計算結果)。根據作業調度策略,頭節點上的作業調度器將資源分配給服務作業。服務任務的一個實例在每個分配的資源上運行并加載SOA服務。作業調度程序嘗試根據服務請求的數量調整資源分配。
如果客戶端創建了持久會話,則代理使用MSMQ存儲所有消息。客戶端隨時可以檢索代理存儲的回復,即使在有意或無意斷開連接后
下圖說明了SOA作業在微軟HPC群集上的運行方式:
Microsoft Excel計算卸載
包含在HPC Pack的某些版本中的HPC Services for Excel支持許多用于將Excel計算卸載到HPC Pack群集的模型。適用于群集加速的工作簿包括可以并行運行的獨立計算。許多復雜和長時間運行的工作簿都是迭代運行的 - 也就是說,它們在不同的輸入數據集上多次執行單個計算。這些工作簿可能包含復雜的Microsoft Visual Basic for Applications(VBA)函數或計算密集型XLL加載項。HPC Services for Excel支持將工作簿卸載到群集,或將UDF卸載到群集。
通過使Excel 2010 UDF能夠在Windows HPC群集中運行,Microsoft Excel 2010將UDF模型擴展到群集。當受支持的群集可用時,用戶可以通過選擇群集連接器并在“ Excel選項”對話框的“ 高級”選項中指定群集名稱來指示Excel 2010使用該群集。在群集中,UDF的工作方式與傳統UDF非常相似,只是計算由一臺或多臺服務器執行。關鍵的好處是并行化。如果工作簿包含對長時間運行的UDF的調用,則可以使用多個服務器同時評估函數。為了在群集上運行,UDF必須包含在群集安全的XLL文件中
微軟HPC群集可以提交的任務類型
基本:運行串行應用程序或消息傳遞接口(MPI)應用程序的單個實例。MPI應用程序通常在多個核心上并發運行,并且可以跨越多個節點
參數掃描:通常在索引輸入和輸出文件中運行指定次數的命令(以開始,結束和增量值表示)。掃描的步驟可能并行也可能不同步,具體取決于任務運行時群集上可用的資源。
節點準備:即使在動態添加節點(增長策略)時,也會在每個計算節點分配給作業時運行命令或腳本。該節點準備任務在工作的任何其他任務前的節點上運行。
如果節點準備任務無法在節點上運行,那么該節點將不會添加到作業中。
節點釋放:
即使在節點被動態刪除(收縮策略)時,也可以在每個節點計算每個節點時運行命令或腳本,因為它是從作業中釋放的。
節點發布任務的最長運行時間(以秒為單位)由具有NodeReleaseTaskTimeout群集參數的群集管理員定義。您無法覆蓋此運行時間限制。默認情況下,超時設置為15秒。要查看此群集參數的值,可以運行以下命令(搜索字符串區分大小寫):cluscfg listparams | find“NodeReleaseTaskTimeout”
節點發布任務在作業被取消時運行。強制取消作業時節點發布任務不運行。
如果作業有最大運行時間和節點發布任務,則作業計劃程序將在作業的運行時間到期(作業運行時間減去節點發布任務運行時間)之前取消作業中的其他任務。這允許節點發布任務在分配的作業時間內運行。
服務:
在分配給作業的所有資源上運行命令或服務。將新資源添加到作業時,或者如果先前正在運行的實例退出并且運行的資源仍然分配給作業,則該命令的新實例會運行。服務任務將繼續啟動實例,直到作業被取消或停止,最大運行時間到期或達到最大實例數(子任務)為止。
通過面向服務的體系結構(SOA)客戶端提交的任務作為服務任務運行。
您不能將基本任務或參數掃描任務添加到包含服務任務的作業
定義作業或任務后,可以將作業或任務規范導出到XML文件,下次可以直接從XML導入作業或任務
微軟HPC群集作業及任務狀態
(實際顯示中文,使用英文解釋名稱更為準確)
Configuring:作業或任務在系統中,但尚未提交到隊列中。
Submitted:作業或任務已經提交并且正在等待驗證,然后才能排隊
Validating:HPC作業計劃程序服務正在驗證作業或任務。在驗證過程中,HPC作業計劃程序服務確認權限,為作業所有者未指定的任何屬性應用默認設置,并根據約束驗證每個屬性。默認設置和約束由作業模板定義。HPC作業計劃程序服務還確認作業屬性包含所有任務屬性(例如,沒有任務的運行時間的值大于作業的運行時間)。
在驗證過程中,作業也可能會通過群集管理員定義的自定義提交篩選器應用程序。
如果作業通過驗證,則會移至隊列狀態。如果作業未通過驗證,則作業顯示錯誤消息,作業將轉至失敗狀態。
Queued:作業或任務已通過驗證,正在等待安排并激活(運行),當正在運行的作業,基本任務或參數掃描子任務被HPC作業計劃程序服務搶占時,它將移回隊列狀態(除非該任務不可重新運行,在這種情況下,它將標記為失敗)。
Dispatching:此狀態僅適用于任務。HPC作業計劃程序服務已將資源分配給該任務,并正在聯系分配的節點以開始運行該任務。當任務開始時,它將轉到運行狀態。
Running:作業或任務正在一個或多個節點上運行
Finishing:工作或任務已完成,工作或任務清理正在進行中
Finished:工作或任務已成功完成。
Failed:工作或任務已成功完成。作業或任務未能完成,停止運行或返回指示失敗的退出代碼(默認情況下為非零退出代碼)。此外,正在運行的任務在以下情況下標記為失敗:
作業所有者或群集管理員取消該任務。
HPC作業計劃程序服務取消了一項任務,因為它已超過其最大運行時間。
HPC作業計劃程序服務搶占未標記為可重新運行的任務。
HPC作業計劃程序服務搶先啟動以每個資源為基礎啟動的子任務(節點準備,節點發布和服務子任務)。
如果某個作業或任務由于群集故障而無法啟動,則該作業或任務會在標記為失敗之前自動重試指定次數。
Canceling:工作或任務被取消,清理工作正在進行中
Canceled:作業已被作業所有者,群集管理員或HPC作業計劃程序服務取消。例如,HPC作業計劃程序服務可以取消作業,如果超過其運行時或作業被搶占。作業所有者或群集管理員在開始運行之前已取消該任務。如果正在運行的任務被取消,則該任務被標記為失敗。
用戶通過客戶端提交作業
HPC pack 2016 客戶端安裝需求
操作系統:Windows Server 2016,Windows Server 2012 R2,Windows Server 2012,Windows Server 2008 R2 SP1,Windows 10,Windows 8.1,Windows 8,Windows 7 SP1,支持加入域客戶端或工作組
.net framework:要求4.6.1或更高版本,Windows Server 2016,Windows 10 自帶,其它操作系統需單獨安裝,在HPC pack安裝文件DotNetFramework目錄有安裝包,win8,2012R2安裝前還需按順序安裝KB2919442,KB2919355補丁,win7sp1,2008R2sp1不需要安裝補丁
拷貝安裝文件包至客戶端,或放在網絡路徑,開啟安裝向導,選擇僅安裝客戶端實用工具
安裝完成后可以在客戶端看到hpc powershell ,hpc 群集管理器, hpc job manager,點擊job manager連接到頭節點
打開作業管理界面,用戶可以在這里將作業提交到高性能群集
權限判定以當前登錄用戶,或runas用戶為準
經過老王測試,目前HPC pack的客戶端如果希望連接到服務器需加入域才可以,客戶端如果未加入域,打開job manager連接到頭節點不會成功,如果實在不想每臺作業客戶端都加入域,可以考慮將一臺Server作為網關節點,安裝RDSH與HPC pack客戶端,把這臺機器上面的hpc pack console作為app發布到remoteapp或xenapp解決方案,或工作組客戶端直接使用portal,cmd,powershell,api等方式提交作業
本文篇幅有限,老王這里僅做拋磚引玉,并不為大家進行各個作業的創建演示,感興趣的朋友可以參考鏈接,自己動手創建作業和任務
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/ff919653(v%3dws.11)
HPC群集管理器實用功能
批量選擇節點,運行命令,按照節點輸出結果
批量選擇節點運行診斷,診斷包含SOA,MPI,Azure節點等自帶測試項目
總結:通過本文老王為大家介紹了高性能計算概念,微軟對于高性能計算的解決方案,產品的介紹,概念,群集創建,以及群集常用設置,一遍走下來看,老王認為微軟的HPC群集雖然可能在業界并不是性能最好的,但是它也有它的優勢,例如和自身產品整合密切,不需要安裝多個功能實現HPC,只需要安裝一個hpc pack即可,HPC該有的功能相對完備,如果不擅長linux命令的朋友,也可以嘗試下使用微軟GUI的方式構建HPC群集,希望可以為感興趣的朋友帶來收獲,如果有問題歡迎與老王交流
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。