有幾位讀者在之前的高效能運算文章上留言,表示這個話題離主流開發人員太遠。其實微軟的DNA就是將複雜的東西變得簡單,把給少數人群使用的能力傳播給大多數人。因此節選了《微軟高效能運算伺服器》”第三章 使用作業調度系統“中兩個實際操作章節與各位部落格園的讀者共用,祝大家周末愉快!
作業調度系統提供了許多作業提交和管理的方式。通過友好的介面,使用者可以方便地提交和管理作業。通過應用編程介面,第三方軟體商可以實現與作業調度器無縫整合。通過指令碼和PowerShell功能,管理員可以編寫各種方便終端使用者運行應用的指令檔。
本章要點
- 理解工作管理員的概念和使用原則
- 使用使用者介面、C#應用介面、命令列和強大指令碼提交作業
- 使用使用者介面監控應用運行情況
3.1 作業調度系統概念
叢集是Windows HPC Server 2008 R2的頂級單位。一個叢集包含下列元素。
- 節點:具有一個或多個處理器的單一物理或邏輯電腦。節點可以是前端節點、計算節點或 WCF Broker節點。
- 隊列:提供排隊和作業調度功能的元素。每個 Windows HPC Server 2008 R2叢集都只包含一個隊列,且該隊列包含掛起的作業。已完成的作業將從隊列中定期清除。
- 作業:由使用者啟動的一組任務。作業用於保留資源以供隨後的一個或多個任務使用。
- 任務:是指在給定的計算節點上執行的程式。其可以是串列程式(單一進程)或並行程式(使用多線程、訊息傳遞介面 [MPI] 或 OpenMP)。
作業發送器用於對作業及其任務排隊。它為這些作業分配資源,啟動叢集計算節點上的任務,監視作業、任務和計算節點的狀態。
3.2 安裝應用
博主註:本書附帶光碟片為Windows HPC Server 2008 R2試用軟體安裝盤,可為讀者提供180天的免費試用。此處安裝順序略去。
3.3 提交作業
第2章介紹了作業提交有多種方式。本章詳細介紹3種方式:使用工作管理員;使用命令列和PowerShell;使用C#程式。
3.3.1 使用工作管理員
(1)開始-〉所有程式→Microsoft HPC Server 2008 R2→HPC Job Manager。
(2)在“操作”方框下,單擊“建立參數掃描工作”,彈出“建立參數掃描工作”對話方塊,3-2所示。
圖3‑2 建立參數掃描任務
(3)在“任務名”文字框中,鍵入作業的名稱“AsianOptions Valuation by Interest Rate”。
在“步驟1”中,鍵入起始值為“0”,最終值為“9”。
在“步驟3”中,鍵入命令列“AsianOptions.exe 1.0*”。
在“工作目錄”文字框內,鍵入“\\<headnode>\Applications”(將<headnode>替換成您的前端節點名)。
(4)預覽參數清除任務。如果任務不是3-3所示,請變更,並再次預覽。
圖3‑3 設定命令列、工作目錄
注意: 設定任務訪問必需資料的方式是在作業提交時獲得最佳任務效能的一項重要因素。該設定應隨資料集的大小和穩定性而異。如果資料集不會經常更改且相對較大,則應將其設定為任務的本機資料。如果資料集較小,可通過檔案分享權限設定方式訪問。如果資料集很大且會經常更改,則需將資料傳送到節點。Windows HPC Server 2008 R2 支援並行和高效能的檔案系統來提高對非常大的資料集的訪問效能。通過指定工作目錄,小型和中等資料集的使用者將獲得最佳的即用即取的體驗。當任務開始時,計算節點將看到此工作目錄中的所有檔案並可正確處理該任務。 |
(5)單擊“提交”按鈕。此時,使用者回到了工作管理員。 在所有作業列表內,您會看到作業正在運行。等幾秒鐘後,作業結束,3-4所示。
圖3‑4 監控參數掃描工作
(6)在任務標籤下,雙擊3-4所示的“任務1.1-1.10”,彈出“查看作業”對話方塊,3-5所示。上面是所有的10個任務的列表。當選擇一個任務的時候,可以看見計算結果在“輸出”的文字框內,比如,如果選第四個任務,會看到如下的輸出:“Option Price / interest rate (1.03) = 9.15572854540851”(注意:結果不一定完全一致,因為這裡採用的是蒙特卡羅演算法,結果有隨機性),3-5所示。
圖3‑5 查看參數掃描任務細節
3.3.2 使用作業調度器命令列程式
(1)啟動命令提示字元。
(2)鍵入“job submit /parametric:0-9 /workdir:\\shpc-0110\Applications AsianOptions.exe 1.0*”。此命令將輸出作業的ID,3-6所示。
圖3‑6 使用命令列提交參數掃描工作
(3)監控作業狀態:在命令提示字元視窗裡鍵入“job view 33”,結果3-7所示。
圖3‑7 使用命令列監控作業
(4)顯示某任務輸出結果:在命令提示字元視窗裡鍵入“task view 33.1.<參數掃描序號>”。例如,看第四個任務輸出,鍵入“task view 33.1.4”,按斷行符號鍵,結果3-8所示。
圖3‑8 使用命令列顯示輸出結果
3.3.3 使用Powershell
(1)啟動HPC PowerShell:選擇“開始-〉所有程式→Microsoft HPC Pack 2008 R2→HPC PowerShell”。
(2)在HPC PowerShell提示符下,鍵入“New-HpcJob”,按斷行符號鍵,結果3-9所示。
圖3‑9 使用PowerShell建立作業
(3)然後,鍵入“Add-HpcTask -JobId 35 -Parametric -Start 0 -End 9 -WorkDir \\shpc-0110\Applications -CommandLine "AsianOptions.exe 1.0*”,按斷行符號鍵,結果3-10所示。
圖3‑10 使用PowerShell新增工作
(4)鍵入“Submit-HpcJob -Id 35”,按斷行符號鍵,結果3-11所示。
圖3‑11 使用PowerShell提交作業
(5)監控作業狀態:鍵入“Get-HpcJob –Id 35”,按斷行符號鍵,結果3-12所示。
圖3‑12 使用PowerShell監控作業
(6)顯示任務結果輸出:為顯示第四個任務的結果,鍵入“Get-HpcTask -JobId 35 -TaskId 1 -SubTaskId 4 |fl”,按斷行符號鍵,結果3-13所示。
圖3‑13 使用PowerShell顯示作業輸出結果
使用命令列和Powershell小結
作業調度器命令列和PowerShell使用小結如表3-1所示
表 3‑1 作業調度器命令列和Powershell使用小結
操作 |
命令列 |
PowerShell |
建立和提交作業 |
Job submit |
New-HpcJob, Add-HpcTask, Submit-HpcJob |
顯示活躍(等待和運行)狀態下列表 |
Job list |
Get-HpcJob |
顯示所有狀態下的作業列表 |
Job list /all |
Get-HpcJob –Owner * -State All |
顯示一個作業的細節 |
Job view <JobID> |
Get-HpcJob –Id <JobID> |
顯示一個作業所有的任務 |
Job listtasks <JobID> |
Get-HpcTask –JobId <JobID> |
顯示一個參數掃描任務的細節 |
Task view <JobID>.<TaskID>.<SubTaskId> |
Get-HpcTask –JobId <JobID> -TaskId <TaskID> -SubTaskId <SubTaskId> | fl Cls |