欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

面向dag數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng)和實(shí)現(xiàn)方法

文檔序號:6587821閱讀:258來源:國知局
專利名稱:面向dag數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng)和實(shí)現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)軟件設(shè)計(jì)領(lǐng)域的并行編程模型、模式與方法,特別是涉及一種 面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行化編程模型系統(tǒng)和程序設(shè)計(jì)方法。
背景技術(shù)
隨著計(jì)算機(jī)的應(yīng)用范圍和應(yīng)用水平的不斷拓展和提高,人們對于計(jì)算機(jī)的計(jì)算和 處理能力等性能要求也隨之增力B,近些年來,在諸如天文、氣象、海洋、生物、能源、化工、地 質(zhì)勘探和數(shù)學(xué)等科學(xué)與工程計(jì)算領(lǐng)域,隨著數(shù)據(jù)計(jì)算量的增大及計(jì)算復(fù)雜度的增加,很多 實(shí)際應(yīng)用問題的求解過程在計(jì)算能力及計(jì)算速度方面不斷提出新的要求,對高計(jì)算能力及 高性能的需求越來越迫切。而這類實(shí)際應(yīng)用大多是基于數(shù)據(jù)型的,且耗時(shí)計(jì)算主要為數(shù)值 計(jì)算。 目前,在硬件方面,構(gòu)建并行計(jì)算硬件環(huán)境的技術(shù)也已日臻成熟,搭建一個(gè)理論上 計(jì)算能力相當(dāng)強(qiáng)的并行計(jì)算環(huán)境,現(xiàn)在已經(jīng)不是難題。然而,在軟件方面,并行編程復(fù)雜且 易出錯(cuò),已經(jīng)是一個(gè)不爭的事實(shí),如何高效地在并行計(jì)算環(huán)境中進(jìn)行各種并行計(jì)算應(yīng)用程 序的設(shè)計(jì)與開發(fā),尤其是多數(shù)非計(jì)算機(jī)專業(yè)出身的各應(yīng)用領(lǐng)域的技術(shù)人員缺乏并行計(jì)算程 序開發(fā)的專業(yè)訓(xùn)練,已成為并行計(jì)算技術(shù)轉(zhuǎn)化為實(shí)際生產(chǎn)力所面臨的關(guān)鍵問題。因此,設(shè)計(jì) 和開發(fā)出一套新的模型和方法,來幫助開發(fā)人員簡化并行編程成為了一個(gè)關(guān)鍵和必要。
經(jīng)文獻(xiàn)檢索發(fā)現(xiàn),傳統(tǒng)的簡化并行編程的理論和方法主要有并行編程模型,并型 設(shè)計(jì)模式,并行骨架,可視化建模等等。本發(fā)明是從并行編程模型的角度,針對科學(xué)應(yīng)用中 大量的具有DAG數(shù)據(jù)依賴關(guān)系的應(yīng)用,提出了一套編程模型和方法,用來幫助開發(fā)人員簡 化并行編程和復(fù)用已有的并行代碼。

發(fā)明內(nèi)容
鑒于上述現(xiàn)有技術(shù),本發(fā)明提出了一種面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型 系統(tǒng)和實(shí)現(xiàn)方法,通過圖形化操作界面實(shí)現(xiàn)并行計(jì)算應(yīng)用程序的輔助開發(fā)設(shè)計(jì),用戶在該 系統(tǒng)上利用已經(jīng)實(shí)現(xiàn)好的面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的完成并行編程,并且實(shí)現(xiàn)通用集成開 發(fā)環(huán)境(EasyPAB系統(tǒng))中的添加實(shí)現(xiàn)。 本發(fā)明提出一種面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng),包括DAG模式圖 模塊、用戶應(yīng)用程序模塊以及DAG運(yùn)行時(shí)系統(tǒng)模塊,其特征在于,其中
DAG模式圖模塊,包括DAG模式圖庫,該DAG模式圖庫中存儲有來自系統(tǒng)提供的 DAG模式圖和用戶自定義的DAG模式圖; 用戶應(yīng)用程序模塊,作為整個(gè)并行編程模型系統(tǒng)的驅(qū)動,用于用戶的初始化設(shè)置 和具體的并行化算法的確定,其處理包括 用戶從DAG模式圖庫中選擇一個(gè)DAG模式圖,對DAG模式圖及運(yùn)行時(shí)需要的參數(shù) 進(jìn)行初始化操作,包括設(shè)置DAG模式圖的大小、選擇對DAG圖中的每一個(gè)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)塊 映射的數(shù)據(jù)塊映射機(jī)制、系統(tǒng)運(yùn) 時(shí)所需要的 程數(shù)目及time out(對應(yīng)中文超時(shí))參數(shù)等;調(diào)用系統(tǒng)所提供的API函數(shù),初始化選擇的DAG模式圖,運(yùn)行時(shí)系統(tǒng)開始進(jìn)行后臺的并行化計(jì)算,主要包括對數(shù)據(jù)任務(wù)的自動化劃分和分配,線程的調(diào)度、反饋與管理;具體過程為主線程開始解析DAG圖,尋找當(dāng)前可計(jì)算的數(shù)據(jù)節(jié)點(diǎn),將其進(jìn)行真實(shí)數(shù)據(jù)塊任務(wù)的映射,并將可計(jì)算數(shù)據(jù)任務(wù)放入線程池隊(duì)列緩沖區(qū),而線程池內(nèi)的閑置工作線程一旦發(fā)現(xiàn)線程池隊(duì)列不為空時(shí),將自動地從線程池隊(duì)列緩沖區(qū)獲取一塊計(jì)算任務(wù),并開始進(jìn)行計(jì)算;當(dāng)某個(gè)工作線程完成任務(wù)時(shí),將計(jì)算完的任務(wù)信息放入反饋隊(duì)列,主線程則及時(shí)地通過反饋隊(duì)列獲知完成的計(jì)算任務(wù)節(jié)點(diǎn),根據(jù)完成的計(jì)算任務(wù)節(jié)點(diǎn)更新DAG圖,尋找新的可計(jì)算任務(wù)節(jié)點(diǎn)并進(jìn)行映射,任務(wù)下發(fā),整個(gè)過程不斷反復(fù),直到整個(gè)任務(wù)計(jì)算完畢,返回計(jì)算結(jié)果; DAG運(yùn)行時(shí)系統(tǒng)模塊,包括主線程,線程池,主線程用于DAG模式圖的解析與更新、數(shù)據(jù)塊的分發(fā)及調(diào)度,以及容錯(cuò)控制,其中 DAG模式圖的解析是通過尋找入度為0的節(jié)點(diǎn)來獲取當(dāng)前可計(jì)算的數(shù)據(jù)模塊;而DAG圖的更新是當(dāng)有一個(gè)數(shù)據(jù)節(jié)點(diǎn)的任務(wù)完成時(shí),及時(shí)地將該任務(wù)節(jié)點(diǎn)從DAG圖中刪除,并將其所指向的邊也刪除,及時(shí)地更新DAG模式圖; 數(shù)據(jù)塊的分發(fā)及調(diào)度是當(dāng)發(fā)現(xiàn)有可計(jì)算的數(shù)據(jù)模塊時(shí),主線程會將該數(shù)據(jù)塊放入線程池的隊(duì)列緩沖區(qū)當(dāng)中,由工作線程負(fù)責(zé)計(jì)算;線程池包括線程池隊(duì)列緩沖區(qū)及工作線程線程池隊(duì)列緩沖區(qū)是主線程和工作線程的數(shù)據(jù)接口,工作線程則不停的去隊(duì)列緩沖區(qū)獲取計(jì)算任務(wù)并進(jìn)行計(jì)算; 容錯(cuò)控制,在存放當(dāng)前正處在計(jì)算中的數(shù)據(jù)節(jié)點(diǎn)的任務(wù)分配時(shí)刻,開啟一個(gè)儲存超時(shí)操作隊(duì)列,將當(dāng)前時(shí)刻與隊(duì)列中每個(gè)數(shù)據(jù)節(jié)點(diǎn)的分配時(shí)刻的差值與超時(shí)預(yù)值進(jìn)行比較,由主線程實(shí)時(shí)檢測超時(shí)隊(duì)列,對超時(shí)計(jì)算節(jié)點(diǎn)任務(wù)進(jìn)行重新分配計(jì)算,殺死超時(shí)線程,并重新創(chuàng)建一個(gè)新的線程進(jìn)行替換計(jì)算。 所述數(shù)據(jù)塊映射機(jī)制還包括用戶自定義的數(shù)據(jù)塊映射機(jī)制。 所述用戶應(yīng)用程序模塊還為系統(tǒng)提供了一個(gè)對外的接口,用戶將自定義的具體應(yīng)用加載到系統(tǒng),以使后臺運(yùn)行時(shí)系統(tǒng)則將自動調(diào)用該接口進(jìn)行并行計(jì)算。
該系統(tǒng)采用主從模式,所述主模式為主線程,所述從模式為線程池。
所述線程池包括動態(tài)線程池和靜態(tài)線程池對于靜態(tài)線程池,除了存在線程池隊(duì)列緩沖區(qū)外,每一個(gè)工作線程都有一個(gè)自己的隊(duì)列緩沖區(qū),每一個(gè)計(jì)算數(shù)據(jù)塊任務(wù)和每一個(gè)工作線程根據(jù)某種靜態(tài)映射策略在程序運(yùn)行之前就已經(jīng)綁定;當(dāng)主線程發(fā)現(xiàn)一個(gè)可計(jì)算的數(shù)據(jù)塊時(shí),將其放入線程池隊(duì)列緩沖區(qū)當(dāng)中,線程池則根據(jù)該映射機(jī)制,將任務(wù)下發(fā)到對應(yīng)的工作線程緩沖區(qū)當(dāng)中;對于動態(tài)線程池,其數(shù)據(jù)塊計(jì)算任務(wù)和工作線程不是事先綁定的,每一個(gè)閑置的工作線程動態(tài)地從線程池隊(duì)列緩沖區(qū)當(dāng)中獲取計(jì)算任務(wù);當(dāng)線程池隊(duì)列緩沖區(qū)不為空時(shí),不存在閑置的線程,反之,當(dāng)有閑置線程存在時(shí),線程池隊(duì)列緩沖區(qū)為空。
本發(fā)明還提出了一種面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型的實(shí)現(xiàn)方法,該方法包括以下步驟 用戶從DAG模式圖庫中選擇一個(gè)DAG模式圖,對DAG模式圖及運(yùn)行時(shí)需要的參數(shù)進(jìn)行初始化操作,包括設(shè)置DAG模式圖的大小、選擇對DAG圖中的每一個(gè)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)塊映射的數(shù)據(jù)塊映射機(jī)制、系統(tǒng)運(yùn)行時(shí)所需要的線程數(shù)目及time out超時(shí)參數(shù);
調(diào)用系統(tǒng)所提供的API函數(shù),初始化選擇的DAG模式圖,運(yùn)行時(shí)系統(tǒng)開始進(jìn)行后臺的并行化計(jì)算,主要包括對數(shù)據(jù)任務(wù)的自動化劃分和分配,線程的調(diào)度、反饋與管理等;返 回計(jì)算結(jié)果; 創(chuàng)建主線程和線程池,主線程用于DAG模式圖的解析與更新、數(shù)據(jù)塊的分發(fā)及調(diào) 度,以及容錯(cuò)控制 DAG模式圖的解析,通過尋找入度為0的節(jié)點(diǎn)來獲取當(dāng)前可計(jì)算的數(shù)據(jù)模塊;而 DAG圖的更新是當(dāng)有一個(gè)數(shù)據(jù)節(jié)點(diǎn)的任務(wù)完成時(shí),及時(shí)地將該任務(wù)節(jié)點(diǎn)從DAG圖中刪除,并 將其所指向的邊也刪除,及時(shí)地更新DAG模式圖; 數(shù)據(jù)塊的分發(fā)及調(diào)度,當(dāng)發(fā)現(xiàn)有可計(jì)算的數(shù)據(jù)模塊時(shí),主線程會將該數(shù)據(jù)塊放入 線程池的隊(duì)列緩沖區(qū)當(dāng)中,由工作線程負(fù)責(zé)計(jì)算;線程池包括線程池隊(duì)列緩沖區(qū)及工作線 程線程池隊(duì)列緩沖區(qū)是主線程和工作線程的數(shù)據(jù)接口,工作線程則不停的去隊(duì)列緩沖區(qū) 獲取計(jì)算任務(wù)并進(jìn)行計(jì)算; 容錯(cuò)控制,在存放當(dāng)前正處在計(jì)算中的數(shù)據(jù)節(jié)點(diǎn)的任務(wù)分配時(shí)刻,開啟一個(gè)儲存 超時(shí)操作隊(duì)列,將當(dāng)前時(shí)刻與隊(duì)列中每個(gè)數(shù)據(jù)節(jié)點(diǎn)的分配時(shí)刻的差值與超時(shí)預(yù)值進(jìn)行比 較,由主線程實(shí)時(shí)檢測超時(shí)隊(duì)列,對超時(shí)計(jì)算節(jié)點(diǎn)任務(wù)進(jìn)行重新分配計(jì)算,殺死超時(shí)線程, 并重新創(chuàng)建一個(gè)新的線程進(jìn)行替換計(jì)算。 所述數(shù)據(jù)塊映射機(jī)制還包括用戶自定義的數(shù)據(jù)塊映射機(jī)制。
該方法采用主從模式,所述主模式為主線程,所述從模式為線程池。
所述線程池包括動態(tài)線程池和靜態(tài)線程池對于靜態(tài)線程池,除了存在線程池隊(duì) 列緩沖區(qū)外,每一個(gè)工作線程都有一個(gè)自己的隊(duì)列緩沖區(qū),每一個(gè)計(jì)算數(shù)據(jù)塊任務(wù)和每一 個(gè)工作線程根據(jù)某種靜態(tài)映射策略在程序運(yùn)行之前就已經(jīng)綁定;當(dāng)主線程發(fā)現(xiàn)一個(gè)可計(jì)算 的數(shù)據(jù)塊時(shí),將其放入線程池隊(duì)列緩沖區(qū)當(dāng)中,線程池則根據(jù)該映射機(jī)制,將任務(wù)下發(fā)到對 應(yīng)的工作線程緩沖區(qū)當(dāng)中;對于動態(tài)線程池,其數(shù)據(jù)塊計(jì)算任務(wù)和工作線程不是事先綁定 的,每一個(gè)閑置的工作線程動態(tài)地從線程池隊(duì)列緩沖區(qū)當(dāng)中獲取計(jì)算任務(wù);當(dāng)線程池隊(duì)列 緩沖區(qū)不為空時(shí),不存在閑置的線程,反之,當(dāng)有閑置線程存在時(shí),線程池隊(duì)列緩沖區(qū)為空。
與現(xiàn)有技術(shù)相比,本發(fā)明能夠針對滿足DAG數(shù)據(jù)依賴型應(yīng)用,提供一套并行程序 系統(tǒng)與方法,將降低非計(jì)算機(jī)專業(yè)人員設(shè)計(jì)開發(fā)并行計(jì)算應(yīng)用程序的難度,即使沒有并行 程序設(shè)計(jì)與開發(fā)的經(jīng)驗(yàn)和技巧的程序設(shè)計(jì)與開發(fā)人員,只要懂得問題域的專業(yè)知識,就可 以正確且高效的進(jìn)行并行程序設(shè)計(jì)與開發(fā),以提高并行軟件開發(fā)人員的編程效率和減少程 序編碼的錯(cuò)誤,最終提高工作效率和相應(yīng)學(xué)科領(lǐng)域的研究效率和應(yīng)用水平,縮短并行軟件 的開發(fā)周期,而且能夠使完成的并行計(jì)算應(yīng)用程序結(jié)構(gòu)更為合理,性能更為優(yōu)化,基于此方 法的系統(tǒng)平臺市場前景非常廣闊,面臨著巨大的市場機(jī)遇。


圖1為本發(fā)明的面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng)和實(shí)現(xiàn)方法的系統(tǒng) 結(jié)構(gòu)示意圖; 圖2為本發(fā)明的一個(gè)典型常用的DAG模式圖; 圖3為本發(fā)明的面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng)和實(shí)現(xiàn)方法提供的 常用的DAG模式圖。
具體實(shí)施例方式
本發(fā)明的面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng)和方法,如圖1所示,包括
三個(gè)模塊組成用戶應(yīng)用程序模塊、DAG模式圖模塊以及DAG運(yùn)行時(shí)系統(tǒng)模塊。 用戶應(yīng)用程序模塊用于將一些將用戶設(shè)定的基本步驟和內(nèi)容,作為整個(gè)并行編程
模型系統(tǒng)和方法的驅(qū)動。在設(shè)計(jì)與實(shí)現(xiàn)該模塊中,用戶只需要做一些簡單的初始化設(shè)置和
具體的算法應(yīng)用上,而并行編程可以自動實(shí)現(xiàn)。用戶應(yīng)用程序模塊的處理步驟包括 首先,用戶根據(jù)自己應(yīng)用的需要,從DAG模式圖庫中選擇一個(gè)DAG模式圖(如果系
統(tǒng)提供的DAG模式圖無法滿足用戶應(yīng)用的需要,用戶可以根據(jù)需要,實(shí)現(xiàn)自己的DAG模式
圖,并將其添加到DAG模式圖庫當(dāng)中),對DAG模式圖及運(yùn)行時(shí)需要的參數(shù)進(jìn)行初始化操作,
主要包括設(shè)置DAG模式圖的大小(寬和高),選擇系統(tǒng)提供的一種數(shù)據(jù)塊映射機(jī)制或者用戶
自定義的數(shù)據(jù)塊映射機(jī)制對DAG圖中的每一個(gè)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)塊映射,系統(tǒng)運(yùn)行時(shí)所需要的
線程數(shù)目及timeout參數(shù)等;然后,當(dāng)配置和初始化完各種所需要的參數(shù)后,調(diào)用系統(tǒng)所提
供的API函數(shù),啟動選擇的DAG,運(yùn)行時(shí)系統(tǒng)開始進(jìn)行后臺的并行化計(jì)算,主要包括對數(shù)據(jù)
任務(wù)的自動化劃分和分配,線程的調(diào)度、反饋與管理等;最后,當(dāng)并行化計(jì)算完畢后,返回計(jì)
算結(jié)果;另外,該用戶應(yīng)用程序模塊提供了一個(gè)對外的接口,可讓用戶將自定義的具體應(yīng)用
加載到系統(tǒng),以使后臺運(yùn)行時(shí)系統(tǒng)則將自動調(diào)用該接口進(jìn)行并行計(jì)算。 DAG模式圖模塊主要為一個(gè)DAG模式圖庫,在該DAG模式圖庫中,存儲著各種常用
的DAG模式圖,主要包括來自系統(tǒng)提供的DAG模式圖,以及用戶自定義的DAG模式圖。所謂
DAG模式圖,其首先是一個(gè)規(guī)則的DAG圖,定義和描述了每個(gè)DAG節(jié)點(diǎn)間的基本的依賴關(guān)系,
但是它的大小(寬和高)并未固定,而是作為參數(shù)供用戶進(jìn)行大小設(shè)置,如圖2所示為一個(gè)
典型的DAG模式圖,其中每一個(gè)DAG節(jié)點(diǎn)代表著真實(shí)數(shù)據(jù)中的一個(gè)數(shù)據(jù)塊,每一個(gè)DAG節(jié)點(diǎn)
都有且僅依賴著其左邊和上邊的節(jié)點(diǎn)(依賴關(guān)系規(guī)則且固定),通過大小參數(shù)的不同設(shè)定,
我們可以得到各種不同的DAG圖。如圖3所示,其為系統(tǒng)提供給用戶選擇的常用DAG模式圖。 DAG運(yùn)行時(shí)系統(tǒng)模塊用于系統(tǒng)的DAG模式圖的解析與更新操作和程序并行化控制 及容錯(cuò)處理操作。其采用了主從模式,分別由主線程,線程兩大部分構(gòu)成。主線程部分負(fù)責(zé) DAG圖的解析與更新操作,數(shù)據(jù)塊任務(wù)的分發(fā)及調(diào)度,以及容錯(cuò)控制功能。DAG圖的解析主 要是通過尋找入度為0的節(jié)點(diǎn)來獲取當(dāng)前可計(jì)算的數(shù)據(jù)模塊,而DAG圖的更新則是當(dāng)有一 個(gè)數(shù)據(jù)節(jié)點(diǎn)的任務(wù)完成時(shí),及時(shí)地將該任務(wù)節(jié)點(diǎn)從DAG圖中刪除,并將其所指向的邊也刪 除,及時(shí)地更新DAG圖。當(dāng)發(fā)現(xiàn)有可計(jì)算的數(shù)據(jù)模塊時(shí),主線程會將該數(shù)據(jù)塊放入線程池的 隊(duì)列緩沖區(qū)當(dāng)中,由工作線程負(fù)責(zé)計(jì)算。線程池部分由線程池隊(duì)列緩沖區(qū)及工作線程兩部 分組成。線程池隊(duì)列緩沖區(qū)是主線程和工作線程的數(shù)據(jù)接口,工作線程則不停的去隊(duì)列緩 沖區(qū)獲取計(jì)算任務(wù)并進(jìn)行計(jì)算。線程池具體分為動態(tài)線程池和靜態(tài)線程池。對于靜態(tài)線程 池,除了存在線程池隊(duì)列緩沖區(qū)外,每一個(gè)工作線程都有一個(gè)自己的隊(duì)列緩沖區(qū)。每一個(gè)計(jì) 算數(shù)據(jù)塊任務(wù)和每一個(gè)工作線程根據(jù)某種靜態(tài)映射策略在程序運(yùn)行之前就已經(jīng)綁定。當(dāng)主 線程發(fā)現(xiàn)一個(gè)可計(jì)算的數(shù)據(jù)塊時(shí),將其放入線程池隊(duì)列緩沖區(qū)當(dāng)中,線程池則根據(jù)該映射 機(jī)制,將任務(wù)下發(fā)到對應(yīng)的工作線程緩沖區(qū)當(dāng)中。對于動態(tài)線程池,其數(shù)據(jù)塊計(jì)算任務(wù)和工 作線程不是事先綁定的,每一個(gè)閑置的工作線程動態(tài)地從線程池隊(duì)列緩沖區(qū)當(dāng)中獲取計(jì)算 任務(wù)。也即是,當(dāng)線程池隊(duì)列緩沖區(qū)不為空時(shí), 一定不存在閑置的線程,反之,當(dāng)有閑置線程存在時(shí),線程池隊(duì)列緩沖區(qū)一定為空。 下面通過一個(gè)具體實(shí)例,來詳細(xì)說明本發(fā)明的技術(shù)方案 本發(fā)明的面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng)和方法,針對DAG數(shù)據(jù)驅(qū) 動型應(yīng)用的并行化,從編程模型的角度,通過將那些復(fù)雜的并行細(xì)節(jié)部分進(jìn)行封裝隱藏,將 其交由后臺運(yùn)行時(shí)系統(tǒng)負(fù)責(zé)完成,讓用戶停留在串行程序設(shè)計(jì)當(dāng)中,將其精力主要集中于 具體的算法應(yīng)用當(dāng)中,而并非并行相關(guān)部分。 用戶在使用該系統(tǒng)時(shí),首先需要理解整個(gè)編程模型系統(tǒng)和方法的每一個(gè)模塊的內(nèi) 涵和意義,并且能夠知道自己所面臨的DAG數(shù)據(jù)型應(yīng)用的數(shù)據(jù)間的依賴關(guān)系,在系統(tǒng)所提 供DAG模式圖庫中選擇適合的DAG模式圖。另外,在用戶應(yīng)用程序模塊的初始化階段,設(shè)置 合理的初始化參數(shù)對整個(gè)系統(tǒng)程序的運(yùn)行性能有著直接的影響。例如,假設(shè)在多核環(huán)境當(dāng) 中,線程數(shù)目的多少直接決定著程序的性能好壞,過大過小對程序性能都會有影響,合理的 情況是讓其值接近或等于當(dāng)前CPU核的數(shù)目。同樣,每一個(gè)數(shù)據(jù)塊的大小設(shè)置以及timout 的值大小也都對性能產(chǎn)生直接影響。 面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng)和方法,已設(shè)計(jì)并實(shí)現(xiàn)的輔助并行 計(jì)算應(yīng)用程序開發(fā)人員進(jìn)行快速開發(fā)的通用集成開發(fā)環(huán)境(EasyPAB系統(tǒng))中添加實(shí)現(xiàn)。該 系統(tǒng)擁有良好的用戶界面,對于各種常用的功能提供了操作系統(tǒng)風(fēng)格的圖形化操作界面, 從而方便了程序員和其他系統(tǒng)用戶操作。用戶可以在該平臺上利用已經(jīng)實(shí)現(xiàn)好的面向DAG 數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng),進(jìn)行應(yīng)用程序開發(fā),從而避免去實(shí)現(xiàn)面向DAG數(shù)據(jù) 驅(qū)動型應(yīng)用的并行編程模型的代碼框架。
權(quán)利要求
一種面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng),包括DAG模式圖模塊、用戶應(yīng)用程序模塊以及DAG運(yùn)行時(shí)系統(tǒng)模塊,其特征在于,其中DAG模式圖模塊,包括DAG模式圖庫,該DAG模式圖庫中存儲有來自系統(tǒng)提供的DAG模式圖和用戶自定義的DAG模式圖;用戶應(yīng)用程序模塊,作為整個(gè)并行編程模型系統(tǒng)的驅(qū)動,用于用戶的初始化設(shè)置和具體的并行化算法的確定,其處理包括用戶從DAG模式圖庫中選擇一個(gè)DAG模式圖,對DAG模式圖及運(yùn)行時(shí)需要的參數(shù)進(jìn)行初始化操作,包括設(shè)置DAG模式圖的大小、選擇對DAG圖中的每一個(gè)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)塊映射的數(shù)據(jù)塊映射機(jī)制、系統(tǒng)運(yùn)行時(shí)所需要的線程數(shù)目及time out(對應(yīng)中文超時(shí))參數(shù)等;調(diào)用系統(tǒng)所提供的API函數(shù),初始化選擇的DAG模式圖,運(yùn)行時(shí)系統(tǒng)開始進(jìn)行后臺的并行化計(jì)算,包括對數(shù)據(jù)任務(wù)的自動化劃分和分配, 線程的調(diào)度、反饋與管理,具體過程為主線程開始解析DAG圖,尋找當(dāng)前可計(jì)算的數(shù)據(jù)節(jié)點(diǎn),將其進(jìn)行真實(shí)數(shù)據(jù)塊任務(wù)的映射,并將可計(jì)算數(shù)據(jù)任務(wù)放入線程池隊(duì)列緩沖區(qū),而線程池內(nèi)的閑置工作線程一旦發(fā)現(xiàn)線程池隊(duì)列不為空時(shí),將自動地從線程池隊(duì)列緩沖區(qū)獲取一塊計(jì)算任務(wù),并開始進(jìn)行計(jì)算;當(dāng)某個(gè)工作線程完成任務(wù)時(shí),將計(jì)算完的任務(wù)信息放入反饋隊(duì)列,主線程則及時(shí)地通過反饋隊(duì)列獲知完成的計(jì)算任務(wù)節(jié)點(diǎn),根據(jù)完成的計(jì)算任務(wù)節(jié)點(diǎn)更新DAG圖,尋找新的可計(jì)算任務(wù)節(jié)點(diǎn)并進(jìn)行映射,任務(wù)下發(fā),整個(gè)過程不斷反復(fù),直到整個(gè)任務(wù)計(jì)算完畢,返回計(jì)算結(jié)果;DAG運(yùn)行時(shí)系統(tǒng)模塊,包括主線程,線程池,主線程用于DAG模式圖的解析與更新、數(shù)據(jù)塊的分發(fā)及調(diào)度,以及容錯(cuò)控制,其中DAG模式圖的解析是通過尋找入度為0的節(jié)點(diǎn)來獲取當(dāng)前可計(jì)算的數(shù)據(jù)模塊;而DAG圖的更新是當(dāng)有一個(gè)數(shù)據(jù)節(jié)點(diǎn)的任務(wù)完成時(shí),及時(shí)地將該任務(wù)節(jié)點(diǎn)從DAG圖中刪除,并將其所指向的邊也刪除,及時(shí)地更新DAG模式圖;數(shù)據(jù)塊的分發(fā)及調(diào)度是當(dāng)發(fā)現(xiàn)有可計(jì)算的數(shù)據(jù)模塊時(shí),主線程會將該數(shù)據(jù)塊放入線程池的隊(duì)列緩沖區(qū)當(dāng)中,由工作線程負(fù)責(zé)計(jì)算;線程池包括線程池隊(duì)列緩沖區(qū)及工作線程線程池隊(duì)列緩沖區(qū)是主線程和工作線程的數(shù)據(jù)接口,工作線程則不停的去隊(duì)列緩沖區(qū)獲取計(jì)算任務(wù)并進(jìn)行計(jì)算;容錯(cuò)控制,在存放當(dāng)前正處在計(jì)算中的數(shù)據(jù)節(jié)點(diǎn)的任務(wù)分配時(shí)刻,開啟一個(gè)儲存超時(shí)操作隊(duì)列,將當(dāng)前時(shí)刻與隊(duì)列中每個(gè)數(shù)據(jù)節(jié)點(diǎn)的分配時(shí)刻的差值與超時(shí)預(yù)值進(jìn)行比較,由主線程實(shí)時(shí)檢測超時(shí)隊(duì)列,對超時(shí)計(jì)算節(jié)點(diǎn)任務(wù)進(jìn)行重新分配計(jì)算,殺死超時(shí)線程,并重新創(chuàng)建一個(gè)新的線程進(jìn)行替換計(jì)算。
2. 如權(quán)利要求1所述的面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng),其特征在于,所 述數(shù)據(jù)塊映射機(jī)制還包括用戶自定義的數(shù)據(jù)塊映射機(jī)制。
3. 如權(quán)利要求1所述的面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng),其特征在于,所 述用戶應(yīng)用程序模塊還為系統(tǒng)提供了一個(gè)對外的接口,用戶將自定義的具體應(yīng)用加載到系 統(tǒng),以使后臺運(yùn)行時(shí)系統(tǒng)則將自動調(diào)用該接口進(jìn)行并行計(jì)算。
4. 如權(quán)利要求1所述的面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng),其特征在于,該 系統(tǒng)采用主從模式,所述主模式為主線程,所述從模式為線程池。
5. 如權(quán)利要求1或4所述的面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng),其特征在 于,所述線程池包括動態(tài)線程池和靜態(tài)線程池對于靜態(tài)線程池,除了存在線程池隊(duì)列緩沖區(qū)外,每一個(gè)工作線程都有一個(gè)自己的隊(duì)列緩沖區(qū),每一個(gè)計(jì)算數(shù)據(jù)塊任務(wù)和每一個(gè)工作 線程根據(jù)某種靜態(tài)映射策略在程序運(yùn)行之前就已經(jīng)綁定;當(dāng)主線程發(fā)現(xiàn)一個(gè)可計(jì)算的數(shù)據(jù) 塊時(shí),將其放入線程池隊(duì)列緩沖區(qū)當(dāng)中,線程池則根據(jù)該映射機(jī)制,將任務(wù)下發(fā)到對應(yīng)的工 作線程緩沖區(qū)當(dāng)中;對于動態(tài)線程池,其數(shù)據(jù)塊計(jì)算任務(wù)和工作線程不是事先綁定的,每一 個(gè)閑置的工作線程動態(tài)地從線程池隊(duì)列緩沖區(qū)當(dāng)中獲取計(jì)算任務(wù);當(dāng)線程池隊(duì)列緩沖區(qū)不 為空時(shí),不存在閑置的線程,反之,當(dāng)有閑置線程存在時(shí),線程池隊(duì)列緩沖區(qū)為空。
6. —種面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型的實(shí)現(xiàn)方法,該方法包括以下步驟 用戶從DAG模式圖庫中選擇一個(gè)DAG模式圖,對DAG模式圖及運(yùn)行時(shí)需要的參數(shù)進(jìn)行初始化操作,包括設(shè)置DAG模式圖的大小、選擇對DAG圖中的每一個(gè)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)塊映射的 數(shù)據(jù)塊映射機(jī)制、系統(tǒng)運(yùn)行時(shí)所需要的線程數(shù)目及time out超時(shí)參數(shù);調(diào)用系統(tǒng)所提供的API函數(shù),初始化選擇的DAG模式圖,運(yùn)行時(shí)系統(tǒng)開始進(jìn)行后臺的并 行化計(jì)算,主要包括對數(shù)據(jù)任務(wù)的自動化劃分和分配,線程的調(diào)度、反饋與管理;返回計(jì)算 結(jié)果;創(chuàng)建主線程和線程池,主線程用于DAG模式圖的解析與更新、數(shù)據(jù)塊的分發(fā)及調(diào)度,以 及容錯(cuò)控制DAG模式圖的解析,通過尋找入度為0的節(jié)點(diǎn)來獲取當(dāng)前可計(jì)算的數(shù)據(jù)模塊;而DAG圖 的更新是當(dāng)有一個(gè)數(shù)據(jù)節(jié)點(diǎn)的任務(wù)完成時(shí),及時(shí)地將該任務(wù)節(jié)點(diǎn)從DAG圖中刪除,并將其 所指向的邊也刪除,及時(shí)地更新DAG模式圖;數(shù)據(jù)塊的分發(fā)及調(diào)度,當(dāng)發(fā)現(xiàn)有可計(jì)算的數(shù)據(jù)模塊時(shí),主線程會將該數(shù)據(jù)塊放入線程 池的隊(duì)列緩沖區(qū)當(dāng)中,由工作線程負(fù)責(zé)計(jì)算;線程池包括線程池隊(duì)列緩沖區(qū)及工作線程 線程池隊(duì)列緩沖區(qū)是主線程和工作線程的數(shù)據(jù)接口,工作線程則不停的去隊(duì)列緩沖區(qū)獲取 計(jì)算任務(wù)并進(jìn)行計(jì)算;容錯(cuò)控制,在存放當(dāng)前正處在計(jì)算中的數(shù)據(jù)節(jié)點(diǎn)的任務(wù)分配時(shí)刻,開啟一個(gè)儲存超時(shí) 操作隊(duì)列,將當(dāng)前時(shí)刻與隊(duì)列中每個(gè)數(shù)據(jù)節(jié)點(diǎn)的分配時(shí)刻的差值與超時(shí)預(yù)值進(jìn)行比較,由 主線程實(shí)時(shí)檢測超時(shí)隊(duì)列,對超時(shí)計(jì)算節(jié)點(diǎn)任務(wù)進(jìn)行重新分配計(jì)算,殺死超時(shí)線程,并重新 創(chuàng)建一個(gè)新的線程進(jìn)行替換計(jì)算。
7. 如權(quán)利要求6所述的面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型的實(shí)現(xiàn)方法,其特征 在于,所述數(shù)據(jù)塊映射機(jī)制還包括用戶自定義的數(shù)據(jù)塊映射機(jī)制。
8. 如權(quán)利要求6所述的面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型的實(shí)現(xiàn)方法,其特征 在于,該方法采用主從模式,所述主模式為主線程,所述從模式為線程池。
9. 如權(quán)利要求6或8所述的面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型的實(shí)現(xiàn)方法,其 特征在于,所述線程池包括動態(tài)線程池和靜態(tài)線程池對于靜態(tài)線程池,除了存在線程池隊(duì) 列緩沖區(qū)外,每一個(gè)工作線程都有一個(gè)自己的隊(duì)列緩沖區(qū),每一個(gè)計(jì)算數(shù)據(jù)塊任務(wù)和每一 個(gè)工作線程根據(jù)某種靜態(tài)映射策略在程序運(yùn)行之前就已經(jīng)綁定;當(dāng)主線程發(fā)現(xiàn)一個(gè)可計(jì)算 的數(shù)據(jù)塊時(shí),將其放入線程池隊(duì)列緩沖區(qū)當(dāng)中,線程池則根據(jù)該映射機(jī)制,將任務(wù)下發(fā)到對 應(yīng)的工作線程緩沖區(qū)當(dāng)中;對于動態(tài)線程池,其數(shù)據(jù)塊計(jì)算任務(wù)和工作線程不是事先綁定 的,每一個(gè)閑置的工作線程動態(tài)地從線程池隊(duì)列緩沖區(qū)當(dāng)中獲取計(jì)算任務(wù);當(dāng)線程池隊(duì)列 緩沖區(qū)不為空時(shí),不存在閑置的線程,反之,當(dāng)有閑置線程存在時(shí),線程池隊(duì)列緩沖區(qū)為空。
全文摘要
本發(fā)明公開了一種面向DAG數(shù)據(jù)驅(qū)動型應(yīng)用的并行編程模型系統(tǒng)和實(shí)現(xiàn)方法,包括DAG模式圖模塊、用戶應(yīng)用程序模塊以及DAG運(yùn)行時(shí)系統(tǒng)模塊,其中DAG模式圖模塊包括DAG模式圖庫;用戶應(yīng)用程序模塊用于用戶的初始化設(shè)置和具體的并行化算法的確定;DAG運(yùn)行時(shí)系統(tǒng)模塊包括主線程,線程池。主線程用于DAG模式圖的解析與更新、數(shù)據(jù)塊的分發(fā)及調(diào)度,以及容錯(cuò)控制,線程池包括線程池隊(duì)列緩沖區(qū)及工作線程線程池隊(duì)列緩沖區(qū)是主線程和工作線程的數(shù)據(jù)接口,工作線程則不停的去隊(duì)列緩沖區(qū)獲取計(jì)算任務(wù)并進(jìn)行計(jì)算。與現(xiàn)有技術(shù)相比,本發(fā)明降低非計(jì)算機(jī)專業(yè)人員設(shè)計(jì)開發(fā)并行計(jì)算應(yīng)用程序的難度,縮短并行軟件的開發(fā)周期,而且能夠使完成的并行計(jì)算應(yīng)用程序結(jié)構(gòu)更為合理,性能更為優(yōu)化。
文檔編號G06F9/44GK101710286SQ200910312089
公開日2010年5月19日 申請日期2009年12月23日 優(yōu)先權(quán)日2009年12月23日
發(fā)明者于策, 孫濟(jì)洲, 孫超, 張濤, 徐禎, 湯善江 申請人:天津大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
定兴县| 兖州市| 安义县| 如皋市| 通山县| 乌兰察布市| 德安县| 蕲春县| 维西| 九台市| 岳池县| 土默特左旗| 石嘴山市| 锡林浩特市| 凤翔县| 炉霍县| 乐昌市| 钟山县| 双柏县| 宁都县| 自贡市| 肇州县| 迭部县| 遂平县| 玉田县| 柏乡县| 宁夏| 兰溪市| 墨脱县| 临安市| 沙坪坝区| 芜湖市| 临洮县| 苗栗市| 通道| 茶陵县| 泊头市| 信丰县| 沈丘县| 阆中市| 巫溪县|