国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      面向異構(gòu)系統(tǒng)的數(shù)據(jù)傳輸優(yōu)化方法

      文檔序號:10612761閱讀:402來源:國知局
      面向異構(gòu)系統(tǒng)的數(shù)據(jù)傳輸優(yōu)化方法
      【專利摘要】本發(fā)明公開了一種面向異構(gòu)系統(tǒng)的數(shù)據(jù)傳輸優(yōu)化方法,目的是減少數(shù)據(jù)傳輸量,提高異構(gòu)系統(tǒng)數(shù)據(jù)傳輸效率和提升異構(gòu)計(jì)算系統(tǒng)效率。技術(shù)方案是先定義工作流中的處理器集合C和整個(gè)工作流中的任務(wù)集T,然后收集工作流中任務(wù)處理需要的原始數(shù)據(jù)集合D,統(tǒng)計(jì)工作流中各任務(wù)與數(shù)據(jù)之間的關(guān)系,接著在任務(wù)運(yùn)行過程生成中間數(shù)據(jù)集,最后確認(rèn)任務(wù)運(yùn)行需要傳入的最小數(shù)據(jù)集。采用本發(fā)明可以將處理器之間需要傳輸?shù)臄?shù)據(jù)集最小化,緩解異構(gòu)系統(tǒng)數(shù)據(jù)傳輸壓力,提高異構(gòu)系統(tǒng)的帶寬利用率,提升異構(gòu)計(jì)算系統(tǒng)效率。
      【專利說明】
      面向異構(gòu)系統(tǒng)的數(shù)據(jù)傳輸優(yōu)化方法
      技術(shù)領(lǐng)域
      [0001] 本發(fā)明涉及數(shù)據(jù)傳輸優(yōu)化方法,尤指面向異構(gòu)計(jì)算系統(tǒng)的數(shù)據(jù)傳輸優(yōu)化方法。
      【背景技術(shù)】
      [0002] 異構(gòu)計(jì)算系統(tǒng)是由主處理器和加速器兩種不同體系結(jié)構(gòu)處理器搭建的計(jì)算機(jī)系 統(tǒng)。目前,主流的異構(gòu)計(jì)算系統(tǒng)有CPU+GPU(Graphics Processing Units)和CPU+MIC(Many Integrated Core)組成異構(gòu)計(jì)算系統(tǒng)。
      [0003] 通常,異構(gòu)計(jì)算系統(tǒng)中主處理器與加速器之間通過PCIE(Peripheral Component Interface Express,外圍器件擴(kuò)展接口)通道以數(shù)據(jù)報(bào)文的形式完成數(shù)據(jù)傳輸和通信,加 速器內(nèi)部的全局通信必須在加速器全局存儲(chǔ)空間中進(jìn)行,基本通信模式如圖1所示。
      [0004] 隨著異構(gòu)計(jì)算系統(tǒng)計(jì)算能力的不斷攀升,相對滯后的數(shù)據(jù)通信能力逐漸成為異構(gòu) 計(jì)算系統(tǒng)性能進(jìn)一步提升的瓶頸。如何避免主處理器和加速器之間頻繁的數(shù)據(jù)通信、提高 PCIE數(shù)據(jù)傳輸效率是異構(gòu)計(jì)算系統(tǒng)高效協(xié)同及性能優(yōu)化的關(guān)鍵。
      [0005] 目前,異構(gòu)計(jì)算系統(tǒng)中主處理器與加速器之間的數(shù)據(jù)傳輸優(yōu)化方法主要有以下幾 種:
      [0006] (1)零拷貝。該方法指加速器端獨(dú)立完成待處理數(shù)據(jù)集的生成和存儲(chǔ),避免數(shù)據(jù)在 主處理器和加速器之間的來回傳輸。但是,該方法對加速器端的存儲(chǔ)層次和存儲(chǔ)空間容量 要求高,并且加速器端支持的數(shù)據(jù)結(jié)構(gòu)類型有限。因此,零拷貝方法雖然能夠最小化主處理 器與加速器之間的數(shù)據(jù)傳輸,但是適用范圍受限。
      [0007] (2)數(shù)據(jù)傳輸與數(shù)據(jù)計(jì)算重疊。該方法的核心思想為將主處理器與加速器之間的 數(shù)據(jù)傳輸延遲隱藏于數(shù)據(jù)計(jì)算之中,可以顯著提升異構(gòu)計(jì)算系統(tǒng)的效率。該方法通常要求 數(shù)據(jù)計(jì)算時(shí)間遠(yuǎn)大于數(shù)據(jù)傳輸時(shí)間,只有這樣才能將數(shù)據(jù)傳輸時(shí)間很好的重疊與數(shù)據(jù)計(jì)算 之中,才能提升異構(gòu)計(jì)算系統(tǒng)效率。但是,該方法對數(shù)據(jù)傳輸操作并無優(yōu)化,對于數(shù)據(jù)傳輸 時(shí)間接近甚至超過數(shù)據(jù)計(jì)算時(shí)間的情形,該方法很難將數(shù)據(jù)傳輸重疊于數(shù)據(jù)計(jì)算之中。
      [0008] 上述兩類異構(gòu)計(jì)算系統(tǒng)中主處理器與加速器之間的數(shù)據(jù)傳輸優(yōu)化方法在一定程 度上,面向具體的大規(guī)模應(yīng)用加速都可以提高異構(gòu)計(jì)算的執(zhí)行效率。但是,零拷貝方法應(yīng)用 范圍十分有限;傳輸與數(shù)據(jù)計(jì)算重疊方法并沒有減少數(shù)據(jù)傳輸量,甚至?xí)斐刹槐匾臄?shù) 據(jù)傳輸,嚴(yán)重影響了異構(gòu)系統(tǒng)的數(shù)據(jù)傳輸訪問性能。
      [0009] 如何確認(rèn)最小數(shù)據(jù)集的傳輸,解決異構(gòu)系統(tǒng)數(shù)據(jù)傳輸效率低下的難題是本領(lǐng)域技 術(shù)人員關(guān)注的重要技術(shù)問題。

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

      [0010] 本發(fā)明要解決的技術(shù)問題在于:針對異構(gòu)系統(tǒng)數(shù)據(jù)傳輸效率低下的問題,提出一 種面向異構(gòu)系統(tǒng)的數(shù)據(jù)傳輸優(yōu)化方法,避免冗余數(shù)據(jù)傳輸,保證最小數(shù)據(jù)集的傳輸,減少數(shù) 據(jù)傳輸量,以提高異構(gòu)系統(tǒng)數(shù)據(jù)傳輸效率和提升異構(gòu)計(jì)算系統(tǒng)效率。
      [0011] 為了解決上述技術(shù)問題,本發(fā)明的具體技術(shù)方案為:
      [0012] 第一步、定義工作流中的處理器集合(::〇={(31,〇2,"_(^,"^},其中,(^為第」個(gè)處 理器,cj的屬性cptj = core Xf Xsimd,其中j = l,2,…,N,N為異構(gòu)系統(tǒng)中處理器和加速器的 總數(shù),cptj表示處理器Cj的處理能力大小,core為Cj的核數(shù),f為Cj的主頻,simd為Cj的向量處 理單元寬度。由于在工作流中的任務(wù)數(shù)量很多,任務(wù)被分派到處理器后,完成每個(gè)任務(wù)需要 的處理時(shí)間與處理器的性能有關(guān),該性能取決于參數(shù)cpk。由于用戶可以根據(jù)自己需要申 請數(shù)據(jù)的存儲(chǔ)空間,所以不考慮處理器本地存儲(chǔ)容量限制問題。
      [0013] 第二步、定義整個(gè)工作流中的任務(wù)集τ = {ti,t2,…ti,…,?μ},其中,第i個(gè)任務(wù)ti = 〈runtimei,taskid〉,runtimei為任務(wù)ti運(yùn)行時(shí)間,taskid為執(zhí)行任務(wù)ti所需的數(shù)據(jù)集,其中i = 1,2,···Μ,Μ為工作流中任務(wù)的個(gè)數(shù);
      [0014] 第三步、收集工作流中任務(wù)處理需要的原始數(shù)據(jù)集合D,具體步驟如下:
      [0015] 3.1初始化原始數(shù)據(jù)集合!>= 0 ;
      [0016] 3.2定義變量1^ = 1,
      [0017] 3.3初始化任務(wù)tk的數(shù)據(jù)集= 0 ;
      [0018] 3.4通過IntelVtune性能分析工具收集tk運(yùn)行所需要的數(shù)據(jù),收集的數(shù)據(jù)d為四元 組(1 =〈8126,1',(3,1;[1^>,其中,8126表示數(shù)據(jù)的大小,1'為引用數(shù)據(jù)(1的任務(wù)集合,(3為(1所在 的處理器,link表示數(shù)據(jù)d相對于T中對應(yīng)任務(wù)的傳輸方向,有兩個(gè)值,若link為in,表示該 數(shù)據(jù)為對應(yīng)任務(wù)的輸入數(shù)據(jù),若link為out,表示該數(shù)據(jù)為對應(yīng)任務(wù)的輸出數(shù)據(jù),將數(shù)據(jù)d加 到集合Dk中;
      [0019] 3 · 5更新數(shù)據(jù)集D = D U Dk,將Dk的元素添加到D;
      [0020] 3.6更新1<: = 1<:+1;
      [0021] 3.7如果k<M,轉(zhuǎn)3.3,否則,原始數(shù)據(jù)收集完畢,得到原始數(shù)據(jù)集合D,轉(zhuǎn)第四步;
      [0022] 第四步、統(tǒng)計(jì)工作流中各任務(wù)與數(shù)據(jù)之間的關(guān)系。具體方法如下:
      [0023] 4.1令第一任務(wù)集合變量ST = T,即將工作流中的任務(wù)集T = {t,t2,…ti,…,tM}賦 值給St;
      [0024] 4.2令數(shù)據(jù)集合Sd = D,將數(shù)據(jù)集合D賦值給集合SD;
      [0025] 4.3 定義變量 i = l;
      [0026] 4.4任取St中的一個(gè)元素,該任務(wù)用ti表示;
      [0027] 4.5定義任務(wù)ti所需的數(shù)據(jù)集-之=0 ;
      [0028] 4.6定義變量」=0;
      [0029] 4.7任取SD中任意一個(gè)數(shù)據(jù),該數(shù)據(jù)用山表示;
      [0030] 4.8若任務(wù)丨1需要引用數(shù)據(jù)1,將數(shù)據(jù)1加入任務(wù)丨1所需的數(shù)據(jù)集(1&81^ 1,即 而為=ito'A', up/,.丨,轉(zhuǎn)4.9;否則,直接轉(zhuǎn)4.9;
      [0031] 4.9更新SD=SD-{d],從集合中刪除元素 dJ;
      [0032] 4.1〇若&#0,」=」+1,轉(zhuǎn)4.7,否則,數(shù)據(jù)集合遍歷完畢,轉(zhuǎn)4.11;
      [0033] 4.11更新3了=3廣{乜};
      [0034] 4.12若&#0,丨=丨+1,轉(zhuǎn)4.4,否則,任務(wù)集合遍歷完畢,轉(zhuǎn)第五步;
      [0035] 第五步、在任務(wù)運(yùn)行過程中生成中間數(shù)據(jù)集。具體步驟如下:
      [0036] 5.1定義第二任務(wù)集合變量1^,令1^ = 1',即將工作流中的任務(wù)集1={^142,··· 。,…心丨賦值給!^
      [0037] 5.2令變量口 = 1;
      [0038] 5.3任取Ττ中的一個(gè)元素,該任務(wù)用tP表示;
      [0039] 5.4定義任務(wù)tP生成的中間數(shù)據(jù)集先" = 0 ;
      [0040] 5.5采用Intel Vtune性能分析工具統(tǒng)計(jì)任務(wù)tp運(yùn)行生成的中間數(shù)據(jù),將中間數(shù)據(jù) 放到集合;
      [0041 ] 5 · 6更新數(shù)據(jù)集,即令
      [0042] 5.7更新1>=1>-{^};
      [0043] 5.8若7^0,ρ = ρ+1,轉(zhuǎn)5.4,否則,任務(wù)集合遍歷完畢,轉(zhuǎn)第六步;
      [0044] 第六步、確認(rèn)任務(wù)運(yùn)行需要傳入的最小數(shù)據(jù)集。具體步驟如下:
      [0045] 6.1定義第三任務(wù)集合變量TDt,令TDt = Τ,即將工作流中的任務(wù)集Τ = {t,t2,… 。,."3(?}賦值給丁0丁;
      [0046] 6.2令變量9 = 1;
      [0047] 6.3任取任務(wù)集合TDt中的一個(gè)元素,該任務(wù)用tq表示;
      [0048] 6.4確認(rèn)任務(wù)tq需要且已經(jīng)位于tq所在處理器的數(shù)據(jù)集合夂\和、需要的數(shù)據(jù)集合 Λ?, ·具體方法如下:
      [0049] 6.4.1定義任務(wù)tq需要的數(shù)據(jù)= 0 ;
      [0050] 6.4.2定義任務(wù)tq需要且已經(jīng)位于任務(wù)tq所在處理器的數(shù)據(jù)集合= 0 ;
      [0051 ] 6.4.3定義集合STd = D,將數(shù)據(jù)集合D賦值給集合STD;
      [0052] 6.4.4令『=0;
      [0053] 6.4.5任取數(shù)據(jù)集合STD中一個(gè)數(shù)據(jù),該數(shù)據(jù)用dr表示;
      [0054] 6.4.6若任務(wù)tq需要引用數(shù)據(jù)dr,進(jìn)一步核查dr相對于任務(wù)tq的傳輸方向,轉(zhuǎn) 6.4.7,否則,任務(wù)t q不需要引用dr,轉(zhuǎn)6.4.10;
      [0055] 6.4.7若數(shù)據(jù)dr相對于任務(wù)tq的傳輸方向?yàn)閛ut,也就是說數(shù)據(jù)dr已經(jīng)位于t q所在 處理器,轉(zhuǎn)6.4.8,否則,數(shù)據(jù)dr相對于任務(wù)tq的傳輸方向?yàn)閕n,僅將數(shù)據(jù)加入任務(wù)需要的數(shù) 據(jù)集合,轉(zhuǎn)6.4.9;
      [0056] 6.4.85^ = 5^^沁};將數(shù)據(jù)dr加入tq需要且已經(jīng)位于、所在處理器的數(shù)據(jù)集 合坤:
      [0057] 6.4.9M& 將該數(shù)據(jù)加入tq需要的數(shù)據(jù)集合 ;
      [0058] 6.4.10STD = STD-{dr};
      [0059] 6.4.11若沿V矣0 ,r = r+l,轉(zhuǎn)6.4.5,否則,tq需要且已經(jīng)位于tq所在處理器的數(shù)據(jù) 核實(shí)遍歷完畢,得到t q需要且已經(jīng)位于tq所在處理器的數(shù)據(jù)集合*5^\和%需要的數(shù)據(jù)集合 冊,? ' 轉(zhuǎn) 6 · 5;
      [0060] 6.5確認(rèn)由除tq之外的任務(wù)產(chǎn)生但位于tq所在處理器的中間數(shù)據(jù)集,具體方 法如下:
      [0061 ] 6.5.1令由除tq之外任務(wù)產(chǎn)生但位于tq所在處理器的中間數(shù)據(jù)集=0 ;
      [0062] 6 · 5 · 2定義第四集合變量TD0t,TD0t = T,即將工作流中的任務(wù)集T= {,t2,… 。,."3(?}賦值給了00?。?br>[0063] 6.5.3令8 = 1;
      [0064] 6.5.4任取任務(wù)集合TDOt中的一個(gè)元素,該任務(wù)用ts表示;
      [0065] 6 · 5 · 5若ts乒tq,即任取的任務(wù)不是tq,轉(zhuǎn)6 · 5 · 6,否則,轉(zhuǎn)6 · 5 · 8;
      [0066] 6.5.6定義由ts生成的中間數(shù)據(jù)集合0? _= _0 ;
      [0067] 6.5.= Oi\ ugate氣,將ts生成的中間數(shù)據(jù)集加入<9£>,;
      [0068] 6 · 5 · 8TD0t=TDOt- {ts},從TDOt中刪除 ts;
      [0069] 6.5.9MA.=艱η,選出由除、之外任務(wù)產(chǎn)生但位于任務(wù)、所在處理器的中 間數(shù)據(jù)集合;
      [0070] 6 · 5 · 10若 7'Z>0, # 0 ,s = s+l,轉(zhuǎn)6 · 5 · 4,否則,轉(zhuǎn)6 · 6;
      [0071 ] 6.6計(jì)算tq需要傳入的最小數(shù)據(jù)集s具體方法如下:
      [0072] 6·6· 1定義tq需要傳入的最小數(shù)據(jù)集合氣崖=0 ;
      [0073] 6.6.2
      即tq最小傳輸數(shù)據(jù)集為"需 要的數(shù)據(jù)集皿\減去tq需要并且已經(jīng)位于tq所在處理器的數(shù)據(jù)集(Λ/Ζ), nSD,),再減去、需 要但由除tq之外任務(wù)產(chǎn)生且位于tq所在處理器的中間數(shù)據(jù)集合(iVE^nOSO, ^
      [0074] 6.6.3 TDT=TDT_{tq},從任務(wù)集合中刪除tq;
      [0075] 6.6.4若廠〇,#0 4 = 9+1,轉(zhuǎn)6.3;否則,轉(zhuǎn)第七步;
      [0076] 第七步、結(jié)束。
      [0077] 采用本發(fā)明可以達(dá)到以下技術(shù)效果:
      [0078] 1.第六步將處理器之間需要傳輸?shù)臄?shù)據(jù)集最小化,緩解了異構(gòu)系統(tǒng)數(shù)據(jù)傳輸壓 力,提高了面向異構(gòu)系統(tǒng)的數(shù)據(jù)傳輸效率;
      [0079] 2.由于數(shù)據(jù)傳輸效率的提高,提高了異構(gòu)系統(tǒng)的帶寬利用率,并且加快了面向異 構(gòu)系統(tǒng)的應(yīng)用程序運(yùn)行速度,提升了異構(gòu)計(jì)算系統(tǒng)效率。
      【附圖說明】
      [0080] 圖1為基于PCIE通信模式的異構(gòu)計(jì)算系統(tǒng)體系結(jié)構(gòu)。
      [0081 ]圖2為本發(fā)明面向異構(gòu)計(jì)算系統(tǒng)的數(shù)據(jù)傳輸優(yōu)化方法總體流程圖。
      【具體實(shí)施方式】
      [0082] 圖1為基于PCIE通信模式的由主處理器CPU和加速器(如DSP、GPU、MIC)組成的異構(gòu) 計(jì)算系統(tǒng)體系結(jié)構(gòu)示意圖,其中,主處理器端擁有內(nèi)存,加速器端擁有全局存儲(chǔ)空間;主處 理器與加速器之間通過PCIE總線進(jìn)行通信和數(shù)據(jù)傳輸。
      [0083]圖2為本發(fā)明的總體流程圖,其具體實(shí)施步驟如下:
      [0084]第一步、定義工作流中的處理器集合(::〇={(31,02,一(^,~0〃},其中,(^為第」個(gè)處 理器,Cj的屬性cptj = core Xf Xsimd,其中j = l,2,…,N,N為異構(gòu)系統(tǒng)中處理器和加速器的 總數(shù),cptj表示處理器Cj的處理能力大小,core為Cj的核數(shù),f為Cj的主頻,simd為Cj的向量處 理單元寬度。
      [0085]第二步、定義整個(gè)工作流中的任務(wù)集T = {ti,t2,…ti,…,?μ},其中,第i個(gè)任務(wù)ti = 〈runtimei,taskid〉,runtimei為任務(wù)ti運(yùn)行時(shí)間,taskid為執(zhí)行任務(wù)ti所需的數(shù)據(jù)集,其中i = 1,2,···Μ,Μ為工作流中任務(wù)的個(gè)數(shù);
      [0086]第三步、收集工作流中任務(wù)處理需要的原始數(shù)據(jù)集合D,具體步驟如下:
      [0087] 3 · 1初始化原始數(shù)據(jù)集合? = 0 ;
      [0088] 3.2定義變量1^ = 1,
      [0089] 3 · 3初始化任務(wù)tk的數(shù)據(jù)集貧=0 ,
      [0090] 3.4通過IntelVtune性能分析工具收集tk運(yùn)行所需要的數(shù)據(jù),收集的數(shù)據(jù)d為四元 組(1 =〈8126,1',(3,1;[1^>,其中,8126表示數(shù)據(jù)的大小,1'為引用數(shù)據(jù)(1的任務(wù)集合,(3為(1所在 的處理器,link表示數(shù)據(jù)d相對于T中對應(yīng)任務(wù)的傳輸方向,有兩個(gè)值,若link為in,表示該 數(shù)據(jù)為對應(yīng)任務(wù)的輸入數(shù)據(jù),若link為out,表示該數(shù)據(jù)為對應(yīng)任務(wù)的輸出數(shù)據(jù),將數(shù)據(jù)d加 到集合Dk中;
      [0091] 3.5更新數(shù)據(jù)集D = D U Dk,將Dk的元素添加到D;
      [0092] 3.6更新1<: = 1<:+1;
      [0093] 3.7如果k<M,轉(zhuǎn)3.3,否則,原始數(shù)據(jù)收集完畢,得到原始數(shù)據(jù)集合D,轉(zhuǎn)第四步;
      [0094]第四步、統(tǒng)計(jì)工作流中各任務(wù)與數(shù)據(jù)之間的關(guān)系。具體方法如下:
      [0095] 4.1令第一任務(wù)集合變量ST = T,即將工作流中的任務(wù)集T = {t,t2,…ti,…,tM}賦 值給St;
      [0096] 4.2令數(shù)據(jù)集合Sd = D,將數(shù)據(jù)集合D賦值給集合SD;
      [0097] 4.3 定義變量 i = l;
      [0098] 4.4任取St中的一個(gè)元素,該任務(wù)用ti表示;
      [0099] 4.5定義任務(wù)ti所需的數(shù)據(jù)集?碑,=0 [0100] 4.6定義變量」=0;
      [0101] 4.7任取SD中任意一個(gè)數(shù)據(jù),該數(shù)據(jù)用山表示;
      [0102] 4.8若任務(wù)。需要引用數(shù)據(jù)山,將數(shù)據(jù)山加入任務(wù)^所需的數(shù)據(jù)集^4,,艮口 u p/,. j·,轉(zhuǎn)4.9;否則,直接轉(zhuǎn)4.9;
      [0103] 4.9更新5^5『{山},從集合中刪除元素山;
      [0104] 4.10若& # 0,j = j+Ι,轉(zhuǎn)4.7,否則,數(shù)據(jù)集合遍歷完畢,轉(zhuǎn)4.11;
      [0105] 4.11 更新ST=ST_{ti};
      [0106] 4.12若5',,#0,;[ = ;[+1,轉(zhuǎn)4.4,否則,任務(wù)集合遍歷完畢,轉(zhuǎn)第五步;
      [0107] 第五步、在任務(wù)運(yùn)行過程中生成中間數(shù)據(jù)集。具體步驟如下:
      [0108] 5.1定義第二任務(wù)集合變量1^,令1^ = 1',即將工作流中的任務(wù)集1={^142,··· 。,…心丨賦值給!^
      [0109] 5.2令變量口 = 1;
      [0110] 5.3任取Ττ中的一個(gè)元素,該任務(wù)用tP表示;
      [0111] 5.4定義任務(wù)知生成的中間數(shù)據(jù)集_病?>=·;:
      [0112] 5.5采用Intel Vtune性能分析工具統(tǒng)計(jì)任務(wù)如運(yùn)行生成的中間數(shù)據(jù),將中間數(shù)據(jù) 放到集合;
      [0113] 5 · 6更新數(shù)據(jù)集,即令= U /' ;
      [0114] 5.7更新1>=1>-{^};
      [0115] 5.8若0,p = p+l,轉(zhuǎn)5.4,否則,任務(wù)集合遍歷完畢,轉(zhuǎn)第六步;
      [0116] 第六步、確認(rèn)任務(wù)運(yùn)行需要傳入的最小數(shù)據(jù)集。具體步驟如下:
      [0117] 6.1定義第三任務(wù)集合變量TDt,令TDt = T,即將工作流中的任務(wù)集T = {t,t2,… 。,."3(?}賦值給丁0丁;
      [0118] 6.2令變量9 = 1;
      [0119] 6.3任取任務(wù)集合TDt中的一個(gè)元素,該任務(wù)用tq表示;
      [0120] 6.4確認(rèn)任務(wù)、需要且已經(jīng)位于丨(1所在處理器的數(shù)據(jù)集合*52\和丨(1需要的數(shù)據(jù)集合 YD,,具體方法如下:
      [0121 ] 6·4· 1定義任務(wù)tq需要的數(shù)據(jù);
      [0122] 6.4.2定義任務(wù)tq需要且已經(jīng)位于任務(wù)tq所在處理器的數(shù)據(jù)集合= 0 ; 6.4.3 定義集合STD = D,將數(shù)據(jù)集合D賦值給集合STD;
      [0123] 6.4.4 令 r = 0;
      [0124] 6.4.5任取數(shù)據(jù)集合STD中一個(gè)數(shù)據(jù),該數(shù)據(jù)用dr表示;
      [0125] 6.4.6若任務(wù)tq需要引用數(shù)據(jù)dr,進(jìn)一步核查dr相對于任務(wù)tq的傳輸方向,轉(zhuǎn) 6.4.7,否則,任務(wù)t q不需要引用dr,轉(zhuǎn)6.4.10;
      [0126] 6.4.7若數(shù)據(jù)dr相對于任務(wù)tq的傳輸方向?yàn)閛ut,也就是說數(shù)據(jù)dr已經(jīng)位于t q所在 處理器,轉(zhuǎn)6.4.8,否則,數(shù)據(jù)dr相對于任務(wù)tq的傳輸方向?yàn)閕n,僅將數(shù)據(jù)加入任務(wù)需要的數(shù) 據(jù)集合,轉(zhuǎn)6.4.9;
      [0127] 6.4.8@\=5^4^{<};將數(shù)據(jù)4加入%需要且已經(jīng)位于%所在處理器的數(shù)據(jù)集 合 5?
      [0128] 6.4.9Λ2\ ;將該數(shù)據(jù)加入tq需要的數(shù)據(jù)集合;
      [0129] 6.4.10 STD = STD-{dr};
      [0130] 6.4.11若# 0 >τ = r+1,轉(zhuǎn)6.4.5,否則,tq需要且已經(jīng)位于tq所在處理器的數(shù) 據(jù)核實(shí)遍歷完畢,得到t q需要且已經(jīng)位于tq所在處理器的數(shù)據(jù)集合?\^tq需要的數(shù)據(jù)集合 VA 4f6.5;
      [0131] 6.5確認(rèn)由除tq之外的任務(wù)產(chǎn)生但位于tq所在處理器的中間數(shù)據(jù)集,具體方 法如下:
      [0132] 6.5.1令由除tq之外任務(wù)產(chǎn)生但位于tq所在處理器的中間數(shù)據(jù)集=0 ;
      [0133] 6.5.2定義第四集合變量了001,了001 = 1',即將工作流中的任務(wù)集了={^1,0,··· 。,."3(?}賦值給了00丁;
      [0134] 6.5.3 令 s = l;
      [0135] 6.5.4任取任務(wù)集合TDOt中的一個(gè)元素,該任務(wù)用ts表示;
      [0136] 6 · 5 · 5若ts乒tq,即任取的任務(wù)不是tq,轉(zhuǎn)6 · 5 · 6,否則,轉(zhuǎn)6 · 5 · 8;
      [0137] 6.5.6定義由ts生成的中間數(shù)據(jù)集合QM, = 0 ;
      [0138] 6 · 5 · U ,將ts生成的中間數(shù)據(jù)集加入;
      [0139] 6 · 5 · 8TD0t=TD0t-{ ts},從TDOt中刪除ts;
      [0140] 6.5.9&D, = SD, η ΟΙ),,選出由除、之外任務(wù)產(chǎn)生但位于任務(wù)、所在處理器的中 間數(shù)據(jù)集合;
      [0141] 6· 5· 10若其 0,s = s+l,轉(zhuǎn)6· 5·4,否則,轉(zhuǎn)6·6;
      [0142] 6.6計(jì)算、需要傳入的最小數(shù)據(jù)集^\_-。具體方法如下:
      [0143] 6.6.1定義tq需要傳入的最小數(shù)據(jù)集合A,___ = 0 ;
      [0144] 6.6」
      ,即tq最小傳輸數(shù)據(jù)集為%需 要的數(shù)據(jù)集減去tq需要并且已經(jīng)位于tq所在處理器的數(shù)據(jù)集(Λ?, nSD,),再減去、需 要但由除tq之外任務(wù)產(chǎn)生且位于tq所在處理器的中間數(shù)據(jù)集合(乂〇, nOSD, h
      [0145] 6.6.3 TDT=TDT_{tq},從任務(wù)集合中刪除tq;
      [0146] 6·6·4若Π )/ナ0,q = q+l,轉(zhuǎn)6·3;否則,轉(zhuǎn)第七步;
      [0147] 第七步、結(jié)束。
      【主權(quán)項(xiàng)】
      1. 一種面向異構(gòu)系統(tǒng)的數(shù)據(jù)傳輸優(yōu)化方法,其特征在于包括W下步驟: 第一步、定義工作流中的處理器集合C:C= ki,C2, ???Cj ,-cN},其中,Cj為第j個(gè)處理器, Cj的屬性cptj = core X f X simd,其中j = 1,2,…,N,N為異構(gòu)系統(tǒng)中處理器和加速器的總數(shù), cptj表示處理器Cj的處理能力大小,core為Cj的核數(shù),f為Cj的主頻,simd為Cj的向量處理單 兀寬度; 第二步、定義整個(gè)工作流中的任務(wù)集T={tl,t2, ···,*?},其中,第i個(gè)任務(wù)ti = < runtimei, taskid〉,runtimei為任務(wù)ti運(yùn)行時(shí)間,taskid為執(zhí)行任務(wù)ti所需的數(shù)據(jù)集,其中i = 1,2, 一1,Μ為工作流中任務(wù)的個(gè)數(shù); 第Ξ步、收集工作流中任務(wù)處理需要的原始數(shù)據(jù)集合D,D中存放的數(shù)據(jù)d為四元組,d = 〈size,T, C, link〉,其中,size表示數(shù)據(jù)的大小,T為引用數(shù)據(jù)d的任務(wù)集合,C為d所在的處理 器,link表示數(shù)據(jù)d相對于T中對應(yīng)任務(wù)的傳輸方向,有兩個(gè)值,若link為in,表示該數(shù)據(jù)為 對應(yīng)任務(wù)的輸入數(shù)據(jù),若link為out,表示該數(shù)據(jù)為對應(yīng)任務(wù)的輸出數(shù)據(jù); 第四步、統(tǒng)計(jì)工作流中各任務(wù)與數(shù)據(jù)之間的關(guān)系,具體方法如下: 4.1令第一任務(wù)集合變量St = T; 4.2令數(shù)據(jù)集合5〇 = 0; 4.3定義變量i = l; 4.4任取St中的一個(gè)元素,該任務(wù)用ti表示; 4.5定義任務(wù)ti所需的數(shù)據(jù)集=0; 4.6定義變量^' = 0; 4.7任取Sd中任意一個(gè)數(shù)據(jù),該數(shù)據(jù)用山表示; 4.8若任務(wù)ti需要引用數(shù)據(jù)山,將數(shù)據(jù)山加入任務(wù)ti所需的數(shù)據(jù)集峰,即,轉(zhuǎn)4.9;否則,直接轉(zhuǎn)4.9; 4.9更新SD = SD-{dj},從集合中刪除元素 dj; 4.10若馬* 0,j = j+1,轉(zhuǎn)4.7,否則,數(shù)據(jù)集合遍歷完畢,轉(zhuǎn)4.11; 4.11 更新ST = ST-{ti}; 4.12若5^*0,1 = 1+1,轉(zhuǎn)4.4,否則,任務(wù)集合遍歷完畢,轉(zhuǎn)第五步; 第五步、在任務(wù)運(yùn)行過程中生成中間數(shù)據(jù)集,具體步驟如下: 5.1定義第二任務(wù)集合變量Ττ,令Ττ=T; 5.2令變量9=1; 5.3任取Ττ中的一個(gè)元素,該任務(wù)用tp表示; 5.4定義任務(wù)tp生成的中間數(shù)據(jù)集茗心=0 ; 5.5采用Intel Vtune性能分析工具統(tǒng)計(jì)任務(wù)tp運(yùn)行生成的中間數(shù)據(jù),將中間數(shù)據(jù)放到 集合巧 5.6更新數(shù)據(jù)集拼/"<,即令與^^'心.; 5.7更新打=1'廣{*。}; 5.8若寫* 0 Φ = Ρ+1,轉(zhuǎn)5.4,否則,任務(wù)集合遍歷完畢,轉(zhuǎn)第六步; 第六步、確認(rèn)任務(wù)運(yùn)行需要傳入的最小數(shù)據(jù)集,具體步驟如下: 6.1定義第Ξ任務(wù)集合變量TDt,令TDt=T; 6.2令變量〇=1; 6.3任取任務(wù)集合TDt中的一個(gè)元素,該任務(wù)用tq表示; 6.4確認(rèn)任務(wù)*。需要且已經(jīng)位于*。所在處理器的數(shù)據(jù)集合《?\和*。需要的數(shù)據(jù)集合1\'〇,; 6.5確認(rèn)由除tq之外的任務(wù)產(chǎn)生但位于tq所在處理器的中間數(shù)據(jù)集aSD,; 6.6計(jì)算tq需要傳輸?shù)淖钚?shù)據(jù)集A,_inin,具體方法如下: 6.6.1定義tq需要傳輸?shù)淖钚?shù)據(jù)集合A,, _mm = 0 ;即tq最小傳輸數(shù)據(jù)集為tq需要的數(shù) 據(jù)集^\減去tq需要并且已經(jīng)位于tq所在處理器的數(shù)據(jù)集η說y,再減去tq需要但由 除tq之外任務(wù)產(chǎn)生且位于tq所在處理器的中間數(shù)據(jù)集合η aS'D, ; 6.6.3 ??τ = TDt- {tq},從任務(wù)集合中刪除tq; 6.6.4若?1),*0,9 = 9+1,轉(zhuǎn)6.3;否則,轉(zhuǎn)第屯步; 第屯步、結(jié)束。2. 如權(quán)利要求1所述的一種面向異構(gòu)系統(tǒng)的數(shù)據(jù)傳輸優(yōu)化方法,其特征在于第Ξ步所 述收集工作流中任務(wù)處理需要的原始數(shù)據(jù)集合D的具體步驟如下: 3.1初始化原始數(shù)據(jù)集合D = 0 : 3.2定義變量4=1, 3.3初始化任務(wù)tk的數(shù)據(jù)集·= 0 ; 3.4通過Intel V化ne性能分析工具收集tk運(yùn)行所需要的數(shù)據(jù)d,將數(shù)據(jù)d加到集合Dk中; 3.5更新數(shù)據(jù)集D = D U Dk,將Dk的元素添加到D; 3.6更新k = k+l; 3.7如果k《M,轉(zhuǎn)3.3,否則,原始數(shù)據(jù)收集完畢,得到原始數(shù)據(jù)集合D。3. 如權(quán)利要求1所述的一種面向異構(gòu)系統(tǒng)的數(shù)據(jù)傳輸優(yōu)化方法,其特征在于第6.4步所 述確認(rèn)任務(wù)tq需要且已經(jīng)位于tq所在處理器的數(shù)據(jù)集合^£\和tq需要的數(shù)據(jù)集合的方 法是: 6.4.1定義任務(wù)tq需要的數(shù)據(jù)''vn,.二0 : 6.4.2定義任務(wù)tq需要且已經(jīng)位于任務(wù)tq所在處理器的數(shù)據(jù)集合= 0 ; 6.4.3定義集合STd = D,將數(shù)據(jù)集合D賦值給集合STd ; 6.4.4令'=0; 6.4.5任取數(shù)據(jù)集合STd中一個(gè)數(shù)據(jù),該數(shù)據(jù)用山表示; 6.4.6若任務(wù)tq需要引用數(shù)據(jù)山,進(jìn)一步核查山相對于任務(wù)tq的傳輸方向,轉(zhuǎn)6.4.7,否 貝ij,任務(wù)tq不需要引用山,轉(zhuǎn)6.4.10; 6.4.7若數(shù)據(jù)山相對于任務(wù)tq的傳輸方向?yàn)閛ut,也就是說數(shù)據(jù)山已經(jīng)位于tq所在處理 器,轉(zhuǎn)6.4.8,否則,數(shù)據(jù)山相對于任務(wù)tq的傳輸方向?yàn)閕n,僅將數(shù)據(jù)加入任務(wù)需要的數(shù)據(jù)集 合,轉(zhuǎn) 6.4.9; 6.4.8SD,g υ·μ,.};將數(shù)據(jù)山加入tq需要且已經(jīng)位于tq所在處理器的數(shù)據(jù)集合《^\ ; 6.4.9Λ?,,=M),,U·(式;I;將該數(shù)據(jù)加入tq需要的數(shù)據(jù)集合; 6.4.10 STD = STD-{dr}; 6.4.11若巧;*0,r = r+l,轉(zhuǎn)6.4.5,否則,tq需要且已經(jīng)位于tq所在處理器的數(shù)據(jù)核實(shí) 遍歷完畢,得到tq需要且已經(jīng)位于tq所在處理器的數(shù)據(jù)集合SA,和tq需要的數(shù)據(jù)集合.4.如權(quán)利要求1所述的一種面向異構(gòu)系統(tǒng)的數(shù)據(jù)傳輸優(yōu)化方法,其特征在于第6.5步所 述確認(rèn)由除tq之外的任務(wù)產(chǎn)生但位于tq所在處理器的中間數(shù)據(jù)集05D;,,的方法是: 6.5.1令由除tq之外任務(wù)產(chǎn)生但位于tq所在處理器的中間數(shù)據(jù)集WD,, = 0 ; 6.5.2定義第立集合變量TDOt,TD化=T,即將工作流中的任務(wù)集T = {ti,t2,…ti,…,tM} 賦值給TD化; 6.5.3令3 = 1; 6.5.4任取任務(wù)集合TD化中的一個(gè)元素,該任務(wù)用ts表示; 6.5.5若 ts 聲 tq,轉(zhuǎn)6.5.6,否則,轉(zhuǎn)6.5.8; 6.5.6定義由ts生成的中間數(shù)據(jù)集合〇心,=0; 6.5.70A =〇嗎U如αν、,將ts生成的中間數(shù)據(jù)集知α-味加入(W,; 6.5.8 TDOt = TDOt- {ts},從TDOt 中刪除 tS; 6.5.9〇5馬。,選出由除tq之外任務(wù)產(chǎn)生但位于任務(wù)tq所在處理器的中間數(shù) 據(jù)集合; 6.5.10若 /DO, * 0,S = S+1,轉(zhuǎn)6.5.4,否則,得到化巧,
      【文檔編號】G06F15/173GK105975434SQ201610283304
      【公開日】2016年9月28日
      【申請日】2016年4月29日
      【發(fā)明人】甘新標(biāo), 劉杰, 楊燦群, 胡慶豐, 徐涵, 遲利華, 晏益慧, 龔春葉, 李勝國, 孫建政, 祁寶鑫, 季小聰
      【申請人】中國人民解放軍國防科學(xué)技術(shù)大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1