亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種暫停與恢復mpi并行應用程序運行的方法

文檔序號:8258163閱讀:698來源:國知局
一種暫停與恢復mpi并行應用程序運行的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機技術(shù)領(lǐng)域,涉及一種并行應用程序運行的控制方法,具體地說,涉及一種暫停與恢復MPI (Message Passing Interface,消息傳遞接口,簡稱為MPI)并行應用程序運行的方法。
【背景技術(shù)】
[0002]在并行計算機系統(tǒng)之中,為了解決隨時插入緊急MPI并行計算任務的難題,必然需要掛起/暫停一些優(yōu)先級低的并行計算任務,以便給新的緊急并行計算任務讓出更多計算資源。目前,絕大多數(shù)的并行應用程序本身沒有提供掛起/暫停的功能,而是需要從并行應用程序外部來完成該項任務,也就是需要同步地保存并行應用程序在各個計算節(jié)點上面進程的運行狀態(tài)以及通信狀態(tài),其中的難點之一就在如何保存各個進程間的通信狀態(tài),使之保持一致性,然后掛起/暫停該程序,最后待緊急并行計算任務完成后,恢復運行被掛起/暫停的MPI并行應用程序。
[0003]一般來說,目前有兩個辦法來解決保存并行程序進程間通信狀態(tài)一致性的問題:
[0004]一是從操作系統(tǒng)層著手來保存正在運行的并行程序的各種狀態(tài),然后暫?;蛑袛嘣摬⑿谐绦颍鹊竭\行完緊急任務后,再從暫停點繼續(xù)運行程序或者從中斷點處運行程序,這就需要操作系統(tǒng)提供直接的支持。然而,就我們所掌握的文獻與資料來看,盡管目前在并行程序的容錯方面取得了不少成果,比如運用檢查點/卷回技術(shù),但是實現(xiàn)比較復雜,需要大量修改操作系統(tǒng)內(nèi)核,并且需要把并行應用程序的運行狀態(tài)信息及通信狀態(tài)信息保存到磁盤,在保存與恢復過程中要花費不少時間。
[0005]二是在應用層提供額外的接口支持,這需要充分利用操作系統(tǒng)提供的進程運行狀態(tài)等信息,輔之以通信協(xié)議的支持,在保存好MPI并行應用程序的相關(guān)運行狀態(tài)信息及通信狀態(tài)信息后,就可以相對容易地暫?;蛑袛嗖⑿袘贸绦?,經(jīng)過若干時間后再恢復運行。這種方法在國內(nèi)外也有初步的嘗試,存在的難點主要是普通的通信協(xié)議(比如TCP/IP通信協(xié)議)提供的支持非常有限,因此實現(xiàn)起來非常困難。就第二種解決掛起或暫停并行程序的方法而言,需要通信協(xié)議提供支持,從而能夠獲得MPI各個進程足夠多的通信狀態(tài)信息,以方便保存并行應用程序的信息,并且保證各個進程間通信狀態(tài)的一致性,否則按照系統(tǒng)默認的方式掛起并行應用程序時,會導致正在進行通信的進程由于超時退出,最終導致整個并行應用程序的崩潰。
[0006]在傳統(tǒng)的TCP/IP通信協(xié)議中,數(shù)據(jù)傳輸出錯重傳的最大時間大約為9分鐘,該時間在目前的TCP通信協(xié)議實現(xiàn)中(某些商業(yè)版Solaris版本允許系統(tǒng)管理員改變這個時間)是不可變的,因此如果按照普通方式在以太網(wǎng)環(huán)境下把并行應用程序暫停,最終會使某些進程通信超時退出,進而導致整個并行應用程序的崩潰。我們在四臺CPU為奔四
2.8Ghz、內(nèi)存為IGB的計算機硬件平臺上(操作系統(tǒng)為Centos Linux 5.0)測試,如果按照普通方式暫停MPI并行應用程序的運行,該程序會因為通信超時而退出,超時退出時間大約為15分鐘。

【發(fā)明內(nèi)容】

[0007]本發(fā)明的目的在于克服上述技術(shù)存在的缺陷,提供一種暫停與恢復MPI并行應用程序運行的方法,解決在并行計算機系統(tǒng)之中隨時插入緊急MPI并行計算任務的難題,事先需要暫停一些優(yōu)先級低的并行計算任務,以便給新的緊急并行計算任務讓出更多計算資源。具體地說:當MPI并行應用程序運行過程中收到暫停運行或繼續(xù)運行信號時,巧妙地利用改造的MPI庫函數(shù)、改造的Linux操作系統(tǒng)信號機制與改造的TCP通信協(xié)議,協(xié)調(diào)一致地暫?;蚧謴蚆PI并行應用程序的各個進程。由于本方法是在MPI并行應用程序的下層改造MPI庫函數(shù)、Linux操作系統(tǒng)信號機制與TCP通信協(xié)議,對于在它們上層運行的MPI并行應用程序是透明的,因此,現(xiàn)有的MPI并行應用程序可以無縫運行在我們改造的系統(tǒng)之上,不需要對MPI并行應用程序的源代碼做任何的修改,我們的方法可以大大方便對MPI并行應用程序運行的控制與調(diào)度。
[0008]其具體技術(shù)方案為:
[0009]一種暫停與恢復MPI并行應用程序運行的方法,充分利用我們改造的MPI庫函數(shù)、改造的Linux操作系統(tǒng)信號機制與改造的TCP通信協(xié)議,協(xié)調(diào)一致地暫停或恢復MPI并行應用程序,包括以下步驟:
[0010]步驟1.在Linux操作系統(tǒng)中改造TCP通信協(xié)議的實現(xiàn),在TCP通信協(xié)議實現(xiàn)中增加控制接口函數(shù)tcp_i0ctl_MPI O,用來查詢MPI進程間通信的詳細狀態(tài),進而控制進程間的通信與處理各個進程間的通信同步問題。
[0011]步驟2.在Linux操作系統(tǒng)中改造信號機制,修改“處理暫停運行信號”的接口函數(shù)catchjstp O,使并行應用程序在收到暫停運行信號時,先進入下層TCP通信協(xié)議,調(diào)用增加的控制接口函數(shù)tcp_i0ctl_MPI O,解決各個進程間的通信暫停以及通信同步問題,即完成正在傳輸?shù)臄?shù)據(jù),然后待通信狀態(tài)一致后暫停通信,最后從下層TCP通信協(xié)議返回,按照系統(tǒng)默認的方式暫停運行;同時,修改“處理繼續(xù)運行信號”的接口函數(shù)catch_c0nt O,使并行應用程序在收到繼續(xù)運行信號時,先進入下層TCP通信協(xié)議,調(diào)用增加的控制接口函數(shù)tcp_i0ctl_MPI O,解決各個進程間通信恢復以及通信同步問題,然后待各個進程間通信狀態(tài)一致后,從下層TCP通信協(xié)議返回,按照系統(tǒng)默認的方式恢復運行。
[0012]步驟3.MPI_Init()函數(shù)是所有MPI并行應用程序調(diào)用的第一個MPI庫函數(shù),在該函數(shù)體的初始部分就立即安裝暫停信號,使并行應用程序一開始運行就具有接收暫停信號的能力,也就是調(diào)用系統(tǒng)函數(shù)signal (SIGTSTP,catch_tstp)。這樣,一旦MPI并行應用程序接收到暫停信號,就會調(diào)用修改的函數(shù)catch_tstp(),在函數(shù)catch_tstp()執(zhí)行過程中,又會先進入下層TCP通信協(xié)議之中調(diào)用函數(shù)tcp_i0ctl_MPI O,用來處理進程間的通信同步問題,在處理完通信同步后,該MPI并行應用程序的各個進程間暫停用戶數(shù)據(jù)的通信,各個進程間僅僅接收與發(fā)送控制信息的通信,然后該并行應用程序的各個進程按照系統(tǒng)默認的暫停方式暫停運行,從而使整個并行應用程序暫停運行。
[0013]另外,也在MPI_Init()函數(shù)體內(nèi)初始部分就立即安裝繼續(xù)運行信號,使并行應用程序一開始運行就具有接收繼續(xù)運行信號的能力,也就是調(diào)用系統(tǒng)函數(shù)signal (SIGCONT,catch_cont) ο這樣,一旦MPI并行應用程序接收到繼續(xù)運行信號,就會調(diào)用修改的函數(shù)catch_cont (),在函數(shù)catch_cont O執(zhí)行過程中,又會先進入下層TCP通信協(xié)議,調(diào)用tcp_1ctl_MPI()處理進程間的通信同步問題,在處理完通信同步后,再按照系統(tǒng)默認的方式繼續(xù)運行。
[0014]步驟4.當MPI并行應用程序接收到暫停信號時,由于在MPI并行應用程序調(diào)用的第一個MPI庫函數(shù)MPI_Init()中事先安裝了暫停信號,因此,MPI并行應用程序會通過signal (SIGTSTP, catch_tstp)函數(shù)調(diào)用修改的函數(shù) catch_tstp O,在 catch_tstp O 執(zhí)行過程中又會進入TCP通信協(xié)議之中調(diào)用tCp_i0Ctl_MPI()函數(shù)處理完正在傳輸?shù)挠脩魯?shù)據(jù)(這里指把一條完整的消息傳輸完成),然后暫停進程的后續(xù)用戶數(shù)據(jù)通信,以保證MPI并行應用程序在被暫停運行時,MPI并行應用程序的所有進程間沒有正在傳輸?shù)挠脩魯?shù)據(jù),各個進程間僅僅接收與發(fā)送控制信息的通信。
[0015]具體來說,當需要暫停并行應用程序時,通過MPI并行應用程序的主控進程所在的計算節(jié)點命令行界面,向MPI并行應用程序的主控進程發(fā)送暫停信號,然后MPI并行應用程序的各個進程進行如下步驟的操作:
[0016](I)在MPI并行應用程序的主控進程已經(jīng)接收到暫停運行信號后,通知其他非主控進程準備暫停運行;
[0017](2)其他非主控進程回復主控進程,確認獲得暫停運行的消息;
[0018](3)并行應用程序的各個進程完成正在
當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1