曹榮強,王小寧,盧莎莎,解曉偉,肖海力
中國科學院計算機網(wǎng)絡(luò)信息中心,北京 100190
·技術(shù)?/?TECHNOLOGY·
基于 Portlet 的高性能計算應(yīng)用集成組件
曹榮強*,王小寧,盧莎莎,解曉偉,肖海力
中國科學院計算機網(wǎng)絡(luò)信息中心,北京 100190
高性能計算 Web 應(yīng)用社區(qū)經(jīng)常需要封裝不同類型的應(yīng)用,封裝過程需開發(fā)或調(diào)整源代碼。因此,社區(qū)管理員不能快速滿足應(yīng)用封裝需求,特別是作業(yè)參數(shù)相對復雜的應(yīng)用。通過分析不同作業(yè)管理系統(tǒng)的作業(yè)提交和管理命令、不同學科領(lǐng)域的高性能計算應(yīng)用程序的使用方式、通用作業(yè)描述語言的結(jié)構(gòu)和語義,本文提出了一種基于 portlet 的高性能計算應(yīng)用集成組件,設(shè)計和實現(xiàn)了應(yīng)用需求描述模板、作業(yè)提交頁面動態(tài)渲染引擎、作業(yè)參數(shù)存儲和填充方法,從而提供了基于 WEB 頁面的應(yīng)用封裝、動態(tài)生成作業(yè)提交 Web頁面和作業(yè)描述并提交作業(yè)的功能,并且支持以歷史作業(yè)的輸入數(shù)據(jù)填充作業(yè)提交頁面的功能。分析及實例表明,該組件能夠有效提高應(yīng)用封裝的響應(yīng)速度,用戶能夠方便的提交作業(yè)和重用復雜的作業(yè)參數(shù),具有良好的可移植性和擴展性。
高性能計算;應(yīng)用封裝;作業(yè)提交和管理,參數(shù)填充;計算網(wǎng)關(guān)
隨著信息化社會的飛速發(fā)展,高性能計算 (High-Performance Computing,HPC) 已經(jīng)成為繼理論科學和實驗科學之后科學研究的第三大支柱,廣泛應(yīng)用于科學研究、工程計算、事務(wù)處理等方面[1]。網(wǎng)格計算和云計算通過整合計算機群、超級計算機、存儲和網(wǎng)絡(luò)等資源,聚合強大的計算能力,降低科學計算的門檻,促進高性能計算資源的共享,從而讓更多的用戶能夠使用高性能計算服務(wù)。
高性能計算任務(wù)一般具有并行規(guī)模大、計算時間長、對網(wǎng)絡(luò)通信和存儲有較高要求等特點,以批處理作業(yè)的方式完成計算任務(wù),從任務(wù)開始運行直到結(jié)束的過程,用戶沒有交互操作。高性能計算主要有圖形用戶界面 (Graphical Usor Interface,GUI)、命令行和Web Portal 等三種使用方式。其中,GUI 方式在界面友好性、功能完善性和響應(yīng)速度等方面有優(yōu)勢,但需要在用戶的計算機上安裝軟件。命令行方式具有功能全面、操作方式靈活多變的特點,但由于多種作業(yè)調(diào)度系統(tǒng)并存的局面導致多種風格的作業(yè)管理命令,學習和掌握這些操作命令是使用 HPC 的前提條件,提高了使用 HPC 的門檻。
基于 Web Portal 的 HPC 使用方式結(jié)合了前兩種方式的優(yōu)點,用戶在WEB圖形界面上完成作業(yè)提交和管理功能,由于其簡單易用性已經(jīng)成為當前HPC使用方式的潮流,如中科院科學計算環(huán)境[2-3]、中國國家高性能計算環(huán)境[4-5]、美國TeraGrid Portal群[6]及其后續(xù)項目 (eXtreme Science and Engineering Discovery Environment) XSEDE[7]。這些計算網(wǎng)關(guān)提供了從用戶管理、作業(yè)管理到數(shù)據(jù)傳輸?shù)榷鄠€方面的功能,提供了用戶友好、易用的圖形化交互界面,而且由于Web 服務(wù)的廣泛應(yīng)用,天然具有跨平臺的特性。然而,這些高性能計算網(wǎng)站并沒有著重考慮管理員如何快速滿足不同學科領(lǐng)域應(yīng)用封裝的需求,以及用戶如何再次使用復雜作業(yè)的輸入?yún)?shù)提交新計算任務(wù)的需求。因此,本文提出基于 Portlet 的高性能計算應(yīng)用集成組件,重點解決應(yīng)用封裝和復雜作業(yè)參數(shù)重用的問題。
本文剩余部分安排如下,相關(guān)工作部分主要描述高性能計算的使用流程,國內(nèi)外在應(yīng)用封裝方面的已有工作;技術(shù)路線部分主要討論作業(yè)管理系統(tǒng)、不同學科領(lǐng)域應(yīng)用軟件的使用方法及作業(yè)描述語言的語義和結(jié)構(gòu),在此基礎(chǔ)上提出 (High-Performance Computing Applications Integration Toolkits) HPC-AIT 的技術(shù)路線圖;第3 節(jié)給出 HPC-AIT 的框架結(jié)構(gòu),并描述不同模塊的功能;第4 節(jié)重點論述應(yīng)用封裝服務(wù),包括應(yīng)用描述模板和 Portlet 組件的設(shè)計;第5 節(jié)討論作業(yè)提交服務(wù),包括渲染引擎、作業(yè)提交頁面生成、復雜作業(yè)提交參數(shù)重用等功能;第6 部分描述系統(tǒng)部署和實例,并進行分析討論;最后是小結(jié)及進一步工作。
因為批處理任務(wù)的特性,高性能計算的使用流程與普通個人計算機有很多不同點。在處理計算任務(wù)時,首先要按照計算環(huán)境指定的方式描述作業(yè)的各種參數(shù)和輸入文件,不同學科領(lǐng)域的應(yīng)用軟件,要求的參數(shù)和輸入數(shù)據(jù)各不相同。然后,根據(jù)作業(yè)管理系統(tǒng)命令格式的要求,組織數(shù)據(jù)并將計算任務(wù)提交到計算環(huán)境。此后,可在計算環(huán)境中管理作業(yè),如查看作業(yè)狀態(tài),掛起和終止作業(yè),獲取計算結(jié)果等操作。
然而,普通的使用流程要求用戶學習不同操作系統(tǒng)的使用方式和作業(yè)管理系統(tǒng)的相關(guān)命令,提高了用戶使用的門檻?;?Web 的方式提供了簡單易用的圖形化交互界面,但必須解決不同學科領(lǐng)域應(yīng)用封裝的問題或者作業(yè)提交頁面快速動態(tài)生成的問題。因此,應(yīng)用集成的目標是提供友好易用的應(yīng)用封裝和作業(yè)提交接口,降低應(yīng)用封裝的難度,提高作業(yè)提交的效率。國內(nèi)外已經(jīng)有多篇文章或開源軟件在應(yīng)用封裝方面實現(xiàn)了卓有成效的工作。
HPC-APT (HPC- Application Packaging Template)是面向科研和工程等領(lǐng)域的高性能計算應(yīng)用的封裝技術(shù),能夠生成 WEB 頁面和 GUI 界面[8]。該方式基于XML 描述應(yīng)用的信息,支持多種類型的應(yīng)用,具有很好的通用性;但需要編寫封裝腳本,封裝組件也難于移植到其它的終端軟件或計算網(wǎng)關(guān)。
基于 Portlet 的計算網(wǎng)關(guān)也是一種比較流行的應(yīng)用集成方式。Portlet 的重要規(guī)范標準 (Java Speci fication Request) JSR-168[9]規(guī)范了 Portlet 的運行環(huán)境、容器和 Portlet 間的 API、數(shù)據(jù)存儲機制、部署和移植等方面的重要內(nèi)容,經(jīng)過多年的實踐驗證,已經(jīng)得到了開源軟件和商業(yè)軟件的廣泛支持,如 Gridsphere[18]、WebSphere[22],Liferay[23],Apache Pluto[24]等,因此,基于 Portlet 的應(yīng)用集成有較好的可移植性。
Grid Portlets 在應(yīng)用集成方面提供了通用接口的應(yīng)用 Portlet[10]。OGCE (Open Gateway Computing Environments) 開發(fā)了兼容 JSR-168 標準的 Velocity Portlet 工具[11],它調(diào)用 Apache Velocity[12]動態(tài)引擎實現(xiàn)渲染功能,標記片斷中的表達式能夠訪問上下文映射對象的屬性和方法,實現(xiàn)模型、視圖和控制MVC (Model-View-Controller) 的分離。USGPA (Usercentric and Secure Grid Portal Architecture) 提出了一種基于Portlet的應(yīng)用封裝模型,每個應(yīng)用的封裝都是該模型的一個實例,實現(xiàn)應(yīng)用的個性化封裝和定制[13],但新應(yīng)用的封裝過程需要修改客戶端的多個腳本,易用性問題仍需要進一步解決。
此外,對于提交參數(shù)復雜的應(yīng)用程序,如何進行參數(shù)重用也是應(yīng)用封裝時必須考慮的問題。傳統(tǒng)的命令行提供了根據(jù)命令歷史記錄重用復雜的作業(yè)提交參數(shù)的便捷方式。然而,命令行方式不僅要求用戶掌握一定的操作系統(tǒng)和作業(yè)管理系統(tǒng)的知識,而且第一次設(shè)定復雜參數(shù)時,用戶必須具備豐富的經(jīng)驗或者經(jīng)歷困難的調(diào)試過程。
Grid Portlets 提供了一個基于作業(yè)描述和通用作業(yè)提交頁面的再次提交新作業(yè)功能[10],但沒有考慮不同學科領(lǐng)域的應(yīng)用特點,因此難以根據(jù)不同應(yīng)用的使用特點進行設(shè)計從而更有效地降低復雜應(yīng)用的使用難度。
因此,本文提出 HPC-AIT,以通用的作業(yè)描述語言 JSDL (Job Submission Description Language)[14]規(guī)定的作業(yè)提交信息為出發(fā)點,結(jié)合高性能計算應(yīng)用的使用方式復雜多變的特點,基于 JSR-168 標準的Portlet,研究并實現(xiàn)基于 Web 頁面的應(yīng)用封裝便捷工具,并支持復雜作業(yè)參數(shù)的 Web 頁面自動填充,從而為管理員和用戶提供簡單易用的服務(wù),有利于促進計算網(wǎng)關(guān)和高性能計算的發(fā)展。
在高性能計算 Web社區(qū)封裝應(yīng)用時,不僅需要支持多種類型應(yīng)用的參數(shù)和輸入數(shù)據(jù),體現(xiàn)不同學科領(lǐng)域計算的特點;而且需要方便地轉(zhuǎn)換為多種作業(yè)管理系統(tǒng)接受的格式,從而支持更多的計算資源。本節(jié)首先討論相關(guān)技術(shù),然后給出技術(shù)路線圖。
用戶在 Web 頁面上提交的作業(yè),經(jīng)過一系列的轉(zhuǎn)換之后,最終會以作業(yè)管理系統(tǒng)提供的命令行方式將計算任務(wù)提交到計算環(huán)境。國內(nèi)的常見的機群作業(yè)管理系統(tǒng)主要有 PBS (Portable Batch System) Torque[15]、LSF (Load Share Facility)[16]和 SLURM (Simple Linux Utility for Resource Management)[17]等商業(yè)和開源系統(tǒng),或者這些系統(tǒng)的定制版。
作業(yè)管理系統(tǒng)主要包括計算隊列查詢、作業(yè)提交和作業(yè)查詢等功能,主要命令如表1所示。通常情況下,隊列查詢命令顯示所有隊列的狀態(tài)信息或指定條件如隊列名稱的狀態(tài)信息;作業(yè)提交命令需要計算資源和應(yīng)用程序兩類參數(shù),也可以支持提交腳本;作業(yè)查詢命令可以查詢當前用戶的全部作業(yè)或指定條件如作業(yè)號或運行狀態(tài)的作業(yè)。雖然具體的參數(shù)格式有所不同,但語義是相同或相似的。因此,在設(shè)計應(yīng)用描述模板和生成作業(yè)描述時,必須包含作業(yè)管理系統(tǒng)需要的各項數(shù)據(jù)。
高性能計算涵蓋科學研究、工程計算、社會經(jīng)濟活動等非常廣泛的應(yīng)用領(lǐng)域,因此應(yīng)用軟件也有很多類型??紤]到高性能計算的特點,本文僅討論批處理作業(yè)方式的計算部分,不包括交互式的應(yīng)用或計算作業(yè)復雜的前后處理部分。
表1 不同作業(yè)管理系統(tǒng)的常見命令Table 1 Commands of different job management systems
盡管應(yīng)用軟件的種類比較多,但根據(jù)我們多年運行和維護高性能計算環(huán)境的經(jīng)驗,作業(yè)一般包含計算資源參數(shù)、應(yīng)用參數(shù)和輸入輸出數(shù)據(jù)等 3 類參數(shù)。計算資源參數(shù)包括計算隊列名稱、計算節(jié)點數(shù)或 CPU核數(shù)、估算的運行時間長度等信息,應(yīng)用參數(shù)因具體的應(yīng)用而不同,但可以整理為一行或多行字符串;輸入數(shù)據(jù)也因應(yīng)用而異,有些應(yīng)用不需要輸入文件,有些應(yīng)用需要用戶準備一個或多個輸入文件,有些應(yīng)用還要指定計算機群本地或遠程大規(guī)模的數(shù)據(jù)集。輸出數(shù)據(jù)僅考慮寫到工作目錄的文件。因此,在設(shè)計應(yīng)用描述模板時,必須考慮這些參數(shù)類型的特點,根據(jù)不同的參數(shù)類型設(shè)計簡單易用的 Web 頁面渲染模板。
為了方便用戶提交復雜參數(shù)的作業(yè)或者批量提交作業(yè),作業(yè)管理系統(tǒng)的提交命令一般都支持作業(yè)提交腳本,如 PBS Torque。用戶可以在腳本中指定資源需求、應(yīng)用參數(shù)甚至是簡單的前后處理程序。不同作業(yè)管理系統(tǒng)之間的提交腳本在功能方面基本相似,但在語法等細節(jié)方面存在不同。
JSDL 提供了統(tǒng)一的描述標準,它是開放網(wǎng)格論壇制定的作業(yè)描述標準,規(guī)定了詳細的結(jié)構(gòu)和語義,包括計算機群的體系結(jié)構(gòu)、資源需求、輸入和輸出文件的來源及存儲方式、可執(zhí)行程序、應(yīng)用參數(shù)等多個方面。JSDL 僅負責作業(yè)描述,不負責作業(yè)的生命周期管理,也不包括作業(yè)監(jiān)控和應(yīng)用服務(wù)部署等功能,這些功能由其它軟件或系統(tǒng)負責。
在高性能計算的作業(yè)提交方面,JSDL 事實上已成為國際通用的描述語言,獲得了包括中科院計算環(huán)境和中國國家高性能計算環(huán)境等方面的支持。因此,本文指定 JSDL 為作業(yè)描述語言,WEB 提交頁面在收集用戶的作業(yè)參數(shù)之后,生成一個標準的 JSDL 作業(yè)描述。
綜合研究現(xiàn)狀及本節(jié)的分析,本文以多種類型的應(yīng)用需求為出發(fā)點,中間產(chǎn)出是體現(xiàn)不同應(yīng)用特點的Web 圖形化作業(yè)提交頁面,目標是生成 JSDL 作業(yè)描述文件并將計算任務(wù)提交到計算環(huán)境,技術(shù)路線如圖1 所示。
首先,分析多種類型應(yīng)用軟件的需求,設(shè)計應(yīng)用描述模板。管理員在 Web 圖形化頁面填寫具體的應(yīng)用需求,后臺 Web 服務(wù)根據(jù)模板生成應(yīng)用描述文件。其次,渲染引擎根據(jù)應(yīng)用描述文件提供的數(shù)據(jù),替換 HTML 模板中的表達式,生成作業(yè)提交頁面。
用戶選擇指定的作業(yè)提交頁面后,頁面首先填充默認參數(shù),若是重用作業(yè)提交參數(shù),該頁面負責從后臺服務(wù)獲取相關(guān)數(shù)據(jù)并完成自動填充。在用戶填寫作業(yè)提交頁面之后,作業(yè)參數(shù)和輸入數(shù)據(jù)傳輸?shù)胶笈_服務(wù),后臺服務(wù)保存這些信息用于以后的參數(shù)回填以恢復作業(yè)提交時的場景,同時生成 JSDL 描述文件。最后,提交作業(yè)描述文件和輸入數(shù)據(jù)到計算環(huán)境,完成計算任務(wù)的提交功能。
本文以通用的作業(yè)描述語言 JSDL 規(guī)定的作業(yè)描述信息為基礎(chǔ),逆向分析作業(yè)提交頁面應(yīng)該提供的信息,從而確定作業(yè)提交頁面的基本結(jié)構(gòu);進一步逆向分析和明確應(yīng)用封裝應(yīng)該得到的信息,從而確定應(yīng)用封裝 WEB 頁面的基本結(jié)構(gòu)。
根據(jù) Portlet 結(jié)構(gòu)和 WEB 服務(wù)的層次結(jié)構(gòu)關(guān)系,HPC-AIT 的基本結(jié)構(gòu)如圖2 所示,Portlets 層提供應(yīng)用封裝和作業(yè)提交的核心功能,分別在第4 節(jié)和第5節(jié)進行詳細討論,其它層次提供必要的功能實現(xiàn)和運行時環(huán)境。分層和模塊化的設(shè)計,實現(xiàn)了松耦合的結(jié)構(gòu)設(shè)計,為功能擴展提供了良好的基礎(chǔ),保證了設(shè)計和實現(xiàn)的靈活性。
圖1 高性能計算應(yīng)用集成組件技術(shù)路線圖Fig.1 Technology roadmap for HPC-AIT
圖2 HPC-AIT 的基本結(jié)構(gòu)Fig.2 Main architecture of HPC-AIT
Portlets 層由應(yīng)用封裝 Portlet 和作業(yè)提交 Portlet構(gòu)成。應(yīng)用封裝 Portlet 是應(yīng)用封裝服務(wù)的具體實現(xiàn),為應(yīng)用管理人員提供基于 WEB 的應(yīng)用封裝頁面,不再要求管理人員掌握復雜的封裝腳本編寫和調(diào)試技巧,從而能更便捷地封裝更多的應(yīng)用,將在第4 節(jié)進行詳細討論。作業(yè)提交 Portlet 是作業(yè)提交服務(wù)的具體實現(xiàn),為用戶提供作業(yè)提交頁面渲染、參數(shù)填充、作業(yè)提交功能和基于作業(yè)參數(shù)重用的作業(yè)提交功能,將在第5 節(jié)進行詳細討論。
服務(wù)層為 HPC-AIT 提供數(shù)據(jù)持久化,訪問網(wǎng)格計算和云計算環(huán)境的功能,由數(shù)據(jù)存儲、作業(yè)管理和文件管理三個服務(wù)組成,為 Portlets 層提供各種服務(wù)。數(shù)據(jù)存儲服務(wù)提供作業(yè)和應(yīng)用的概述信息和詳細信息的持久化功能;作業(yè)管理服務(wù)基于作業(yè)提交Portlet 的作業(yè)管理接口,提供面向不同計算環(huán)境的服務(wù),僅要求計算環(huán)境支持通用的 JSDL,可根據(jù)需要增加對更多計算環(huán)境的支持;文件管理功能提供作業(yè)輸入文件和輸出文件的存儲和管理功能,允許用戶重用歷史作業(yè)的輸入文件。
基礎(chǔ)層提供數(shù)據(jù)庫和 WEB 容器功能,由gridsphere[18]、mysql 和計算環(huán)境的 SCE 環(huán)境軟件[19]組成。Gridsphere 不僅提供了 Portlet 運行的容器,而且提供了一組完全兼容 JSR-168 規(guī)范的 Portlet API。SCE 環(huán)境軟件提供訪問中科院科學計算環(huán)境的功能,聚合了多個異構(gòu)的機群和高性能計算機,提供作業(yè)提交和作業(yè)管理等功能[2]。
本文提出的 HPC-AIT 依托 SCE 環(huán)境系統(tǒng)軟件能夠訪問中科院超級計算環(huán)境和國家高性能計算環(huán)境的資源。中科院計算環(huán)境已形成由總中心、9 家分中心、19 家所級中心組成的三層架構(gòu)式超級計算網(wǎng)格環(huán)境,聚合了超過 1300 萬億次的 CPU 通用計算能力,院內(nèi) 11 家單位的 GPU 計算集群近 3000 萬億次的專用計算能力。國家高性能計算環(huán)境已經(jīng)聚合了多家國家超級計算中心的計算資源。
本節(jié)從 JSDL 的語義和結(jié)構(gòu)出發(fā),討論應(yīng)用描述模板和作業(yè)描述模板包含的信息,以及應(yīng)用封裝Portlet 的結(jié)構(gòu),并簡單描述如何支持動態(tài)增加的作業(yè)參數(shù)。
根據(jù) JSDL 作業(yè)描述的需求,應(yīng)用描述模板包含的內(nèi)容分為固定信息和動態(tài)信息兩類,并將這些信息和 JSDL 的屬性相對應(yīng),如表2 所示,其中星號表示該信息可以出現(xiàn)零次或多次。針對應(yīng)用描述模板的數(shù)據(jù),后臺服務(wù)以 {序號,應(yīng)用編號,HTML 的 ID 屬性,默認值,HTML 類型如 Input 或 Table 等,是否顯示} 六元組的形式進行持久化存儲。
固定信息是每個提交作業(yè)時的必須信息,包括應(yīng)用信息、作業(yè)信息和計算資源信息。封裝應(yīng)用時,管理員在 HTML 的文本輸入框填寫這些信息和指定默認值。對于計算資源信息中的計算隊列,不僅可以在封裝時指定默認的隊列,也可以讓用戶在作業(yè)提交時從資源列表中選擇。
動態(tài)信息是指針對應(yīng)用提交作業(yè)時指定的作業(yè)參數(shù)、輸入數(shù)據(jù)和輸出數(shù)據(jù)等作業(yè)動態(tài)信息,以及用于作業(yè)描述的 JSDL 參數(shù)模板信息。為了充分體現(xiàn)每個應(yīng)用本身的特點,封裝應(yīng)用時可指定這些參數(shù)的顯示的標簽、HTML 的 ID 屬性,設(shè)置默認值,選擇在作業(yè)提交頁面的呈現(xiàn)形式,包括 HTML 的文本框、單選按鈕、多選框和下拉列表等形式。另外,還能夠設(shè)定是否允許用戶在提交頁面中動態(tài)的增加這些參數(shù),例如更多輸入文件和輸出文件等。
為了減少封裝的工作量和降低操作難度,應(yīng)用封裝 Portlet 提供 Web 圖形化界面,管理人員可以便捷的完成應(yīng)用封裝工作。每完成一個應(yīng)用的封裝,后臺服務(wù)就生成一個應(yīng)用描述文件。根據(jù)使用方式或應(yīng)用場景的不同,一個應(yīng)用可進行多次封裝并形成多個應(yīng)用描述文件。
應(yīng)用描述模板是根據(jù) JSDL 進行設(shè)計的,因此在生成具體計算任務(wù)的作業(yè)描述時,計算資源需求、可執(zhí)行程序和輸入輸出文件等內(nèi)容可以直接引用對應(yīng)的參數(shù),但具體的應(yīng)用參數(shù)由哪些輸入數(shù)據(jù)組成,如何組織,是作業(yè)描述模板需要解決的問題。
在作業(yè)描述模板中,參數(shù)模板片斷對應(yīng) JSDL 的Argument 屬性,既可能是單個輸入?yún)?shù),也可能是多個輸入?yún)?shù)的組合,候選范圍是表2 中所有 HTML元素。封裝應(yīng)用時,管理員可以在下拉表中按描述名稱選擇這些元素,被選中元素的 ID 會顯示在文本輸入框,管理員可手動修改文本框的內(nèi)容。
在作業(yè)提交時,作業(yè) JSDL 生成模塊會調(diào)用渲染引擎模塊,將其中的元素 ID 變量替換為目標作業(yè)的輸入數(shù)據(jù)。若在參數(shù)模板數(shù)據(jù)中出現(xiàn)擴展類 HTML 的ID 屬性,如用戶動態(tài)添加了“更多參數(shù)”,在生成作業(yè)描述時,動態(tài)增加的數(shù)據(jù)都會順序填充到JSDL作業(yè)描述信息之中。
表2 應(yīng)用封裝信息列表Table 2 Information list of application packing
在應(yīng)用描述模板和作業(yè)提交描述模板的基礎(chǔ)上,設(shè)計了應(yīng)用封裝 Portlet, 如圖3所示,由 WEB頁面和服務(wù)端兩部分組成,負責應(yīng)用信息的收集和已封裝應(yīng)用的顯示功能。瀏覽器部分的應(yīng)用封裝頁面,提供了固定信息和動態(tài)信息的圖形化輸入界面,可方便地輸入應(yīng)用的各種信息,信息收集腳本輔助和檢查相關(guān)的輸入信息,通過 Ajax 技術(shù)把應(yīng)用信息上傳到服務(wù)端,從而實現(xiàn)應(yīng)用的封裝。應(yīng)用列表頁面提供了應(yīng)用入口,方便用戶選擇和使用已封裝的應(yīng)用。
服務(wù)器部分負責應(yīng)用信息的存儲和管理工作。在打開應(yīng)用封裝頁面時,應(yīng)用概述模塊負責生成一個應(yīng)用 ID,也負責為應(yīng)用列表頁面提供已經(jīng)封裝的應(yīng)用信息。 應(yīng)用數(shù)據(jù)管理模塊負責收集 WEB 頁面上傳過來的信息,在收到應(yīng)用概述信息時,協(xié)助應(yīng)用概述模塊記錄應(yīng)用的信息。
本節(jié)討論如何使用已經(jīng)封裝的應(yīng)用,包括作業(yè)提交 Portlet 的結(jié)構(gòu),頁面渲染、作業(yè)提交和復雜參數(shù)重用的流程。
在應(yīng)用封裝服務(wù)的基礎(chǔ)上,設(shè)計了作業(yè)提交服務(wù)的 Portlet,包括作業(yè)提交和基于作業(yè)輸入數(shù)據(jù)重用的作業(yè)提交兩個主要功能,基本結(jié)構(gòu)如圖4所示。
在瀏覽器部分,除作業(yè)列表頁面外,其它部分都是由服務(wù)器部分基于模板渲染引擎模塊根據(jù)指定的輸入數(shù)據(jù)和模板文件動態(tài)生成。具體流程在 5.2 節(jié)討論。
服務(wù)端的作業(yè)數(shù)據(jù)管理模塊負責收集用戶輸入的作業(yè)信息;上傳文件管理模塊負責接收用戶上傳的文件,在作業(yè)輸入數(shù)據(jù)重用時給出已經(jīng)上傳文件的列表;作業(yè) JSDL 生成模塊在作業(yè)數(shù)據(jù)和應(yīng)用數(shù)據(jù)的基礎(chǔ)上借用模板渲染引擎模塊的功能,生成作業(yè)描述的JSDL;作業(yè)提交模塊負責將作業(yè)提交到計算環(huán)境;作業(yè)管理模塊負責記錄作業(yè)的提交信息,并為作業(yè)列表Web頁面提供數(shù)據(jù)。
圖3 應(yīng)用封裝 Portlet 的基本結(jié)構(gòu)Fig.3 Main architecture of application packing portlet
圖4 作業(yè)提交 Portlet 的基本結(jié)構(gòu)Fig.4 Main architecture of job submitting portlet
HPC-AIT 基于 FreeMarker[20]設(shè)計和實現(xiàn)模板渲染引擎,實現(xiàn)作業(yè)提交頁面的 HTML 片斷、Javascript 腳本和 JSDL 的生成功能。FreeMarker 是基于 Java 編寫的生成純文本輸出的模板引擎,它不是一個 WEB 框架,也與 WEB 容器無關(guān),因此可以用于非 WEB 程序[20]。此外,F(xiàn)reeMarker 支持 JSP 標記庫。相對于 Apache Velocity 模板引擎,它們都支持MVC 分離功能,但 FreeMarker 在復雜邏輯處理方面的功能更強一些。
用戶在應(yīng)用列表頁面選擇一個應(yīng)用后,渲染引擎開始工作,動態(tài)生成頁面的過程如圖5的實線部分所示。首先根據(jù)應(yīng)用的 ID 獲取應(yīng)用描述信息和指定的作業(yè)提交模板。作業(yè)提交模板規(guī)定了應(yīng)用描述信息轉(zhuǎn)化為作業(yè)提交頁面時的布局和樣式。針對相同的應(yīng)用描述信息,使用不同的作業(yè)提交模板,能夠生成不同風格或樣式的作業(yè)提交頁面。
為了實現(xiàn) HTML 元素動態(tài)擴展、輔助輸入等功能,HTML 頁面部分也會引用一些外部的腳本。作業(yè)腳本的參數(shù)收集部分規(guī)定哪些 HTML 元素的數(shù)據(jù)需要收集及收集這些信息的腳本。然后,通過模板渲染引擎功能模塊替換作業(yè)提交模板的變量,生成作業(yè)提交頁面的 HTML 內(nèi)容和 Javascript 腳本。
圖5 作業(yè)提交頁面的生成過程Fig.5 Process for generating job submitting web page
圖6 作業(yè)提交過程Fig.6 Process for job submitting
作業(yè)提交過程如圖6所示,在動態(tài)生成的作業(yè)提交頁面上,用戶根據(jù)應(yīng)用和計算任務(wù)的需要,輸入相關(guān)的作業(yè)參數(shù)并上傳輸入文件。在該過程中,瀏覽器部分的腳本輔助用戶完成相關(guān)的輸入工作,并通過Ajax 將信息傳輸?shù)椒?wù)端。此時,負責參數(shù)保存功能的作業(yè)數(shù)據(jù)管理模塊接收這些數(shù)據(jù),按照 HTML 輸入元素的類型在數(shù)據(jù)庫持久化保存數(shù)據(jù),方便以后恢復作業(yè)提交現(xiàn)場或者重用作業(yè)提交參數(shù)。
在用戶提交作業(yè)后,作業(yè) JSDL 生成模塊首先查詢作業(yè)描述模板持久化存儲并獲取當前應(yīng)用的 JSDL模板信息。然后,作業(yè) JSDL 生成模塊從作業(yè)輸入數(shù)據(jù)持久化存儲中獲取用戶輸入的作業(yè)信息,通過模板渲染引擎模塊替換作業(yè)描述 JSDL 模板中的變量,生成作業(yè)的 JSDL 描述。最后,調(diào)用作業(yè)提交模塊完成作業(yè)的提交過程。
在作業(yè)提交頁面自動渲染的基礎(chǔ)上,提出歷史作業(yè)輸入數(shù)據(jù)的重用功能,從而為用戶提供更好的作業(yè)提交體驗。
用戶在作業(yè)列表頁面選擇一個目標作業(yè)后提交請求,服務(wù)器部分啟動基于作業(yè)輸入數(shù)據(jù)重用的提交頁面渲染過程。該過程與 5.2 節(jié)的渲染過程相比,增加了從作業(yè)數(shù)據(jù)管理模塊獲取作業(yè)信息的步驟,如圖5的虛線部分所示。由于引入了作業(yè)信息數(shù)據(jù),模板替換引擎模塊在工作過程中啟用提交頁面模板的參數(shù)填充部分的腳本,根據(jù) HTML 元素類型的不同,生成賦值的腳本。作業(yè)提交頁面在瀏覽器裝載完成后執(zhí)行這些代碼,從而重現(xiàn)作業(yè)提交時的場景。從安全方面考慮,已經(jīng)上傳的作業(yè)輸入文件僅給出遠程的相對路徑,同時顯示本地文件輸入標簽,用戶既可選擇遠程文件也可以上傳本地文件。此后,用戶在自動填充后的作業(yè)提交頁面上,修改參數(shù),正常提交作業(yè)。
本文以 Gridsphere-2.2.10 和 Tomcat5.5 搭建測試環(huán)境,通過 SCE 環(huán)境件連接中科院超算中心的Deepcomp7000 進行測試,以實例驗證 HPC-AIT 的可用性和易用性。然后從技術(shù)和功能方面對 HPC-AIT進行分析和比較。
Gaussian 是一個功能強大的量子化學綜合軟件包,其可執(zhí)行程序可以在計算機群或超級計算機上運行,是計算化學領(lǐng)域知名的商業(yè)計算軟件[21]。本文以Gaussian 應(yīng)用為例說明應(yīng)用封裝和作業(yè)提交過程。
基于 HPC-AIT,在 WEB 頁面上可以完成應(yīng)用封裝的全部過程。圖7給出了封裝頁面的部分截圖,管理員僅需要在 WEB 頁面上指定應(yīng)用名稱和可執(zhí)行程序等信息。圖8給出了輸入文件的定制截圖,既可以選擇本地文件,也可以選擇遠程文件。
另外,Gaussian 應(yīng)用通常情況下僅以唯一的輸入文件當做參數(shù),默認下載所有的輸出文件。經(jīng)過簡單設(shè)置,完成封裝工作。
在應(yīng)用封裝過程中,只需要在 WEB 頁面上填寫各項必須的數(shù)據(jù),不需要代碼編寫、調(diào)試和部署等復雜、耗時和困難的工作,因此,HPC-AIT 不僅降低了操作的技術(shù)難度,而且顯著減少了應(yīng)用封裝所需的時間,提高了工作效率,能夠更好地滿足用戶需求。
用戶通過應(yīng)用列表頁面選擇應(yīng)用時,例如gaussian 應(yīng)用,HPC-AIT 生成如圖9所示的頁面。用戶僅需要填寫作業(yè)名稱,修改計算時間,查詢計算資源信息并選擇指定隊列,上傳輸入文件,即可完成作業(yè)提交。若是重用作業(yè)輸入數(shù)據(jù)的方式,該頁面的所有選項都會被自動填充,上次提交的文件以只讀標簽的形式出現(xiàn)在原來本地文件輸入框的位置。
考慮到計算隊列的動態(tài)變化特性,即使以重用作業(yè)輸入數(shù)據(jù)的方式提交作業(yè),用戶也需要自行指定計算資源。在點擊“查看計算資源”按鈕后,會得到符合應(yīng)用、估計運行時間和并行核數(shù)等條件的資源列表,如圖10所示。
用戶在自動生成的頁面提交作業(yè)時,僅需要填寫應(yīng)用要求的各項參數(shù)。對于計算資源要求的各項參數(shù),針對作業(yè)基本信息,提交頁面給出合適的默認參數(shù);針對復雜的計算資源選擇問題,提交頁面給出滿足需求的計算隊列列表及各個隊列當前的詳細信息,為用戶選擇合適的隊列提供了必要信息。如果用戶對多個計算隊列的選擇仍然存在困難,默認 cloud 虛擬節(jié)點的 any 虛擬隊列能夠有效解決隊列選擇的難題,用戶選擇該隊列后,計算環(huán)境會根據(jù)歷史和當前信息及調(diào)度算法選擇一個相對合適的計算隊列。因此,HPC-AIT 能夠有效幫助用戶快速提交作業(yè),完成計算任務(wù)。
HPC-AIT 提出的基于 WEB 頁面的應(yīng)用封裝方式,與基于描述語言的方式和基于 Portlet 的方式相比,不再要求管理人員掌握復雜的封裝腳本編寫和調(diào)試技巧。與常見的基于 WEB 頁面提交方式[2-7]相比,增加了作業(yè)輸入數(shù)據(jù)重用的功能,能夠?qū)⒅付v史作業(yè)的輸入數(shù)據(jù)回填到當時的作業(yè)提交頁面。與 Grid Portlets 相比[10],HPC-AIT 不依賴于通用的作業(yè)再次提交頁面而是重現(xiàn)作業(yè)提交的場景,方便用戶重用以前的數(shù)據(jù)和作業(yè)參數(shù),降低復雜作業(yè)的提交難度。
圖7 應(yīng)用封裝過程中固定信息的部分頁面Fig.7 Web Page for Fixed Information in Application Packing
圖8 應(yīng)用封裝過程中動態(tài)信息的部分頁面Fig.8 Web Page for Dynamic Information in Application Packing
本文針對高性能計算 WEB 應(yīng)用社區(qū)經(jīng)常需要封裝不同類型應(yīng)用的問題,設(shè)計并實現(xiàn)了基于 Portlet 的HPC-AIT 組件。利用該組件,管理員能夠有效提高應(yīng)用封裝的響應(yīng)速度和降低操作難度,用戶能夠方便的提交作業(yè)和重用復雜的作業(yè)參數(shù),具有良好的可移植性和擴展性。下一步的工作,美化 WEB 頁面,增加對大文件傳輸?shù)闹С帧?/p>
圖9 自動生成的作業(yè)提交頁面Fig.9 Auto-Generated Web Page for Job Submitting
圖10 動態(tài)生成的計算資源列表頁面Fig.10 Dynamic-Generated Web Page for Computing Resources
[1]遲學斌,趙毅.高性能計算技術(shù)及其應(yīng)用[J].中國科學院院刊,2007,22(4): 306-313.
[2]遲學斌 肖海力 王小寧等,面向科學計算的網(wǎng)格環(huán)境[J].集成技術(shù),2012,1(1):68-76.
[3]中國科學院超級計算環(huán)境.http://cscgrid.cas.cn,2016
[4]Depei Qian.CNGrid: A test-bed for grid technologies in China[C]//Distributed Computing Systems,2004.FTDCS 2004.Proceedings.10th IEEE International Workshop on Future Trends of.IEEE,2004: 135-139.
[5]中國國家網(wǎng)格.http://www.cngrid.org ,2016
[6]WILKINS-DIEHR N,GANNON D,KLIMECK G,et al.TeraGrid science gateways and their impact on science[J].Computer,2008,41(11): 32-41.
[7]Towns J,Cockerill T,Dahan M,et al.XSEDE:accelerating scienti fic discovery[J].Computing in Science& Engineering,2014,16(5): 62-74.
[8]盧大勇,陸琪,姜愷.基于模板的高性能計算應(yīng)用封裝方法[J].計算機工程,2011,37(11): 34-36.
[9]Abdelnur A,Hepper S.JSR 168: Portlet speci fication[J].Java Specification Requests,Java Community Process,Sun Microsystems and IBM,2003,15.
[10]RUSSELL M,NOVOTNY J,WEHRENS O.The Grid Portlets Web Application: A Grid Portal Framework[M]//WYRZYKOWSKI R,DONGARRA J,MEYER N,et al.;Springer Berlin / Heidelberg.2006: 691-698.
[11]ALAMEDA J,CHRISTIE M,FOX G,et al.The Open Grid Computing Environments collaboration: portlets and services for science gateways[J].Concurrency and Computation: Practice and Experience,2007,19(6): 921-942.
[12]The Apache Velocity Project.http://velocity.apache.org,2016
[13]CAO Rongqiang,CHI Xuebin,CAO Zongyan,et al.USGPA: A User-centric and Secure Grid Portal Architecture for High-performance Computing;International Symposium on Parallel and Distributed Processing with Applications IEEE, 2009[C].IEEE:432-438.
[14]Anjomshoaa A,Brisard F,Drescher M,et al.Job submission description language (jsdl) specification,version 1.0[C]//Open Grid Forum,GFD.2005,56.
[15]PBS torque,http://www.adaptivecomputing.com/products/open-source/torque,2016.
[16]IBM Platform LSF Family Services.http://www-03.ibm.com/systems/services/platformcomputing/lsf.html,2016
[17]Jette M,Auble D.SLURM: Resource Management from the Simple to the Sophisticated[C]//Lawrence Livermore National Laboratory,SLURM User Group Meeting.2010.
[18]NOVOTNY J,RUSSELL M,WEHRENS O.GridSphere:a portal framework for building collaborations[J].Concurrency and Computation: Practice and Experience,2004,16(5): 503-513.
[19]Dai Z,Wu L,Xiao H,et al.A lightweight grid middleware based on OPENSSH-SCE[C]//Sixth International Conference on Grid and Cooperative Computing (GCC 2007).IEEE,2007: 387-394.
[20]FreeMarker Java Template Engine.http://freemarker.org,2016.
[21]Of ficial Gaussian Website.http://gaussian.com,2016.
[22]Will R,Ramaswamy S,Schaeck T.WebSphere Portal:Unified user access to content,applications,and services[J].IBM Systems Journal,2004,43(2): 420-429.
[23]Sezov R.Liferay in action: the official guide to Liferay portal development[M].Shelter Island,NY: Manning,2012.
[24]Apache Pluto.http://portals.apache.org/pluto,2011
High Performance Computing Application Integration Toolkits Based on Portlet
Cao Rongqiang*,Wang Xiaoning,Lu Shasha,Xie Xiaowei,Xiao Haili
Computer Network Information Center,Chinese Academy of Sciences,Beijing 100190,China
In high-performance computing Web communities,we need to encapsulate many kinds of application softwares into Web portals or gateways and need to develop or adjust source codes to add theses softwares.Therefore,it is difficult for administrators of Web communities to meet requests for adding softwares quickly and easily,especially softwares that require lots of complicated parameters.By analyzing requirements and formats of job submission and management commands provided by different job management systems for clusters and supercomputers,using methods of lots softwares used in different disciplines and research areas,syntax and structure of generic job submit description language,we proposed high-performance computing applications integration toolkits (HPC-AIT) based on portlet.In HPC-AIT,we designed and implemented a template for describing requirements of application softwares,a dynamics rendering engine for job submiting Web pages,and methods for saving and filling complicated parameters.The HPC-AIT provided application packaging service based on the Web page,dynamic generation of job submitting web pages,automatic generation of a job description,and submitting jobs to computing resources.It also supported to fill the job submitting page by the data from the speci fic history job.The analysis and examples show that,administrators can package application quickly and easily,users can submit jobs and reuse the parameters from the speci fic history job.In addition,it is good at portability and scalability.
high-performance computing; application encapsulation; job submitting and management; filling parameters; computing portal
10.11871/j.issn.1674-9480.2017.02.002
國家重點研發(fā)計劃項目課題“國家高性能計算環(huán)境構(gòu)建與資源提升關(guān)鍵技術(shù)”(2016YFB0201404);中國科學院院級科研項目“中國科技云建設(shè)工程”課題“超算資源池建設(shè)”(XXH13501-03)
*通訊作者:曹榮強(caorq@sccas.cn)
2017年2月2日
曹榮強:中國科學院計算機網(wǎng)信息中心,博士,副研究員,主要研究方向網(wǎng)格計算、云計算和Web 服務(wù)。
E-mail:caorq@sccas.cn
王小寧:中國科學院計算機網(wǎng)信息中心,博士,副研究員,主要研究方向網(wǎng)格計算、云計算和分布式系統(tǒng)。
E-mail:wxn@sccas.cn
盧莎莎:中國科學院計算機網(wǎng)信息中心,碩士,工程師,主要研究方向網(wǎng)格計算、云計算和測試部署。
E-mail:lusha721@sccas.cn
解曉偉:中國科學院計算機網(wǎng)信息中心,碩士,工程師,主要研究方向網(wǎng)格計算和 WEB 服務(wù)。
E-mail:xiexw@sccas.cn
肖海力:中國科學院計算機網(wǎng)信息中心,項士,項目研究員,主要研究方向網(wǎng)格計算和分布式系統(tǒng)。
E-mail:haili@sccas.cn