摘要:提出了一個并行計算程序的遠程實時可視化系統。通過實時可視化處理計算程序在計算過程中輸出的數據文件,實現了對計算程序計算過程的可視化跟蹤和實時分析;同時該系統采用GOS作為網格中間件,屏蔽了復雜的異構環境。
關鍵詞:網格計算; GOS; 實時跟蹤; 并行計算; 可視化
中圖分類號:TP316.2文獻標志碼:A
文章編號:1001-3695(2007)11-0178-02
0引言
可視化作為分析數值計算結果的關鍵手段,已經成為高性能計算不可缺少的組成部分[1]。實時可視化可以動態觀察并行程序的運行狀態,實時分析計算結果,從而達到對計算過程的實時跟蹤,這有助于科研人員觀察其研究的動態信息;同時還可以節約寶貴的高性能計算資源,若計算過程中通過可視化分析出計算不合理,可以終止計算。
想要達到對計算中間過程進行實時可視化的目的,首先必須獲得計算過程的中間數據。中間數據的獲取方式分為兩種,從內存直接獲取以及從中間數據文件獲取。表1列出了兩種數據獲取方式各自的優缺點。
國內對計算中間過程的實時可視化的研究才剛剛起步。目前北京應用物理與計算數學研究所實現了一個并行應用程序的遠程實時跟蹤可視化系統[2]。此系統采用的是表1中的第一種方式——從內存直接獲取,使用了美國Argonne 實驗室研制開發的AMS軟件包。AMS是一個用來編寫對計算程序進行監視和調試的應用程序接口軟件包,采用C/S結構。利用AMS可以使客戶應用程序與運行中的計算程序進行連接,訪問并修改計算程序中的變量。當不能修改計算程序的源代碼時(如用戶不愿意修改源代碼,或是使用的是商業軟件時),這種數據獲取方式就無能為力了。
考慮到中國科學院計算機網絡信息中心的超級計算機深騰6800和可視化服務器SGI Onyx350共享磁盤陣列的優勢,本文采用第二種數據獲取方式,既可以免去大量數據通信造成的網絡負擔,又不用修改原有的計算程序,而且能夠完全勝任對產生時序數據場的計算程序進行中間過程的可視化跟蹤。至于不能駕馭控制計算程序的缺點,則可以利用網格系統提供的計算作業狀態查詢與控制功能來完成對計算程序的控制,如開始、暫停、停止等操作。
1系統設計與實現
1.1設計目標
a)分布式遠程可視化。數值模擬并行程序運行在遠程的超級計算機上,可視化服務器端程序運行在遠程高性能的可視化服務器上。
b)易用性。屏蔽復雜的異構環境,用戶不需要關心計算程序和可視化程序運行在哪臺機器上,也不需要在本地安裝特殊的客戶端程序,只需登錄網絡計算portal,提交計算作業后即可使用系統。
c)實時性。
系統能實時獲取計算程序最新的計算結果數據。
1.2系統結構
如圖1所示,系統主要由網格支持模塊、客戶端、框架服務器和可視化模塊四個部分組成。
1)網格支持模塊
網格支持模塊是整個系統的基礎。本文采用由中國科學院計算所開發的GOS v2[3]作為網格中間件。GOS v2工具包集成了很多常用的軟件,如JSDK、jakarta-tomcat-5.0.28、Apache Axis 1.2RC2等。國家網格(China Grid)使用的正是該網格中間件。直接利用它的功能來實現用戶管理、資源管理和任務管理。用戶管理服務負責用戶認證;資源管理服務負責資源注冊、資源分配等;任務管理服務負責對作業提交、調度、監控等。網格支持模塊的這三個服務實現了對異構環境的屏蔽,保障了系統的易用性。
2)客戶端
客戶端實際上是指用戶所使用的基于Web的網格portal。與其他可視化軟件或服務有所不同的是,中間過程可視化跟蹤不是簡單的數據后處理可視化,而是需要實時跟蹤計算程序的中間數據文件。顯然無論是基于HTML的表單方式還是JavaScript均無法滿足交互性和實時性的要求。本文采用運行于瀏覽器中的Java applet作為客戶端,既可以滿足靈活控制和實時交互的要求,又不需要另外安裝軟件。用于可視化跟蹤的Java applet是與網格portal配合使用完成計算任務的提交、查詢和可視化跟蹤的。
3)框架服務器
圖1中的磁盤陣列為超級計算機深騰6800和可視化服務器SGI Onyx350所共享。只要計算程序生成的中間數據文件存儲在磁盤陣列上,就可以被框架服務器訪問到,該設計正是利用了這個便利之處。
框架服務器[4]運行在可視化服務器SGI Onyx350上,在整個解決方案中處于核心的位置,它負責響應客戶端的可視化跟蹤請求(請求信息主要包括計算程序產生的中間數據文件在共享磁盤陣列上的路徑),檢查最新的中間數據文件并進行數據預處理,調用可視化模塊執行可視化任務;同時即時地把可視化結果返回客戶端。
4)可視化模塊
可視化模塊是真正完成可視化任務的部分,其運行在SGI Onyx350上,作為一個組件由框架服務器調度。它相對獨立,可以由OpenGL、VTK、IDL、AVS/Express等開發而得。本系統實現中的可視化服務模塊是基于AVS/Express開發的,充分利用商業軟件AVS/Express開發版的強大功能,開發出等值線/面、切片和體繪制等一些通用的可視化功能。
以上的幾大部分協同工作才能完成實時可視化的任務。當選擇了需要可視化跟蹤的作業后,首先要查詢作業的當前狀態:當作業已經運行完畢時,只需要簡單地將作業產生的時序數據場可視化出來即可;當作業正處于運行狀態時,則可視化服務器啟動中間數據文件掃描程序,實時監視中間數據文件的更新情況,并以當前最新的數據進行可視化工作。
2應用實例
本系統是從中間數據文件獲取可視化數據的方式。目前的并行計算程序基本上都是通過MPI (message passing inter ̄face)實現的。MPI的兩種最基本的并行程序設計模式分別為主從模式和對等模式,大部分MPI程序都是這兩種模式之一或者兩者的組合。從中間數據文件的保存角度來看,各種計算程序也是有所不同的,大體分為兩種:
a)計算的主節點負責文件的寫入,一個時刻的中間數據寫入一個文件并且是一次性寫完。目前網絡中心的深騰6800上的計算大多如此,如MM5、有限元和流體力學方面的一些應用。這些計算程序產生的數據為時序數據場,即按照一定的時間步長來產生數據。
b)每個計算節點各自保存計算出來的數據,中間數據文件分布在不同的節點。
本文的實時可視化跟蹤系統適合第一種類型的計算程序,因為超級計算中心的計算大多都屬于這種類型。筆者采用在深騰6800上運行的一個有限元計算程序lws作為應用實例。該計算程序產生的是時序數據場,計算網格為128×128×128,一個頂點矢量(x,y,z方向的位移),處理器個數為8,大致每三分鐘輸出一個數據文件(大小為50 MB)。可視化方法是將其三個標量取模,觀察其受外力作用所產成的形變情況。
用戶首先登錄網格portal,提交有限元計算程序;然后查詢歷史作業狀態。如果看到作業“正在運行”的狀態,點擊跟蹤按鈕進入基于Java applet交互式操作界面。點擊跟蹤按鈕的同時,系統自動向數據庫查詢中間數據文件的路徑,并向框架服務器啟動跟蹤服務請求。圖2是可視化跟蹤該有限元計算程序的界面以及某時刻的形變可視化結果。
3結束語
本文把可視化技術和網格技術相結合,提供了一個易用的遠程實時可視化系統,實現對并行計算程序的實時跟蹤。但是該系統還有很多需要完善的地方,如提供高效的數據管理、提高數據讀取的效率等。
參考文獻:
[1]KNISS J, McCORMICK P, McPHERSON A,et al. Interactive texture-based volume rendering for large data sets[J]. IEEE Computer Graphics and Applications, 2001,21(4):52-61.
[2]金其杰,王弘,肖麗. 并行應用程序的遠程實時跟蹤可視化系統的設計及實現[J]. 計算機研究與發展,2004,41(5):853-860.
[3]XU Zhi-wei, LI Wei, ZHA Li,et al. A computer systems approach to grid computing[J]. Journal of Grid Computing,2004,2(2):109-120.
[4]SHAN Gui-hua, CHI Xue-bin, LIU Jun, et al. ScVisGrid: a remote visualization environment in grid computing[C]//Proc of DCABES and ICPACE Joint Conference on Distributed Algorithms for Science and Engineering. London:[s.n.], 2005:223-226.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”