亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

依賴性問題的有效率的并行計(jì)算的制作方法

文檔序號(hào):6594206閱讀:475來源:國知局
專利名稱:依賴性問題的有效率的并行計(jì)算的制作方法
技術(shù)領(lǐng)域
本發(fā)明主要涉及并行計(jì)算,且具體涉及用于在并行處理器上執(zhí)行依賴性問題的方 法和系統(tǒng)。
背景技術(shù)
并行處理技術(shù)廣泛地用于執(zhí)行各種計(jì)算任務(wù)。在邏輯設(shè)計(jì)仿真領(lǐng)域,例如, Cadambi等人在2002年6月10日至14日路易斯安那州新奧爾良市舉辦的第三十九屆 IEEE ACM Design Automation Conference (DAC 2002)的學(xué)報(bào)的 570-575 頁發(fā)表的 “A Fast, Inexpensive and Scalable Hardware Acceleration Technique for Functional Simulation”中描述了一種基于超長指令字(VLIW)處理器的仿真加速器,該文獻(xiàn)以參 引方式納入本文。使用超長指令字處理器的邏輯仿真的多個(gè)方面也在下列文獻(xiàn)中進(jìn)行 了論述美國專利7,444,276,以及美國專利申請(qǐng)公布2007/0219771,2007/0150702, 2007/0129926, 2007/0129924, 2007/0074000, 2007/0073999 和 2007/0073528,以上公開內(nèi) 容均以參引方式納入本文。

發(fā)明內(nèi)容
本發(fā)明的一個(gè)實(shí)施方案提供了一種計(jì)算方法,包括接受計(jì)算任務(wù)的定義,該計(jì)算任務(wù)包括具有執(zhí)行依賴性的多個(gè)原子處理元(PE), 每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的第一 PE ;編譯所述計(jì)算任務(wù)以用于在多處理器設(shè)備上并發(fā)地執(zhí)行,所述多處理器設(shè)備包括 多個(gè)處理器,所述多個(gè)處理器通過在一個(gè)包括第二數(shù)量的執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與 執(zhí)行依賴性沖突地布置所述PE而能夠同時(shí)地執(zhí)行第一數(shù)量的PE,所述第二數(shù)量大于1且不 超過所述第一數(shù)量;以及調(diào)用所述多處理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu) 而并行地執(zhí)行所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果。在某些實(shí)施方案中,計(jì)算任務(wù)包括對(duì)一個(gè)設(shè)計(jì)進(jìn)行驗(yàn)證的任務(wù)?;蛘撸鲇?jì)算任 務(wù)可包括信號(hào)處理任務(wù)、圖像處理任務(wù)、包處理任務(wù)和/或糾錯(cuò)編碼(ECC)任務(wù)。在所公開 的一個(gè)實(shí)施方案中,多處理器設(shè)備包括圖形處理單元(GPU)。在另一個(gè)實(shí)施方案中,多處理 器設(shè)備包括數(shù)字信號(hào)處理器和/或多核中央處理單元(CPU)。
在一個(gè)實(shí)施方案中,編譯所述計(jì)算任務(wù)包括將每個(gè)執(zhí)行序列中的PE分組成PE組 (PEG)。在另一個(gè)實(shí)施方案中,多處理器設(shè)備根據(jù)內(nèi)建調(diào)度策略調(diào)度所述PE以用于由多個(gè) 處理器執(zhí)行,且其中調(diào)用所述多處理器設(shè)備包括使得所述多處理器設(shè)備并行地執(zhí)行第二數(shù) 量的執(zhí)行序列,如同布置在執(zhí)行數(shù)據(jù)結(jié)構(gòu)中,而與所述內(nèi)建調(diào)度策略無關(guān)。在另一個(gè)實(shí)施方 案中,多處理器被分成組布置,每個(gè)組都被指派以執(zhí)行提供給所述多處理器設(shè)備的一個(gè)或 多個(gè)線程塊,且其中調(diào)用所述多處理器設(shè)備包括提供每個(gè)執(zhí)行序列作為待要被所述組中的 一個(gè)組內(nèi)的處理器執(zhí)行的一個(gè)相應(yīng)的線程塊。在一個(gè)實(shí)施方案中,所述每個(gè)組中的所述處 理器訪問一個(gè)相應(yīng)的共享存儲(chǔ)器,且其中編譯所述計(jì)算任務(wù)包括使得一個(gè)給定執(zhí)行序列中 的PE通過被指派以執(zhí)行該給定執(zhí)行序列的一組處理器的共享存儲(chǔ)器來交換數(shù)據(jù)。在另一個(gè)實(shí)施方案中,將PE布置在調(diào)用數(shù)據(jù)結(jié)構(gòu)中包括最小化最長執(zhí)行序列的 長度同時(shí)不超過所述第一數(shù)量且不與所述執(zhí)行依賴性相沖突。在又一個(gè)實(shí)施方案中,一個(gè) 給定執(zhí)行依賴性規(guī)定了使驅(qū)PE將在受驅(qū)PE之前被執(zhí)行,且其中將所述PE布置在所述調(diào)用 數(shù)據(jù)結(jié)構(gòu)中包括在給定執(zhí)行序列中將受驅(qū)PE放置在使驅(qū)PE之后。在另一個(gè)實(shí)施方案中, 一個(gè)給定執(zhí)行依賴性規(guī)定了使驅(qū)PE將在受驅(qū)PE之前執(zhí)行,且其中將所述PE布置在所述調(diào) 用數(shù)據(jù)結(jié)構(gòu)中包括在第一執(zhí)行序列中放置使驅(qū)PE,在不同于所述第一執(zhí)行序列的第二執(zhí) 行序列中放置受驅(qū)PE,并且向所述第二執(zhí)行序列中插入一個(gè)同步元,所述同步元暫停所述 第二執(zhí)行序列的執(zhí)行直到給定的所述使驅(qū)PE完全被執(zhí)行為止。在某些實(shí)施方案中,編譯所述計(jì)算任務(wù)包括從所述計(jì)算任務(wù)提取多個(gè)非循環(huán)子 圖,并且編譯所述多個(gè)非循環(huán)子圖以產(chǎn)生相應(yīng)的多個(gè)調(diào)用數(shù)據(jù)結(jié)構(gòu)。在一個(gè)公開的實(shí)施方 案中,將所述PE布置在所述調(diào)用數(shù)據(jù)結(jié)構(gòu)中包括定義一個(gè)順序,按此順序選擇所述PE以 放置在所述執(zhí)行序列中,且按此順序用所述PE填充所述執(zhí)行序列。在一個(gè)實(shí)施方案中,所述定義一個(gè)順序包括,為每個(gè)PE 確定通向所述PE的一個(gè)最長的執(zhí)行依賴性鏈的第一長度;確定始自所述給定PE的一個(gè)最長的執(zhí)行依賴性鏈的第二長度;基于所述第一長度和所述第二長度,確定一個(gè)分配區(qū)間——其包括沿著所述執(zhí)行 序列的PE的可能的位置;以及以所述分配區(qū)間的相應(yīng)的長度的升序來排列所述PE。填充所述執(zhí)行序列可包括,將每個(gè)PE放置在所述執(zhí)行序列中之一的相應(yīng)的分配 區(qū)間之內(nèi)。在另一個(gè)實(shí)施方案中,所述定義一個(gè)順序包括識(shí)別輸出組,每個(gè)輸出組包括兩個(gè)或更多個(gè)PE——其驅(qū)動(dòng)了相應(yīng)的受驅(qū)PE ;識(shí)別輸入組,每個(gè)輸入組包括至少兩個(gè)由一個(gè)相應(yīng)的使驅(qū)PE所驅(qū)動(dòng)的PE ;基于包含了每個(gè)PE的輸出組和輸入組的數(shù)量,為所述每個(gè)PE指派一個(gè)相應(yīng)的組 評(píng)分;并且基于所述PE的組評(píng)分,定義所述順序。在又一個(gè)實(shí)施方案中,將所述PE布置在調(diào)用數(shù)據(jù)結(jié)構(gòu)中包括,對(duì)于一個(gè)給定PE以 及所述執(zhí)行序列中的一組可能的位置,計(jì)算由將給定PE放置在可能的位置而導(dǎo)致的相應(yīng) 的分配成本;以及將給定PE放置在所述可能的位置中的具有最低分配成本的一個(gè)位置。在一個(gè)實(shí)施方案中,計(jì)算所述分配成本包括,根據(jù)如下因素估計(jì)給定執(zhí)行序列中的給定的可能的位置的分配成本由將給定PE放置在給定的可能的位置而導(dǎo)致的所述調(diào) 用數(shù)據(jù)結(jié)構(gòu)的執(zhí)行時(shí)間的增加;在給定執(zhí)行序列中和給定PE共享一個(gè)公共使驅(qū)PE的PE的 第一數(shù)量;在給定執(zhí)行序列中和給定PE共享一個(gè)公共受驅(qū)PE的PE的第二數(shù)量;在給定執(zhí) 行序列中和給定PE共享一個(gè)公共執(zhí)行依賴性的PE的第三數(shù)量;和/或距為給定PE計(jì)算的 最佳位置的距離。在一個(gè)實(shí)施方案中,將所述PE布置在所述調(diào)用數(shù)據(jù)結(jié)構(gòu)中包括,將所述 PE以線程束布置在每個(gè)執(zhí)行序列中,每個(gè)線程束包括給定類型的一個(gè)或多個(gè)PE。在一些實(shí)施方案中,編譯所述計(jì)算任務(wù)包括,對(duì)于給定執(zhí)行序列,定義將變量從所 述多處理器設(shè)備的設(shè)備存儲(chǔ)器取到高速緩存的確定性高速緩存模式,并且在執(zhí)行所述給定 執(zhí)行序列期間將所述變量中的至少一些從所述高速緩存丟棄,并且使得所述多處理器設(shè)備 在執(zhí)行所述給定執(zhí)行序列時(shí)實(shí)現(xiàn)所述確定性高速緩存模式。在一個(gè)實(shí)施方案中,給定執(zhí)行 序列中的PE被分組成PE組(PEG),且其中定義所述高速緩存模式包括對(duì)于在給定PEG的執(zhí)行期間存在于所述高速緩存中的每個(gè)變量,識(shí)別在所述給定 執(zhí)行序列中接下來將使用該變量的相應(yīng)的下一個(gè)PEG ;一旦在執(zhí)行所述給定PEG之后需要從所述高速緩存丟棄一個(gè)或多個(gè)變量時(shí),選擇 該一個(gè)或多個(gè)變量中的一個(gè)變量,所選擇的變量的相應(yīng)的下一個(gè)PEG具有沿著所述給定執(zhí) 行序列的距所述給定PEG最大的距離;并且在所述高速緩存模式中定義,在執(zhí)行所述給定PEG之后丟棄所選擇的變量。在另一個(gè)實(shí)施方案中,定義所述高速緩存模式包括在單個(gè)取命令中合并對(duì)兩個(gè)或 更多個(gè)變量的取操作。在另一個(gè)實(shí)施方案中,合并所述取操作包括為每個(gè)變量沿著所述給 定執(zhí)行序列定義一個(gè)取區(qū)間,所述取區(qū)間自當(dāng)該變量變得有效之時(shí)開始,至當(dāng)該變量首次 被使用時(shí)結(jié)束;以及定義所述單個(gè)取命令以包括至少兩個(gè)在相應(yīng)的取區(qū)間有重疊的變量, 并且將所述單個(gè)取命令放置為在所述重疊的期間發(fā)生。合并所述取操作可包括,通過識(shí)別 在所述單個(gè)取命令的位置和所述給定變量首次被使用的時(shí)間之間具有最小距離的給定變 量,來選擇待要被合并到所述單個(gè)取命令中的給定變量。在一個(gè)公開的實(shí)施方案中,定義所述高速緩存模式包括,在單個(gè)存儲(chǔ)命令中合并 對(duì)兩個(gè)或更多個(gè)變量的存儲(chǔ)操作。在一個(gè)實(shí)施方案中,所述給定執(zhí)行序列的確定性高速緩 存模式,以給定順序從所述設(shè)備存儲(chǔ)器取變量,且其中編譯所述計(jì)算任務(wù)包括,根據(jù)所述給 定順序以連續(xù)的地址將所述變量預(yù)排列在所述設(shè)備存儲(chǔ)器中。在一些實(shí)施方案中,編譯所 述計(jì)算任務(wù)包括,通過訪問所述多處理器設(shè)備的設(shè)備存儲(chǔ)器,使得所述第一執(zhí)行序列提供 一個(gè)或多個(gè)變量作為輸入給第二執(zhí)行序列。在一些實(shí)施方案中,編譯所述計(jì)算任務(wù)包括,產(chǎn)生多個(gè)調(diào)用數(shù)據(jù)結(jié)構(gòu),所述多個(gè)調(diào) 用數(shù)據(jù)結(jié)構(gòu)中的每個(gè)調(diào)用數(shù)據(jù)結(jié)構(gòu)包括一個(gè)或多個(gè)執(zhí)行序列,以及使得所述執(zhí)行序列中的 至少一些執(zhí)行序列通過訪問所述多處理器設(shè)備的設(shè)備存儲(chǔ)器而在不同的調(diào)用數(shù)據(jù)結(jié)構(gòu)之 間交換變量。在一個(gè)實(shí)施方案中,在所述不同的調(diào)用數(shù)據(jù)結(jié)構(gòu)之間交換的每個(gè)變量都由一 個(gè)或多個(gè)源執(zhí)行序列所產(chǎn)生,并被一個(gè)或多個(gè)目標(biāo)序列所使用,且其中編譯所述計(jì)算任務(wù) 包括,根據(jù)所述源執(zhí)行序列和所述目標(biāo)執(zhí)行序列將所述變量聚合成組,并且將每個(gè)組以連 續(xù)的地址存儲(chǔ)在所述設(shè)備存儲(chǔ)器中。在所公開的一個(gè)實(shí)施方案中,使得所述執(zhí)行序列交換 所述變量包括,使得所述執(zhí)行序列以讀命令從所述設(shè)備存儲(chǔ)器讀所述變量,每個(gè)讀命令從 所述組之一讀取預(yù)定大小的數(shù)據(jù)。在一個(gè)實(shí)施方案中,當(dāng)兩個(gè)或更多個(gè)組中的變量聯(lián)合起來未超過所述預(yù)定大小時(shí),所述方法包括定義一個(gè)從所述兩個(gè)或更多個(gè)組讀取所述變量的 合并的讀命令。在一個(gè)實(shí)施方案中,當(dāng)在一個(gè)給定調(diào)用數(shù)據(jù)結(jié)構(gòu)中的多個(gè)執(zhí)行序列的一個(gè)集合中 使用一組變量時(shí),所述方法包括僅僅使得所述多個(gè)執(zhí)行序列中的一個(gè)部分子集從所述設(shè)備 存儲(chǔ)器讀取所述一組變量,并且將該變量傳遞給該集合中的其他的執(zhí)行序列。使得所述執(zhí) 行序列的部分子集傳遞所述變量可包括,識(shí)別該集合中不能從該調(diào)用數(shù)據(jù)結(jié)構(gòu)的其他執(zhí) 行序列接收所述變量的至少一個(gè)執(zhí)行序列,并且將所識(shí)別的序列添加到所述部分子集。使 得所述執(zhí)行序列的部分子集傳遞所述變量可包括,識(shí)別所述給定調(diào)用數(shù)據(jù)結(jié)構(gòu)中的同步 元——其將所述部分子集連接到所述集合中的其他執(zhí)行序列,并且分配與所述同步元相關(guān) 聯(lián)的通信資源以便傳遞所述變量。在一些實(shí)施方案中,編譯所述計(jì)算任務(wù)并且調(diào)用所述多處理器設(shè)備包括,運(yùn)行一 個(gè)事件驅(qū)動(dòng)仿真——其仿真了所述計(jì)算任務(wù)。在一個(gè)實(shí)施方案中,將所述PE布置在所述調(diào) 用數(shù)據(jù)結(jié)構(gòu)中包括,根據(jù)如下因素在所述執(zhí)行序列中放置所述PE 始自所述PE的相應(yīng)的最 長的執(zhí)行依賴性鏈的長度;執(zhí)行序列的相應(yīng)的占用程度;和/或由對(duì)所述PE的放置而引起 的同步元。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,還提供了一種計(jì)算方法,包括接受計(jì)算任務(wù)的定義,該計(jì)算任務(wù)包括具有執(zhí)行依賴性的多個(gè)原子處理元(PE), 每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的第一 PE ;編譯該計(jì)算任務(wù)以用于在多處理器設(shè)備上并發(fā)地執(zhí)行,所述多處理器設(shè)備包括并 行運(yùn)行的多個(gè)處理器,以及通過在一個(gè)包括多個(gè)執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述執(zhí)行 依賴性沖突地布置所述PE來調(diào)度該P(yáng)E,以用于由所述多個(gè)處理器根據(jù)微處理器設(shè)備的內(nèi) 建調(diào)度策略執(zhí)行;以及調(diào)用該多處理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而 并行地且無關(guān)于所述多處理器設(shè)備的調(diào)度策略地執(zhí)行所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù) 的結(jié)果。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,還提供了一種計(jì)算裝置,包括一個(gè)界面,被連接以接受計(jì)算任務(wù)的定義,該計(jì)算任務(wù)包括具有執(zhí)行依賴性的多 個(gè)原子處理元(PE),每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二 PE之前要執(zhí)行一個(gè)相 應(yīng)的第一 PE;以及一個(gè)中央處理單元(CPU),所述中央處理單元被布置為編譯該計(jì)算任務(wù)以用于 在多處理器設(shè)備上并發(fā)地執(zhí)行,所述多處理器設(shè)備包括多個(gè)處理器,所述多個(gè)處理器通過 在一個(gè)包括第二數(shù)量的執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述執(zhí)行依賴性沖突地布置所述 PE而能夠同時(shí)地執(zhí)行第一數(shù)量的PE,所述第二數(shù)量大于1且不超過所述第一數(shù)量;以及調(diào) 用該多處理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而并行地執(zhí)行 所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,還提供了一種計(jì)算裝置,包括一個(gè)界面,被連接以接受計(jì)算任務(wù)的定義,該計(jì)算任務(wù)包括具有執(zhí)行依賴性的多 個(gè)原子處理元(PE),每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二 PE之前要執(zhí)行一個(gè)相 應(yīng)的第一 PE;以及
—個(gè)中央處理單元(CPU),所述中央處理單元被布置為編譯該計(jì)算任務(wù)以用于 在多處理器設(shè)備上并發(fā)地執(zhí)行,所述多處理器設(shè)備包括并行運(yùn)行的多個(gè)處理器,以及通過 在一個(gè)包括多個(gè)執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述執(zhí)行依賴性沖突地布置所述PE來調(diào) 度該P(yáng)E,以用于由所述多個(gè)處理器根據(jù)微處理器設(shè)備的內(nèi)建調(diào)度策略執(zhí)行;以及調(diào)用該多 處理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而并行地且無關(guān)于所 述多處理器設(shè)備的調(diào)度策略地執(zhí)行所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,還提供了一種計(jì)算裝置,包括一個(gè)多處理器設(shè)備,包括能夠同時(shí)執(zhí)行第一數(shù)量的原子處理元(PE)的多個(gè)處理 器;以及一個(gè)中央處理單元(CPU),所述中央處理單元被布置為接受計(jì)算任務(wù)的定義,該 計(jì)算任務(wù)包括具有執(zhí)行依賴性的多個(gè)原子處理元(PE),每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一 個(gè)相應(yīng)的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的第一 PE ;通過在包括第二數(shù)量的執(zhí)行序列的調(diào)用 數(shù)據(jù)結(jié)構(gòu)中不與所述執(zhí)行依賴性沖突地布置所述PE來編譯該計(jì)算任務(wù)以用于在所述多處 理器設(shè)備上并發(fā)地執(zhí)行,所述第二數(shù)量大于1且不超過所述第一數(shù)量;以及調(diào)用該多處理 器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而并行地執(zhí)行所述執(zhí)行序 列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,還提供了一種計(jì)算裝置,包括一個(gè)多處理器設(shè)備,包括并行運(yùn)行的多個(gè)處理器,且根據(jù)所述微處理器設(shè)備的內(nèi) 建調(diào)度策略調(diào)度原子處理元(PE)以用于由所述多個(gè)處理器執(zhí)行;以及一個(gè)中央處理單元(CPU),所述中央處理單元被布置為接受計(jì)算任務(wù)的定義,該 計(jì)算任務(wù)包括具有執(zhí)行依賴性的多個(gè)PE,每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的第一 PE ;通過在包括多個(gè)執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述 執(zhí)行依賴性沖突地布置所述PE來編譯該計(jì)算任務(wù),以用于在所述多處理器設(shè)備上并發(fā)地 執(zhí)行;以及調(diào)用該多處理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu) 并行地且無關(guān)于所述多處理器設(shè)備的調(diào)度策略地執(zhí)行所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù) 的結(jié)果。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,還提供了一種計(jì)算機(jī)軟件產(chǎn)品,所述產(chǎn)品包括計(jì)算 機(jī)可讀介質(zhì),在所述計(jì)算機(jī)可讀介質(zhì)中存儲(chǔ)了程序指令,所述指令當(dāng)被計(jì)算機(jī)讀取時(shí),使 得所述計(jì)算機(jī)接受計(jì)算任務(wù)的定義,該計(jì)算任務(wù)包括具有執(zhí)行依賴性的多個(gè)原子處理元 (PE),每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的第一 PE ;編 譯該計(jì)算任務(wù)以用于在多處理器設(shè)備上并發(fā)地執(zhí)行,所述多處理器設(shè)備包括多個(gè)處理器, 所述多個(gè)處理器通過在一個(gè)包括第二數(shù)量的執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述執(zhí)行依 賴性沖突地布置所述PE而能夠同時(shí)地執(zhí)行第一數(shù)量的PE,所述第二數(shù)量大于1且不超過所 述第一數(shù)量;以及調(diào)用該多處理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù) 據(jù)結(jié)構(gòu)并行地執(zhí)行所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,還提供了一種計(jì)算機(jī)軟件產(chǎn)品,所述產(chǎn)品包括計(jì)算 機(jī)可讀介質(zhì),在所述計(jì)算機(jī)可讀介質(zhì)中存儲(chǔ)了程序指令,所述指令當(dāng)被計(jì)算機(jī)讀取時(shí),使 得所述計(jì)算機(jī)接受計(jì)算任務(wù)的定義,該計(jì)算任務(wù)包括具有執(zhí)行依賴性的多個(gè)原子處理元 (PE),每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的第一 PE ;編譯該計(jì)算任務(wù)以用于在多處理器設(shè)備上并發(fā)地執(zhí)行,所述多處理器設(shè)備包括并行運(yùn)行的多 個(gè)處理器,通過在一個(gè)包括多個(gè)執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述執(zhí)行依賴性沖突地布 置所述PE來調(diào)度該P(yáng)E,以用于由所述多個(gè)處理器根據(jù)微處理器設(shè)備的內(nèi)建調(diào)度策略執(zhí)行; 以及調(diào)用該多處理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而并行 地且無關(guān)于所述多處理器設(shè)備的調(diào)度策略地執(zhí)行所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)
從下面結(jié)合附圖的對(duì)本發(fā)明的實(shí)施方案的詳細(xì)描述中,將可更完整地理解本發(fā) 明,其中


圖1是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用于執(zhí)行依賴性問題的系統(tǒng) 的方框圖;圖2是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的圖形處理單元(GPU)的方框 圖;圖3是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的以依賴性圖來表示的依賴性 問題的圖解;圖4是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的靜態(tài)調(diào)用數(shù)據(jù)庫(SID)的圖 解;圖5是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用于執(zhí)行依賴性問題的方法 的流程圖;圖6是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用于SID生成的線程束網(wǎng)格的 圖解;圖7是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用于將處理單元(PE)分配在 線程束網(wǎng)格中的分配區(qū)間的圖解;圖8是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用于生成SID的方法的流程 圖;圖9是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的一個(gè)高速緩存管理方案的圖 解;圖IOA和IOB是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的變量預(yù)取方案的圖 解;圖11是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的一個(gè)變量預(yù)排列方案的圖 解;圖12是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的多個(gè)SID的圖解;圖13是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用于SID間通信的一種方法 的流程圖;圖14A和14B是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的SID內(nèi)通信方案的圖 解;圖15是示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方案的既使用SID間通信又使用 SID內(nèi)通信的SID的圖解;
圖16是示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用于減少SID間通信的方 法的狀態(tài)圖;圖17是示意性地示出根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用于減少SID間通信的方法 的流程圖;圖18是示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方案的表示數(shù)字濾波器的依賴性 圖的圖解;以及圖19是示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方案的表示快速傅立葉變換 (FFT)計(jì)算單元的依賴性圖的圖解。
具體實(shí)施例方式概述許多領(lǐng)域中的多種計(jì)算任務(wù)都可被表示為依賴性問題,例如被表示為一組具有執(zhí) 行依賴性的原子處理元。依賴性問題通常大而復(fù)雜,且它們的執(zhí)行通常涉及高計(jì)算復(fù)雜性 和長執(zhí)行時(shí)間。因此,在并行操作的多個(gè)處理器上執(zhí)行依賴性問題是有利的。然而,在處理 元之間的執(zhí)行依賴性,通常使得依賴性問題難于被劃分成并行的計(jì)算任務(wù)。本發(fā)明的實(shí)施方案提供了用于通過并行處理器來執(zhí)行依賴性問題的改良的方法 和系統(tǒng)。所公開的方法和系統(tǒng)對(duì)依賴性問題進(jìn)行操作,該依賴性問題包括具有執(zhí)行依賴性 的原子處理元(PE)。(一對(duì)處理元之間的執(zhí)行依賴性,指的是一個(gè)處理元對(duì)由另一個(gè)處理 元所產(chǎn)生的輸入進(jìn)行操作。因此,執(zhí)行依賴性對(duì)于處理元的執(zhí)行順序施加了約束。)編譯這 一依賴性問題,以便在包括多個(gè)處理器的多處理器設(shè)備例如圖形處理單元(GPU)上進(jìn)行并 發(fā)執(zhí)行。所述編譯進(jìn)程在由所述多處理器設(shè)備的處理核所并行執(zhí)行的多個(gè)執(zhí)行序列中布 置所述PE,而不破壞執(zhí)行依賴性。通常,所述編譯進(jìn)程生成包括所述執(zhí)行序列的靜態(tài)調(diào)用數(shù) 據(jù)庫(SID)。所述多處理器設(shè)備被調(diào)用以運(yùn)行執(zhí)行SID的軟件代碼,從而產(chǎn)生所述依賴性問 題的結(jié)果。通過嘗試將相互依賴的PE放置在同一個(gè)執(zhí)行序列中,并且如有需要在不同序列 中的PE之間引入同步,以保持執(zhí)行依賴性。在典型的多處理器設(shè)備中,處理器成組布置,且 每組中的處理器能夠通過共享存儲(chǔ)器進(jìn)行交互并且交換數(shù)據(jù)。在某些實(shí)施方案中,SID中 的每個(gè)執(zhí)行序列均作為線程塊而提供給所述多處理器設(shè)備,以保證在每個(gè)序列中的PE均 被同一組處理器執(zhí)行且可通過該組的共享存儲(chǔ)器交換數(shù)據(jù)。選擇SID中的執(zhí)行序列的數(shù)量,以免超越所述多處理器設(shè)備能夠同時(shí)執(zhí)行的線程 塊的最大數(shù)量。由此,保證了執(zhí)行序列同時(shí)運(yùn)行,并通常不受所述多處理器設(shè)備的任何內(nèi)建 調(diào)度策略影響。這一操作模式與已知的調(diào)用方案形成明顯對(duì)比,已知的調(diào)用方案通常使大 量的線程塊涌入多處理器設(shè)備,然后依賴于該多處理器設(shè)備的內(nèi)部調(diào)度來達(dá)到并行化。另 一方面,在本文描述的方法和系統(tǒng)中,依賴性問題在多個(gè)并行處理器之間的并行化方式是 完全確定性的,且是在編譯時(shí)間而非在運(yùn)行時(shí)間定義的。由此,有效地繞開了多處理器設(shè)備 的內(nèi)部調(diào)度策略,且PE的執(zhí)行順序被在SID中定義的執(zhí)行序列和同步機(jī)制完全控制。本文 描述了生成高效率SID的一個(gè)示例過程。此外,本文還描述了用于對(duì)在SID執(zhí)行期間實(shí)現(xiàn)的大量存儲(chǔ)器訪問操作進(jìn)行管理的幾種方法和系統(tǒng)。具體地,所公開的技術(shù)通過PE執(zhí)行序列充分利用了多處理器設(shè)備的 設(shè)備存儲(chǔ)器和共享存儲(chǔ)器。(在典型的多處理器設(shè)備中,設(shè)備存儲(chǔ)器提供了較大的存儲(chǔ)器 空間,但卻招致了較高的訪問時(shí)延、較大的訪問粒度以及地址對(duì)齊約束。另一方面,共享存 儲(chǔ)器具有有限的存儲(chǔ)器空間,但卻提供了較快的訪問時(shí)間,且?guī)缀趸蛲耆珱]有地址對(duì)齊約 束。)通過利用存儲(chǔ)器訪問操作的模式在SID編譯期間被完全確定這一事實(shí),所公開的技術(shù) 實(shí)現(xiàn)了有效率和確定性的存儲(chǔ)器訪問。系統(tǒng)描述圖1是示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用于執(zhí)行依賴性問題的系 統(tǒng)20的方框圖。各種計(jì)算任務(wù)均可被表示為依賴性問題,例如,表示為具有執(zhí)行依賴性的 一批原子處理任務(wù)。依賴性問題存在于許多領(lǐng)域和應(yīng)用中,例如,數(shù)字硬件設(shè)計(jì)仿真,實(shí)時(shí) 視頻處理,圖像處理,軟件定義的無線電(SDR),在各種通信應(yīng)用中的包處理,以及糾錯(cuò)編 碼。系統(tǒng)20可用于有效率地執(zhí)行可被表示為依賴性問題的任何適合的計(jì)算任務(wù)。接下來 進(jìn)一步描述特定計(jì)算任務(wù)的幾個(gè)實(shí)例,以及所公開的技術(shù)對(duì)于這些任務(wù)的適用性。在本實(shí)例中,系統(tǒng)20包括服務(wù)器對(duì),該服務(wù)器M包括界面26、中央處理單元洲 以及一個(gè)或多個(gè)圖形處理單元(GPU) 32。服務(wù)器M可包括任何適合的工作站或計(jì)算平臺(tái)。 每個(gè)GPU,如下所述,包括并行操作的大量處理核。此處描述的方法和系統(tǒng)產(chǎn)生了最大化了 GPU核的并行應(yīng)用的軟件代碼,且因此使得系統(tǒng)20能夠以相對(duì)短的執(zhí)行時(shí)間來執(zhí)行高度復(fù) 雜的依賴性問題。服務(wù)器M通過用戶工作站36與用戶交互。服務(wù)器M通過界面沈接受來自用戶 的待執(zhí)行的依賴性問題。所述服務(wù)器編譯所述輸入依賴性問題以產(chǎn)生軟件代碼,然后在CPU
32上運(yùn)行該代碼。執(zhí)行結(jié)果通過界面沈提供給該用戶。系統(tǒng)20的功能可以以 取決于應(yīng)用的多種方式在CPU32之間劃分。此處描述的實(shí)施方案提到了單GPU。
然而,一般地,可使用任何期望數(shù)量的GPU。通常,CPU觀包括通用處理器,其是以軟件編程的,以實(shí)現(xiàn)此處描述的功能。該軟 件可以例如通過網(wǎng)絡(luò)以電子形式下載到該處理器,或者替代地或附加地,提供到和/或存 儲(chǔ)在有形介質(zhì)例如磁、光學(xué)或電子存儲(chǔ)器上。系統(tǒng)20的配置是示例配置,完全是為了概念清楚而選擇的。也可以使用任何其他 適當(dāng)?shù)南到y(tǒng)配置。例如,用戶工作站36可以與服務(wù)器M本地通信或通過通信網(wǎng)絡(luò)通信。在 替代實(shí)施方案中,用戶工作站功能可以直接在服務(wù)器對(duì)上實(shí)現(xiàn)。使用諸如系統(tǒng)20之類的系統(tǒng)來進(jìn)行邏輯設(shè)計(jì)仿真的某些方面,在提交于2009年 3 月 25 日的題為 “Design Simulation using Parallel Processors” 的 PCT 申請(qǐng) PCT/ IL2009/000330中進(jìn)行了論述,該申請(qǐng)轉(zhuǎn)讓給本專利申請(qǐng)的受讓人,且其公開內(nèi)容以參引方 式納入本文。圖2是示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方案的GPU 32的內(nèi)部結(jié)構(gòu)的方框 圖。在當(dāng)前實(shí)例中,GPU 32包括多個(gè)多處理器40。每個(gè)多處理器40包括多個(gè)處理器44,所 述多個(gè)處理器44在本文也稱為處理核。在某些實(shí)施方案中,每個(gè)多處理器40包括一個(gè)單 指令多線程(SIMT)處理器,如本領(lǐng)域所知。在替代實(shí)施方案中,每個(gè)多處理器40包括一個(gè) 單指令多數(shù)據(jù)(SIMD)處理器,其中所有處理器44在每個(gè)時(shí)鐘周期內(nèi)運(yùn)行相同的指令。(然 而,不同的處理器可以在不同數(shù)據(jù)上運(yùn)行相同的指令。)在典型應(yīng)用中,整個(gè)GPU中的所有處理器44運(yùn)行相同的指令。不同處理器的功能之間的差別是由所述數(shù)據(jù)引入的。所公開 的技術(shù)既可應(yīng)用于SIMD處理器也可應(yīng)用于SIMT處理器。每個(gè)處理器44可以訪問若干本地寄存器48。一個(gè)給定的多處理器40之內(nèi)的不同 處理器可以在共享存儲(chǔ)器52內(nèi)存儲(chǔ)數(shù)據(jù)。這一共享存儲(chǔ)器對(duì)于該給定的多處理器的處理 器44是可訪問的,但對(duì)于其他多處理器的處理器是不可訪問的。在典型的GPU中,每個(gè)多 處理器還包括一個(gè)指令單元60,該指令單元60管理所述多處理器的操作。在典型的多處理 器中,單元60創(chuàng)建、管理和執(zhí)行并發(fā)的線程。具體地,單元60可包括對(duì)在所述多處理器中 運(yùn)行的不同線程的操作進(jìn)行同步的硬件機(jī)制。GPU 32包括設(shè)備存儲(chǔ)器56,該設(shè)備存儲(chǔ)器56在本文也稱為外部存儲(chǔ)器。存儲(chǔ)器 56通常包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。不同于共享存儲(chǔ)器52,設(shè)備存儲(chǔ)器56通常對(duì)于 所有多處理器40的處理器都是可訪問的。另一方面,對(duì)設(shè)備存儲(chǔ)器56的訪問在時(shí)延和吞 吐量方面通常是代價(jià)昂貴的。為了有效率地訪問存儲(chǔ)器56,通常希望寫入連續(xù)且對(duì)齊的存 儲(chǔ)器地址或從連續(xù)且對(duì)齊的存儲(chǔ)器地址讀取。本文描述的某些方法涉及產(chǎn)生有效率地訪問 存儲(chǔ)器56的代碼。每個(gè)處理器44在任意給定時(shí)間運(yùn)行的基本軟件代碼單位被稱為線程。通常,CPU 觀通過為GPU提供線程塊來調(diào)用GPU 32。給定的線程塊被保證運(yùn)行在處于SIMD模式或 SIMT模式的單個(gè)多處理器40的處理器上。因此,給定的塊中的線程可以通過共享存儲(chǔ)器 52彼此通信。通常,每個(gè)塊中的線程的數(shù)量可多于在該多處理器中的處理器的數(shù)量。提供給GPU 的塊的數(shù)量通??梢远嘤诙嗵幚砥鞯臄?shù)量。所述GPU包括塊管理器60,其從CPU觀接受待 執(zhí)行的塊,并且根據(jù)某些內(nèi)部標(biāo)準(zhǔn)對(duì)塊和線程的執(zhí)行進(jìn)行調(diào)度。這些標(biāo)準(zhǔn)在本文中稱為內(nèi) 建調(diào)度策略。因此,除了保證給定塊的線程在同一多處理器內(nèi)執(zhí)行之外,對(duì)給定塊的線程在該 多處理器內(nèi)執(zhí)行的順序不作保證。對(duì)于不同的塊在GPU中執(zhí)行的順序也不作保證。也就是 說,CPU 28通常對(duì)GPU的內(nèi)部調(diào)度策略沒有控制。此處描述的某些方法和系統(tǒng)生成代碼,所述代碼利用了 GPU的架構(gòu)特征,例如在 給定塊內(nèi)的線程之間同步和共享數(shù)據(jù)的能力。當(dāng)把依賴性問題劃分成線程時(shí),在該GPU內(nèi) 的線程和塊執(zhí)行的非保證性質(zhì)(也即,與所述GPU的調(diào)度策略無關(guān))的前提下,所公開的方 法和系統(tǒng)在不同的原子處理任務(wù)之間保留了固有的依賴性。具體地,所述GPU通常被指定為同時(shí)執(zhí)行一定數(shù)量的塊。如果GPU調(diào)用更多數(shù)量 的塊,則這些塊被塊管理器60調(diào)度。此處描述的某些方法和系統(tǒng)以多個(gè)塊調(diào)用該GPU,該多 個(gè)塊不超過可同時(shí)執(zhí)行的塊的最大數(shù)量。因此,塊管理器60的內(nèi)部調(diào)度策略被有效地繞開 了。這些特征在下文進(jìn)一步詳述。圖2中的GPU配置是一個(gè)示例配置,其完全是為了概念清楚而選擇的。在替代的實(shí) 施方案中,也可使用任何其他適合的GPU配置??捎糜诖四康牡牡湫虶PU設(shè)備是由NVIDIA 公司(加利福尼亞州圣克拉拉市)生產(chǎn)的GTX 285設(shè)備。此設(shè)備包括三十個(gè)多處理器,每 個(gè)多處理器包括八個(gè)處理核。進(jìn)一步替代地,雖然本文描述的實(shí)施方案提到了 GPU的使用, 所公開的方法和系統(tǒng)可以和各種其他類型的并行地操作多個(gè)處理核的處理器一同使用,例 如數(shù)字信號(hào)處理器(DSP)和多核中央處理單元(CPU)。
使用依賴性圖來表示依賴性問題CPU 28以原子執(zhí)行任務(wù)的形式表示了輸入依賴性問題,所述原子執(zhí)行任務(wù)在本文 稱為處理元(PE)。當(dāng)該依賴性問題由GPU 32執(zhí)行時(shí),每個(gè)PE相應(yīng)于由某個(gè)處理器44執(zhí)行 的線程。所述CPU通常保存了一個(gè)PE類型庫,每個(gè)類型執(zhí)行一個(gè)特定的原子任務(wù)(例如, 查找表查找,觸發(fā)器,緩沖操作,存儲(chǔ)器訪問操作,多路復(fù)用操作,運(yùn)算操作,邏輯操作或任 意其他適當(dāng)?shù)娜蝿?wù)類型)。每個(gè)PE屬于所述類型之一,并且在特定數(shù)據(jù)上操作。當(dāng)處理器44以SIMT模式工作時(shí),每個(gè)線程通常包括能夠運(yùn)行不同PE類型的代 碼。當(dāng)執(zhí)行該線程時(shí),由該線程執(zhí)行的實(shí)際的PE類型是由數(shù)據(jù)選擇的。由該線程讀取的數(shù) 據(jù)可以選擇實(shí)際的PE類型,選擇方式例如,跳轉(zhuǎn)到實(shí)現(xiàn)想要的PE功能的程序地址,或者使 用任何其他適當(dāng)?shù)倪x擇方法。因此典型的線程可以執(zhí)行下列流程·從存儲(chǔ)器56讀取想要的PE類型,并且跳轉(zhuǎn)到實(shí)施這一 PE類型的適當(dāng)?shù)刂?。·從存?chǔ)器56讀取PE參數(shù)和輸入值。 執(zhí)行想要的PE功能?!E輸出值寫到存儲(chǔ)器56。(為了有效率地訪問存儲(chǔ)器56,CPU28可以將PE分成PE組——PEG。這一特征 在下文進(jìn)一步詳述,也已在上面引用的PCT申請(qǐng)PCT/IL2009/000330中提及。)通常,線程 加載和存儲(chǔ)操作都與線程的PE參數(shù)無關(guān)。例如,給定PEG可支持最多達(dá)64個(gè)從設(shè)備存儲(chǔ) 器到共享存儲(chǔ)器的加載命令。給定線程可加載不由其PE所使用的數(shù)據(jù)。當(dāng)在SIMT處理器中使用上述技術(shù)時(shí),通常期望的是,對(duì)于被調(diào)度為在給定的多處 理器SIMT單元中并發(fā)運(yùn)行的線程,它們將運(yùn)行同樣的PE類型,以使得該單元有效率地以 SIMD模式運(yùn)行。圖3是示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用依賴性圖來表示的依賴 性問題的圖解。CPU觀使用多個(gè)PE表示該依賴性問題,所述多個(gè)PE通過執(zhí)行依賴性而被 互連。給定的依賴性規(guī)定了某個(gè)PE(被稱為“使驅(qū)(driVing)”PE)的輸出被用作另一個(gè) PE (被稱作“受驅(qū)(driven)” PE)的輸入。換句話說,受驅(qū)PE依賴于使驅(qū)PE。這樣的依賴 性意味著使驅(qū)PE將在受驅(qū)PE之前被執(zhí)行,這是因?yàn)榉駝t受驅(qū)PE的輸入將無效。圖3示出了示例依賴性問題68,其被轉(zhuǎn)化成依賴性圖72。圖72包括表示了所述 PE的多個(gè)頂點(diǎn)76,以及表示了執(zhí)行依賴性的有向邊80。一條給定的邊的方向?yàn)閺氖跪?qū)PE 到受驅(qū)PE。在某些實(shí)施方案中,CPU觀從依賴性圖72產(chǎn)生多個(gè)子圖78。不同于依賴性圖 72——其通??梢允茄h(huán)的,而每個(gè)子圖78是非循環(huán)。下文所述的方法將給定的非循環(huán)子圖轉(zhuǎn)換成在GPU 32上執(zhí)行的代碼。如果依賴 性問題使用多個(gè)子圖來表示,則所公開的方法通常獨(dú)立地適用于每個(gè)子圖。在某些實(shí)施方 案中,可以利用不同子圖之間變量的共性來提高計(jì)算效率。這些特征將在下文進(jìn)一步陳述。使用靜態(tài)調(diào)用數(shù)據(jù)庫(SID)表示和執(zhí)行依賴性圖在某些實(shí)施方案中,CPU 28編譯所述輸入依賴性問題,以產(chǎn)生一個(gè)調(diào)用數(shù)據(jù)結(jié)構(gòu), 該調(diào)用數(shù)據(jù)結(jié)構(gòu)在本文中稱為靜態(tài)調(diào)用數(shù)據(jù)庫(SID)。該SID被提供給GPU 32以便執(zhí)行。 CPU觀通常運(yùn)行一個(gè)產(chǎn)生SID的編譯器程序。在下文的說明書中,為清楚起見,CPU觀執(zhí) 行的行為有些時(shí)候被稱為是由編譯器實(shí)現(xiàn)的。然而,在替代的實(shí)施方案中,該編譯器可以在 任何適當(dāng)?shù)奶幚砥魃线\(yùn)行,以產(chǎn)生該SID。由此產(chǎn)生的結(jié)果SID可以接著被提供給系統(tǒng)20以便執(zhí)行。所述SID包括一批PE執(zhí)行序列,它們被保證彼此并行且以某一特定順序運(yùn)行,而 無關(guān)于所述GPU的內(nèi)部調(diào)度策略。當(dāng)GPU以該SID被調(diào)用時(shí),每個(gè)執(zhí)行序列作為一個(gè)線程 塊而被提供給GPU。因此,保證了每個(gè)序列中的PE運(yùn)行在GPU 32的同一多處理器40中。 此外,該SID中的執(zhí)行序列的數(shù)量不超過可由該GPU同時(shí)執(zhí)行的塊的最大數(shù)量。因此,執(zhí)行 序列被保證在所述GPU中同時(shí)運(yùn)行,并且執(zhí)行序列基本不受塊管理器60的內(nèi)部調(diào)度策略影 響。換句話說,有效繞開了所述GPU的內(nèi)部調(diào)度策略,且PE的執(zhí)行順序完全由SID所控制。圖4是示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方案的SID 90的圖解。SID 90包 括一批執(zhí)行序列,在本實(shí)例中是四個(gè)序列98Α···98 。然而,通常,可使用任意適當(dāng)數(shù)量的序 列,該數(shù)量大于1但不超過可由該GPU同時(shí)執(zhí)行的塊的最大數(shù)量。每個(gè)執(zhí)行序列包括一系 列PEG 94,其被逐個(gè)執(zhí)行。(下文將進(jìn)一步敘述將PE分組成PEG)GPU能夠同時(shí)運(yùn)行的塊的數(shù)量通常是由多處理器40的數(shù)量乘以可由每個(gè)多處理 器40同時(shí)執(zhí)行的塊的數(shù)量。每個(gè)多處理器的并發(fā)塊的實(shí)際數(shù)量有時(shí)可被多處理器資源 (例如,寄存器、共享存儲(chǔ)器或線程數(shù))限制,且因此可小于每個(gè)多處理器的并發(fā)塊的規(guī)定數(shù)量。在某些情況下,每個(gè)多處理器的并發(fā)塊的實(shí)際數(shù)量可被寫作min((多處理器寄存 器數(shù)/程序寄存器數(shù)),(多處理器共享存儲(chǔ)器大小/程序共享存儲(chǔ)器),(每個(gè)多處理器的 線程數(shù)量/每個(gè)塊的線程數(shù)量),每個(gè)多處理器的并發(fā)塊的規(guī)定數(shù)量)。例如,GTX285 GPU 具有30個(gè)多處理器40。每個(gè)多處理器包括16,384個(gè)寄存器和一個(gè)16K字節(jié)的共享存儲(chǔ) 器,且支持最多IOM個(gè)并發(fā)線程,以及最多8個(gè)并發(fā)塊。在一個(gè)示例實(shí)施方案中,由編譯器 產(chǎn)生的GPU代碼在每個(gè)線程使用了 2KB共享存儲(chǔ)器和15個(gè)寄存器,其中每個(gè)塊包括64個(gè) 線程。這一代碼導(dǎo)致了每個(gè)塊共有15x64 = 240個(gè)寄存器。在這一實(shí)例中,每個(gè)多處理器 的并發(fā)塊的數(shù)量是 min(16KB/2KB,16384/240,1024/64,8) = min (8,68,16,8) =8。因此, 可由整個(gè)GPU同時(shí)執(zhí)行的并發(fā)塊的最大數(shù)量是8X30 = 2400因此,不同的執(zhí)行序列通常可具有不同的長度,也即,不同的執(zhí)行時(shí)間。通常,CPU 觀試圖將依賴性問題編譯成一個(gè)執(zhí)行時(shí)間為最小的SID。換句話說,CPU試圖在不超過允 許的最大序列數(shù)量的前提下產(chǎn)生一個(gè)具有最短執(zhí)行序列的SID。下文將進(jìn)一步詳述這類的 一個(gè)示例SID生成過程。由于每個(gè)執(zhí)行序列包括了被保證在同一多處理器40中運(yùn)行的線程塊,從而保證 了在一個(gè)給定序列中的PEG以正確順序運(yùn)行。因此,在同一執(zhí)行序列中把使驅(qū)PE放在其相 應(yīng)的受驅(qū)PE之前,將保證不破壞PE之間的執(zhí)行依賴性。此外,屬于同一執(zhí)行序列的PEG可 使用運(yùn)行此序列的多處理器的共享存儲(chǔ)器52來交換數(shù)據(jù)。然而,在許多依賴性問題中,將每一對(duì)依賴的PE置于同一執(zhí)行序列中這一約束過 于嚴(yán)格。這樣的約束通常產(chǎn)生了少數(shù)的極長的執(zhí)行序列,且因此增加了執(zhí)行時(shí)間并且限制 了可達(dá)到的并行化。在許多情況下,希望將依賴的PE置于不同的執(zhí)行序列中,同時(shí)仍然保 留執(zhí)行依賴性。在一些實(shí)施方案中,編譯器強(qiáng)制該SID中不同的執(zhí)行序列之間進(jìn)行同步,以保持 置于不同序列中的PE之間的依賴性。例如,在圖4中,如依賴關(guān)系110所指示,序列98B中 的PEG 102依賴于序列98A中的PEG 106。(更準(zhǔn)確地說,PEG 102包括這樣一個(gè)PE,該P(yáng)E依賴于PEG106中的一個(gè)PE。)為了保證PEG 106在PEG 102開始執(zhí)行之前被完全執(zhí)行,所 述編譯器將一個(gè)同步元,例如SYNC PEG 114,放置在序列98B中的PEG 102之前。SYNC 114 暫停序列98B的執(zhí)行,直到PEG 106完成執(zhí)行并且產(chǎn)生有效輸出。然后將PEG 106的輸出 作為輸入提供給PEG 102,序列98B即可恢復(fù)執(zhí)行。類似地,如依賴關(guān)系1 所示,序列98C 中的PEG 118依賴于序列98D中的PEG 122。為了保持這一依賴性,該編譯器在序列98C中 將一 SYNC PEG 130放置在PEG 118之前。序列之間的同步化通常是用設(shè)備存儲(chǔ)器56來實(shí)現(xiàn)的。例如,使驅(qū)PEG可通過向設(shè) 備存儲(chǔ)器56的某一區(qū)域?qū)懭雭戆l(fā)出其執(zhí)行狀態(tài)的信號(hào)。一個(gè)SYNC PEG可以輪詢這一區(qū)域, 并且僅當(dāng)所述使驅(qū)PEG已完成執(zhí)行時(shí)才恢復(fù)執(zhí)行所述SYNC PEG的序列。然而,注意,并不是不同序列中的每一對(duì)依賴的PE都必定要求增加一個(gè)同步PEG。 例如,假設(shè)序列98C中的最后一個(gè)PEG依賴于序列98D中的第一個(gè)PEG。在此情況下,沒有 必要給序列98C添加另一個(gè)SYNC PEG,因?yàn)橐延械腟YNC PEG 130已經(jīng)保證了只有在序列 98D中的第一個(gè)PEG執(zhí)行完畢的情況下,序列98C中的最后一個(gè)PEG才會(huì)執(zhí)行。通常,某個(gè)SYNC PEG可依賴于任意期望數(shù)量的序列中的任意期望數(shù)量的PEG,也 即,暫停給定序列的執(zhí)行直到預(yù)定義的一批使驅(qū)PEG完成執(zhí)行為止。在某些實(shí)施方案中,同 步功能可被嵌入在受驅(qū)PEG中而不使用專用的SYNC PEG。在序列之間的強(qiáng)制同步可以高效地平衡不同序列的執(zhí)行時(shí)間,且因此增進(jìn)了并行 化。另一方面,同步機(jī)制導(dǎo)致了時(shí)延,且涉及對(duì)設(shè)備存儲(chǔ)器56的代價(jià)高昂的訪問。如下文 將解釋,所述編譯器通常試圖將這些優(yōu)點(diǎn)和缺陷作折衷平衡,以達(dá)到該SID的總執(zhí)行時(shí)間最短。圖5是示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用于執(zhí)行依賴性問題的方 法的流程圖。在圖中的輸入步驟134,該方法以CPU觀接收輸入依賴性問題作為開始,該問 題被表示為依賴性圖。在劃分步驟138,所述CPU將所述依賴性圖劃分成有向的、非循環(huán)的 子圖。在例如上文引述的PCT申請(qǐng)PCT/IL2009/000330中,陳述了從依賴性圖到有向的、非 循環(huán)的子圖的劃分。在分組步驟142,對(duì)于每個(gè)子圖,所述CPU將PE分組成PEG,而在SID 構(gòu)建步驟146,所述CPU將PEG布置在SID中。在調(diào)用步驟150,所述CPU調(diào)用GPU 32以執(zhí) 行該SID。該GPU執(zhí)行該SID中的PEG序列,以產(chǎn)生該計(jì)算任務(wù)的結(jié)果。有效率的SID生成如上所述,在CPU 28上運(yùn)行的編譯器通常試圖生成這樣的SID 其對(duì)于給定的最 大執(zhí)行序列數(shù)量具有最短的執(zhí)行時(shí)間。輸入這一過程中的,是PE的有向的、非循環(huán)的依賴 性子圖,其將要被轉(zhuǎn)換成SID。在某些實(shí)施方案中,所述編譯器通過以保留了 PE之間的執(zhí)行 依賴性的方式將一個(gè)二維線程束網(wǎng)格用PE逐漸地填滿,來生成SID。一個(gè)線程束是一組同樣類型的線程,其在一個(gè)給定的多處理器內(nèi)并發(fā)地并且有效 率地運(yùn)行。在一個(gè)線程束中的最大線程數(shù)量(且因此,PE的最大數(shù)量)可從一個(gè)GPU類型 到另一個(gè)GPU類型而有所變化。例如,在NVIDIA GTX285設(shè)備中,每個(gè)線程束運(yùn)行32個(gè)線 程。如下文所示,幾個(gè)線程束可稍后結(jié)合在一起以形成一個(gè)PEG。圖6是示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用于SID生成的線程束網(wǎng)格 160的圖解。網(wǎng)格160包括多個(gè)執(zhí)行序列164,每個(gè)執(zhí)行序列164都包括多個(gè)線程束空位 168。線程束空位起初是空的,然后該編譯器逐漸地用PE將它們填滿。為了在不同的執(zhí)行序列之間強(qiáng)制同步,所述編譯器有時(shí)將SYNC線程束172插入所述序列。(注意,SYNC線程 束不同于普通的線程束,因?yàn)樗鼈儾话ㄓ糜趫?zhí)行的線程。SYNC線程束模仿了將要被插入 該序列的SYNC操作的時(shí)延。)在該過程結(jié)束時(shí),輸入子圖中的每個(gè)PE都被放置入線程束 空位之一(每個(gè)線程束空位可包括同一類型的多個(gè)PE)。然后該編譯器從所述線程束形成 PEG 176,在某些情況下,將給定序列中的兩個(gè)或更多個(gè)相鄰線程束結(jié)合在一起以形成一個(gè) PEG。將PEG的網(wǎng)格輸出作為想要的SID。通常,網(wǎng)格160中的執(zhí)行序列164的數(shù)量被設(shè)置為不超過該GPU可同時(shí)運(yùn)行的線 程塊的最大數(shù)量,以使得作為結(jié)果的SID的執(zhí)行不會(huì)受內(nèi)部GPU調(diào)度的影響。每個(gè)序列的 線程束空位的數(shù)量通常被初始化為輸入子圖中的最長路徑的長度。由于PE之間的依賴性,每個(gè)PE只能被放置在網(wǎng)格160的列中的某一個(gè)部分子集 之內(nèi)。這一子集被稱為所述PE的分配區(qū)間(allocation interval) 0例如,依賴于另一個(gè) PE的PE不能被放置在所述線程束網(wǎng)格的第一列(也即,在任意執(zhí)行序列之始),因?yàn)楸仨?先執(zhí)行使驅(qū)。相似地,驅(qū)動(dòng)了另一個(gè)PE的PE不能被放置在網(wǎng)格的最后一列。通常,該子圖中的每個(gè)PE具有一個(gè)特定的分配區(qū)間,其定義了該P(yáng)E可能被放置在 其中的網(wǎng)格160的列。PE χ的分配區(qū)間依賴于兩個(gè)參數(shù),其被稱為PE χ的反向段(表示為 BP(X))和前向段(表示為PF(X))。給定PE的反向段被定義為該子圖中沿通向該P(yáng)E的最 長路徑的PE的數(shù)量。給定PE的前向段被定義為該子圖中沿從該P(yáng)E開始的最長路徑的PE 的數(shù)量。使用這套術(shù)語,子圖中最長路徑的長度(且因此,在線程束網(wǎng)格160中的列的數(shù) 量)由L = maX(BP(X)+FP(X))+l給定,其中最大值是子圖中所有PE χ的數(shù)量。PE χ的分 配區(qū)間由[BP(X),L-FP(x)]給定。這些分配區(qū)間反映了在分配過程開始時(shí)的情況。所述分 配區(qū)間通常隨著分配過程的進(jìn)行而變化。圖7是示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方案的用于將PE放置在一個(gè)線程 束網(wǎng)格中的分配區(qū)間的圖解。圖7涉及示例子圖180,其包括8個(gè)PE 76,表示為A…H。所 述PE將要被放置在具有兩個(gè)序列164的線程束網(wǎng)格中。因?yàn)榇┻^此圖的最長路徑是三個(gè) PE長,所以該實(shí)例中的每個(gè)序列164包括三個(gè)線程束空位168。這8個(gè)PE的前向段和反向段在下表中給出
權(quán)利要求
1.一種計(jì)算方法,包括接受計(jì)算任務(wù)的定義,該計(jì)算任務(wù)包括具有執(zhí)行依賴性的多個(gè)原子處理元(PE),每個(gè) 執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的第一 PE ;編譯所述計(jì)算任務(wù)以用于在多處理器設(shè)備上并發(fā)地執(zhí)行,所述多處理器設(shè)備包括多個(gè) 處理器,所述多個(gè)處理器通過在一個(gè)包括第二數(shù)量的執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述 執(zhí)行依賴性沖突地布置所述PE而能夠同時(shí)地執(zhí)行第一數(shù)量的PE,所述第二數(shù)量大于1且不 超過所述第一數(shù)量;以及調(diào)用所述多處理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而并 行地執(zhí)行所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,其中所述計(jì)算任務(wù)包括對(duì)一個(gè)設(shè)計(jì)進(jìn)行驗(yàn)證的任務(wù)。
3.根據(jù)權(quán)利要求1所述的方法,其中所述計(jì)算任務(wù)包括下列之一信號(hào)處理任務(wù)、圖像 處理任務(wù)、包處理任務(wù)和糾錯(cuò)編碼(ECC)任務(wù)。
4.根據(jù)權(quán)利要求1所述的方法,其中所述多處理器設(shè)備包括圖形處理單元(GPU)。
5.根據(jù)權(quán)利要求1所述的方法,其中所述多處理器設(shè)備包括選自由下列組成的一組類 型中的至少一個(gè)設(shè)備類型數(shù)字信號(hào)處理器和多核中央處理單元(CPU)。
6.根據(jù)權(quán)利要求1所述的方法,其中編譯所述計(jì)算任務(wù)包括將每個(gè)執(zhí)行序列中的PE分 組成PE組(PEG)。
7.根據(jù)權(quán)利要求1所述的方法,其中所述多處理器設(shè)備根據(jù)內(nèi)建調(diào)度策略調(diào)度所述PE 以用于由所述多個(gè)處理器執(zhí)行,且其中調(diào)用所述多處理器設(shè)備包括使得所述多處理器設(shè)備 并行地執(zhí)行所述第二數(shù)量的執(zhí)行序列,如同布置在執(zhí)行數(shù)據(jù)結(jié)構(gòu)中,而與所述內(nèi)建調(diào)度策 略無關(guān)。
8.根據(jù)權(quán)利要求1-7中任一所述的方法,其中所述多處理器被分成組布置,每個(gè)組都 被指派以執(zhí)行提供給所述多處理器設(shè)備的一個(gè)或多個(gè)線程塊,且其中調(diào)用所述多處理器設(shè) 備包括提供每個(gè)執(zhí)行序列作為待要被所述組中的一個(gè)組內(nèi)的處理器執(zhí)行的一個(gè)相應(yīng)的線 程塊。
9.根據(jù)權(quán)利要求8所述的方法,其中所述每個(gè)組中的所述處理器訪問一個(gè)相應(yīng)的共享 存儲(chǔ)器,且其中編譯所述計(jì)算任務(wù)包括使得一個(gè)給定執(zhí)行序列中的PE通過被指派以執(zhí)行 該給定執(zhí)行序列的一組處理器的共享存儲(chǔ)器來交換數(shù)據(jù)。
10.根據(jù)權(quán)利要求1-7中任一所述的方法,其中將所述PE布置在所述調(diào)用數(shù)據(jù)結(jié)構(gòu) 中包括最小化最長執(zhí)行序列的長度同時(shí)不超過所述第一數(shù)量且不與所述執(zhí)行依賴性相沖 突。
11.根據(jù)權(quán)利要求1-7中任一所述的方法,其中一個(gè)給定執(zhí)行依賴性規(guī)定了使驅(qū)PE將 在受驅(qū)PE之前被執(zhí)行,且其中將所述PE布置在所述調(diào)用數(shù)據(jù)結(jié)構(gòu)中包括在給定執(zhí)行序列 中將所述受驅(qū)PE放置在所述使驅(qū)PE之后。
12.根據(jù)權(quán)利要求1-7中任一所述的方法,其中一個(gè)給定執(zhí)行依賴性規(guī)定了使驅(qū)PE將 在受驅(qū)PE之前執(zhí)行,且其中將所述PE布置在所述調(diào)用數(shù)據(jù)結(jié)構(gòu)中包括在第一執(zhí)行序列中 放置所述使驅(qū)PE,在不同于所述第一執(zhí)行序列的第二執(zhí)行序列中放置所述受驅(qū)PE,并且向 所述第二執(zhí)行序列中插入一個(gè)同步元,該同步元暫停所述第二執(zhí)行序列的執(zhí)行直到給定的 所述使驅(qū)PE完全被執(zhí)行為止。
13.根據(jù)權(quán)利要求1-7中任一所述的方法,其中編譯所述計(jì)算任務(wù)包括從所述計(jì)算任 務(wù)提取多個(gè)非循環(huán)子圖,并且編譯所述多個(gè)非循環(huán)子圖以產(chǎn)生相應(yīng)的多個(gè)調(diào)用數(shù)據(jù)結(jié)構(gòu)。
14.根據(jù)權(quán)利要求1-7中任一所述的方法,其中將所述PE布置在所述調(diào)用數(shù)據(jù)結(jié)構(gòu)中 包括定義一個(gè)順序,按此順序選擇所述PE以放置在所述執(zhí)行序列中,且按此順序用所述 PE填充所述執(zhí)行序列。
15.根據(jù)權(quán)利要求14所述的方法,其中所述定義一個(gè)順序包括,為每個(gè)PE 確定通向所述PE的一個(gè)最長的執(zhí)行依賴性鏈的第一長度;確定始自所述給定PE的一個(gè)最長的執(zhí)行依賴性鏈的第二長度; 基于所述第一長度和所述第二長度,確定一個(gè)分配區(qū)間——其包括沿著所述執(zhí)行序列 的PE的可能的位置;以及以所述分配區(qū)間的相應(yīng)的長度的升序來排列所述PE。
16.根據(jù)權(quán)利要求15所述的方法,其中填充所述執(zhí)行序列包括,將每個(gè)PE放置在所述 執(zhí)行序列中之一的相應(yīng)的分配區(qū)間之內(nèi)。
17.根據(jù)權(quán)利要求14所述的方法,其中所述定義一個(gè)順序包括識(shí)別輸出組,每個(gè)輸出組包括兩個(gè)或更多個(gè)PE——其驅(qū)動(dòng)了相應(yīng)的受驅(qū)PE ; 識(shí)別輸入組,每個(gè)輸入組包括至少兩個(gè)由一個(gè)相應(yīng)的使驅(qū)PE所驅(qū)動(dòng)的PE ; 基于包含了每個(gè)PE的輸出組和輸入組的數(shù)量,為所述每個(gè)PE指派一個(gè)相應(yīng)的組評(píng)分;并且基于所述PE的組評(píng)分,定義所述順序。
18.根據(jù)權(quán)利要求1-7中任一所述的方法,其中將所述PE布置在所述調(diào)用數(shù)據(jù)結(jié)構(gòu)中 包括對(duì)于一個(gè)給定PE以及所述執(zhí)行序列中的一組可能的位置,計(jì)算由將所述給定PE放置 在所述可能的位置而導(dǎo)致的相應(yīng)的分配成本;以及將所述給定PE放置在所述可能的位置 中的具有最低分配成本的一個(gè)位置。
19.根據(jù)權(quán)利要求18所述的方法,其中計(jì)算所述分配成本包括,根據(jù)選自下列因素組 成的一組因素中的至少一個(gè)因素,估計(jì)給定執(zhí)行序列中的給定的可能的位置的分配成本由將所述給定PE放置在所述給定的可能的位置而導(dǎo)致的所述調(diào)用數(shù)據(jù)結(jié)構(gòu)的執(zhí)行時(shí) 間的增加;在所述給定執(zhí)行序列中和所述給定PE共享一個(gè)公共使驅(qū)PE的PE的第一數(shù)量; 在所述給定執(zhí)行序列中和所述給定PE共享一個(gè)公共受驅(qū)PE的PE的第二數(shù)量; 在所述給定執(zhí)行序列中和所述給定PE共享一個(gè)公共執(zhí)行依賴性的PE的第三數(shù)量;以及距為所述給定PE計(jì)算的最佳位置的距離。
20.根據(jù)權(quán)利要求1-7中任一所述的方法,其中將所述PE布置在所述調(diào)用數(shù)據(jù)結(jié)構(gòu)中 包括,將所述PE以線程束布置在每個(gè)執(zhí)行序列中,每個(gè)線程束包括給定類型的一個(gè)或多個(gè) PE。
21.根據(jù)權(quán)利要求1-7中任一所述的方法,其中編譯所述計(jì)算任務(wù)包括,對(duì)于給定執(zhí) 行序列,定義將變量從所述多處理器設(shè)備的設(shè)備存儲(chǔ)器取到高速緩存的確定性高速緩存模 式,并且在執(zhí)行所述給定執(zhí)行序列期間將所述變量中的至少一些從所述高速緩存丟棄,并 且使得所述多處理器設(shè)備在執(zhí)行所述給定執(zhí)行序列時(shí)實(shí)現(xiàn)所述確定性高速緩存模式。
22.根據(jù)權(quán)利要求21所述的方法,其中所述給定執(zhí)行序列中的PE被分組成PE組 (PEG),且其中定義所述高速緩存模式包括對(duì)于在給定PEG的執(zhí)行期間存在于所述高速緩存中的每個(gè)變量,識(shí)別在所述給定執(zhí)行 序列中接下來將使用該變量的相應(yīng)的下一個(gè)PEG ;一旦在執(zhí)行所述給定PEG之后需要從所述高速緩存丟棄一個(gè)或多個(gè)變量時(shí),選擇該一 個(gè)或多個(gè)變量中的一個(gè)變量,所選擇的變量的相應(yīng)的下一個(gè)PEG具有沿著所述給定執(zhí)行序 列的距所述給定PEG最大的距離;并且在所述高速緩存模式中定義,在執(zhí)行所述給定PEG之后丟棄所選擇的變量。
23.根據(jù)權(quán)利要求21所述的方法,其中定義所述高速緩存模式包括,在單個(gè)取命令中 合并對(duì)兩個(gè)或更多個(gè)變量的取操作。
24.根據(jù)權(quán)利要求23所述的方法,其中合并所述取操作包括為每個(gè)變量沿著所述給 定執(zhí)行序列定義一個(gè)取區(qū)間,所述取區(qū)間自當(dāng)該變量變得有效之時(shí)開始,至當(dāng)該變量首次 被使用時(shí)結(jié)束;以及定義所述單個(gè)取命令以包括至少兩個(gè)在相應(yīng)的取區(qū)間有重疊的變量, 并且將所述單個(gè)取命令放置為在所述重疊的期間發(fā)生。
25.根據(jù)權(quán)利要求M所述的方法,其中合并所述取操作包括,通過識(shí)別在所述單個(gè)取 命令的位置和所述給定變量首次被使用的時(shí)間之間具有最小距離的給定變量,來選擇待要 被合并到所述單個(gè)取命令中的給定變量。
26.根據(jù)權(quán)利要求21所述的方法,其中定義所述高速緩存模式包括,在單個(gè)存儲(chǔ)命令 中合并對(duì)兩個(gè)或更多個(gè)變量的存儲(chǔ)操作。
27.根據(jù)權(quán)利要求21所述的方法,其中所述給定執(zhí)行序列的確定性高速緩存模式以給 定順序從所述設(shè)備存儲(chǔ)器取變量,且其中編譯所述計(jì)算任務(wù)包括,根據(jù)所述給定順序以連 續(xù)的地址將所述變量預(yù)排列在所述設(shè)備存儲(chǔ)器中。
28.根據(jù)權(quán)利要求1-7中任一所述的方法,其中編譯所述計(jì)算任務(wù)包括,通過訪問所述 多處理器設(shè)備的設(shè)備存儲(chǔ)器,使得所述第一執(zhí)行序列提供一個(gè)或多個(gè)變量作為輸入給第二 執(zhí)行序列。
29.根據(jù)權(quán)利要求1-7中任一所述的方法,其中編譯所述計(jì)算任務(wù)包括產(chǎn)生多個(gè)調(diào)用 數(shù)據(jù)結(jié)構(gòu),所述多個(gè)調(diào)用數(shù)據(jù)結(jié)構(gòu)中的每個(gè)調(diào)用數(shù)據(jù)結(jié)構(gòu)包括一個(gè)或多個(gè)執(zhí)行序列;以及 使得所述執(zhí)行序列中的至少一些執(zhí)行序列通過訪問所述多處理器設(shè)備的設(shè)備存儲(chǔ)器而在 不同的調(diào)用數(shù)據(jù)結(jié)構(gòu)之間交換變量。
30.根據(jù)權(quán)利要求四所述的方法,其中在所述不同的調(diào)用數(shù)據(jù)結(jié)構(gòu)之間交換的每個(gè)變 量都由一個(gè)或多個(gè)源執(zhí)行序列所產(chǎn)生,并被一個(gè)或多個(gè)目標(biāo)序列所使用,且其中編譯所述 計(jì)算任務(wù)包括,根據(jù)所述源執(zhí)行序列和所述目標(biāo)執(zhí)行序列將所述變量聚合成組,并且將每 個(gè)組以連續(xù)的地址存儲(chǔ)在所述設(shè)備存儲(chǔ)器中。
31.根據(jù)權(quán)利要求30所述的方法,其中使得所述執(zhí)行序列交換所述變量包括,使得所 述執(zhí)行序列以讀命令從所述設(shè)備存儲(chǔ)器讀所述變量,每個(gè)讀命令從所述組之一讀取預(yù)定大 小的數(shù)據(jù)。
32.根據(jù)權(quán)利要求31所述的方法,還包括,當(dāng)兩個(gè)或更多個(gè)組中的變量聯(lián)合起來未超 過所述預(yù)定大小時(shí),定義一個(gè)從所述兩個(gè)或更多個(gè)組讀取所述變量的合并的讀命令。
33.根據(jù)權(quán)利要求四所述的方法,還包括,當(dāng)在一個(gè)給定調(diào)用數(shù)據(jù)結(jié)構(gòu)中的多個(gè)執(zhí)行序列的一個(gè)集合中使用一組變量時(shí),僅僅使得所述多個(gè)執(zhí)行序列中的一個(gè)部分子集從所述 設(shè)備存儲(chǔ)器讀取所述一組變量,并且將該變量傳遞給該集合中的其他的執(zhí)行序列。
34.根據(jù)權(quán)利要求33所述的方法,其中使得所述執(zhí)行序列的部分子集傳遞所述變量包 括,識(shí)別該集合中不能從該調(diào)用數(shù)據(jù)結(jié)構(gòu)的其他執(zhí)行序列接收所述變量的至少一個(gè)執(zhí)行序 列,并且將所識(shí)別的序列添加到所述部分子集。
35.根據(jù)權(quán)利要求33所述的方法,其中使得所述執(zhí)行序列的部分子集傳遞所述變量包 括,識(shí)別所述給定調(diào)用數(shù)據(jù)結(jié)構(gòu)中的同步元——其將所述部分子集連接到所述集合中的其 他執(zhí)行序列,并且分配與所述同步元相關(guān)聯(lián)的通信資源以便傳遞所述變量。
36.根據(jù)權(quán)利要求1-7中任一所述的方法,其中編譯所述計(jì)算任務(wù)并且調(diào)用所述多處 理器設(shè)備包括,運(yùn)行一個(gè)事件驅(qū)動(dòng)仿真——其仿真了所述計(jì)算任務(wù)。
37.根據(jù)權(quán)利要求1-7中任一所述的方法,其中將所述PE布置在所述調(diào)用數(shù)據(jù)結(jié)構(gòu)中 包括,根據(jù)選自下列因素組成的一組因素中的至少一個(gè)因素,將所述PE放置在所述執(zhí)行序 列中始自所述PE的相應(yīng)的最長的執(zhí)行依賴性鏈的長度; 執(zhí)行序列的相應(yīng)的占用程度;以及 由對(duì)所述PE的放置而引起的同步元。
38.一種計(jì)算方法,包括接受計(jì)算任務(wù)的定義,該計(jì)算任務(wù)包括具有執(zhí)行依賴性的多個(gè)原子處理元(PE),每個(gè) 執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的第一 PE ;編譯所述計(jì)算任務(wù)以用于在多處理器設(shè)備上并發(fā)地執(zhí)行,所述多處理器設(shè)備包括并行 運(yùn)行的多個(gè)處理器,并通過在一個(gè)包括多個(gè)執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述執(zhí)行依賴 性沖突地布置所述PE來調(diào)度該P(yáng)E,以用于由所述多個(gè)處理器根據(jù)微處理器設(shè)備的內(nèi)建調(diào) 度策略執(zhí)行;以及調(diào)用所述多處理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而并 行地且無關(guān)于所述多處理器設(shè)備的調(diào)度策略地執(zhí)行所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果。
39.一種計(jì)算裝置,包括一個(gè)界面,被連接以接受計(jì)算任務(wù)的定義,該計(jì)算任務(wù)包括具有執(zhí)行依賴性的多個(gè)原 子處理元(PE),每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的 第一 PE;以及一個(gè)中央處理單元(CPU),所述中央處理單元被布置為編譯所述計(jì)算任務(wù)以用于在 多處理器設(shè)備上并發(fā)地執(zhí)行,所述多處理器設(shè)備包括多個(gè)處理器,所述多個(gè)處理器通過在 一個(gè)包括第二數(shù)量的執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述執(zhí)行依賴性沖突地布置所述PE 而能夠同時(shí)地執(zhí)行第一數(shù)量的PE,所述第二數(shù)量大于1且不超過所述第一數(shù)量;以及調(diào)用 所述多處理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而并行地執(zhí)行 所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果。
40.根據(jù)權(quán)利要求39所述的裝置,其中所述計(jì)算任務(wù)包括對(duì)一個(gè)設(shè)計(jì)進(jìn)行驗(yàn)證的任務(wù)。
41.根據(jù)權(quán)利要求39所述的裝置,其中所述計(jì)算任務(wù)包括下列之一信號(hào)處理任務(wù)、圖像處理任務(wù)、包處理任務(wù)和糾錯(cuò)編碼(ECC)任務(wù)。
42.根據(jù)權(quán)利要求39所述的裝置,其中所述多處理器設(shè)備包括圖形處理單元(GPU)。
43.根據(jù)權(quán)利要求39所述的裝置,其中所述多處理器設(shè)備包括選自由下列組成的一組 類型中的至少一個(gè)設(shè)備類型數(shù)字信號(hào)處理器和多核中央處理單元(CPU)。
44.根據(jù)權(quán)利要求39所述的裝置,其中所述CPU被布置為將每個(gè)執(zhí)行序列中的PE分組 成 PE 組(PEG)。
45.根據(jù)權(quán)利要求39所述的裝置,其中所述多處理器設(shè)備根據(jù)內(nèi)建調(diào)度策略調(diào)度所述 PE用于由所述多個(gè)處理器執(zhí)行,且其中所述CPU被布置為使得所述多處理器設(shè)備并行地執(zhí) 行所述第二數(shù)量的執(zhí)行序列,如同布置在執(zhí)行數(shù)據(jù)結(jié)構(gòu)中,而與所述內(nèi)建調(diào)度策略無關(guān)。
46.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中所述多處理器被分成組布置,每個(gè)組 都被指派以執(zhí)行提供給所述多處理器設(shè)備的一個(gè)或多個(gè)線程塊,且其中所述CPU被布置為 提供每個(gè)執(zhí)行序列給所述多處理器設(shè)備以作為待要被所述組中的一個(gè)組內(nèi)的處理器執(zhí)行 的一個(gè)相應(yīng)的線程塊。
47.根據(jù)權(quán)利要求46所述的裝置,其中所述每個(gè)組中的所述處理器訪問一個(gè)相應(yīng)的共 享存儲(chǔ)器,且其中所述CPU被布置為使得一個(gè)給定執(zhí)行序列中的PE通過被指派以執(zhí)行該給 定執(zhí)行序列的一組處理器的共享存儲(chǔ)器來交換數(shù)據(jù)。
48.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中所述CPU被布置為,最小化最長執(zhí)行 序列的長度同時(shí)不超過所述第一數(shù)量且不與所述執(zhí)行依賴性相沖突。
49.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中一個(gè)給定執(zhí)行依賴性規(guī)定了使驅(qū)PE 將在受驅(qū)PE之前被執(zhí)行,且其中所述CPU被布置為在給定執(zhí)行序列中將所述受驅(qū)PE放置 在所述使驅(qū)PE之后。
50.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中一個(gè)給定執(zhí)行依賴性規(guī)定了使驅(qū)PE 將在受驅(qū)PE之前執(zhí)行,且其中所述CPU被布置為,在第一執(zhí)行序列中放置所述使驅(qū)PE,在不 同于所述第一執(zhí)行序列的第二執(zhí)行序列中放置所述受驅(qū)PE,并且向所述第二執(zhí)行序列中插 入一個(gè)同步元,該同步元暫停所述第二執(zhí)行序列的執(zhí)行直到給定的所述使驅(qū)PE完全被執(zhí) 行為止。
51.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中所述CPU被布置為,從所述計(jì)算任務(wù) 提取多個(gè)非循環(huán)子圖,并且編譯所述多個(gè)非循環(huán)子圖以產(chǎn)生相應(yīng)的多個(gè)調(diào)用數(shù)據(jù)結(jié)構(gòu)。
52.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中所述CPU被布置為定義一個(gè)順序,按 此順序選擇所述PE以放置在所述執(zhí)行序列中,且按此順序用所述PE填充所述執(zhí)行序列。
53.根據(jù)權(quán)利要求52所述的裝置,其中所述CPU被布置為,為每個(gè)PE確定通向所述PE的一個(gè)最長的執(zhí)行依賴性鏈的第一長度;確定始自所述給定PE的一個(gè)最長的執(zhí)行依賴性鏈的第二長度;基于所述第一長度和所述第二長度,確定一個(gè)分配區(qū)間——其包括沿著所述執(zhí)行序列 的PE的可能的位置;并且以所述分配區(qū)間的相應(yīng)的長度的升序來排列所述PE。
54.根據(jù)權(quán)利要求53所述的裝置,其中所述CPU被布置為,通過將每個(gè)PE放置在所述 執(zhí)行序列中之一的相應(yīng)的分配區(qū)間之內(nèi),來填充所述執(zhí)行序列。
55.根據(jù)權(quán)利要求52所述的裝置,其中所述CPU被布置為識(shí)別輸出組,每個(gè)輸出組包括兩個(gè)或更多個(gè)PE——其驅(qū)動(dòng)了相應(yīng)的受驅(qū)PE ;識(shí)別輸入組,每個(gè)輸入組包括至少兩個(gè)由一個(gè)相應(yīng)的使驅(qū)PE所驅(qū)動(dòng)的PE ;基于包含了每個(gè)PE的輸出組和輸入組的數(shù)量,為該P(yáng)E指派一個(gè)相應(yīng)的組評(píng)分;并且基于所述PE的組評(píng)分,定義所述順序。
56.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中所述CPU被布置為對(duì)于一個(gè)給定PE 以及所述執(zhí)行序列中的一組可能的位置,計(jì)算由將所述給定PE放置在所述可能的位置而 導(dǎo)致的相應(yīng)的分配成本;以及將所述給定PE放置在所述可能的位置中的具有最低分配成 本的一個(gè)位置。
57.根據(jù)權(quán)利要求56所述的裝置,其中所述CPU被布置為,根據(jù)選自下列因素組成的一 組因素中的至少一個(gè)因素,估計(jì)給定執(zhí)行序列中的給定的可能的位置的分配成本由將所述給定PE放置在所述給定的可能的位置而導(dǎo)致的所述調(diào)用數(shù)據(jù)結(jié)構(gòu)的執(zhí)行時(shí) 間的增加;在所述給定執(zhí)行序列中和所述給定PE共享一個(gè)公共使驅(qū)PE的PE的第一數(shù)量;在所述給定執(zhí)行序列中和所述給定PE共享一個(gè)公共受驅(qū)PE的PE的第二數(shù)量;在所述給定執(zhí)行序列中和所述給定PE共享一個(gè)公共執(zhí)行依賴性的PE的第三數(shù)量;以及距為所述給定PE計(jì)算的最佳位置的距離。
58.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中所述CPU被布置為,將所述PE以線程 束布置在每個(gè)執(zhí)行序列中,每個(gè)線程束包括給定類型的一個(gè)或多個(gè)PE。
59.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中所述CPU被布置為,對(duì)于給定執(zhí)行序 列,定義將變量從所述多處理器設(shè)備的設(shè)備存儲(chǔ)器取到高速緩存的確定性高速緩存模式, 并且在執(zhí)行所述給定執(zhí)行序列期間將所述變量中的至少一些從所述高速緩存丟棄,并且使 得所述多處理器設(shè)備在執(zhí)行所述給定執(zhí)行序列時(shí)實(shí)現(xiàn)所述確定性高速緩存模式。
60.根據(jù)權(quán)利要求59所述的裝置,其中所述給定執(zhí)行序列中的PE被分組成PE組 (PEG),且其中所述CPU被布置為以如下方式定義所述高速緩存模式對(duì)于在給定PEG的執(zhí)行期間存在于所述高速緩存中的每個(gè)變量,識(shí)別在所述給定執(zhí)行 序列中接下來將使用該變量的相應(yīng)的下一個(gè)PEG ;一旦在執(zhí)行所述給定PEG之后需要從所述高速緩存丟棄一個(gè)或多個(gè)變量時(shí),選擇該一 個(gè)或多個(gè)變量中的一個(gè)變量,所選擇的變量的相應(yīng)的下一個(gè)PEG具有沿著所述給定執(zhí)行序 列的距所述給定PEG最大的距離;并且在所述高速緩存模式中定義,在執(zhí)行所述給定PEG之后丟棄所選擇的變量。
61.根據(jù)權(quán)利要求59所述的裝置,其中所述CPU被布置為在單個(gè)取命令中合并對(duì)兩個(gè) 或更多個(gè)變量的取操作。
62.根據(jù)權(quán)利要求61所述的裝置,其中所述CPU被布置為為每個(gè)變量沿著所述給定 執(zhí)行序列定義一個(gè)取區(qū)間,所述取區(qū)間自當(dāng)該變量變得有效之時(shí)開始,至當(dāng)該變量首次被 使用時(shí)結(jié)束;以及定義所述單個(gè)取命令以包括至少兩個(gè)在相應(yīng)的取區(qū)間有重疊的變量,并 且將所述單個(gè)取命令放置為在所述重疊的期間發(fā)生。
63.根據(jù)權(quán)利要求62所述的裝置,其中所述CPU被布置為,通過識(shí)別在所述單個(gè)取命令 的位置和所述給定變量首次被使用的時(shí)間之間具有最小距離的給定變量,來選擇待要被合 并到所述單個(gè)取命令中的給定變量。
64.根據(jù)權(quán)利要求59所述的裝置,其中所述CPU被布置為,在單個(gè)存儲(chǔ)命令中合并對(duì)兩 個(gè)或更多個(gè)變量的存儲(chǔ)操作。
65.根據(jù)權(quán)利要求59所述的裝置,其中所述給定執(zhí)行序列的確定性高速緩存模式,以 給定順序從所述設(shè)備存儲(chǔ)器取變量,且其中所述CPU被布置為,根據(jù)所述給定順序以連續(xù) 的地址將所述變量預(yù)排列在所述設(shè)備存儲(chǔ)器中。
66.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中所述CPU被布置為,通過訪問所述多 處理器設(shè)備的設(shè)備存儲(chǔ)器,使得所述第一執(zhí)行序列提供一個(gè)或多個(gè)變量作為輸入給第二執(zhí) 行序列。
67.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中所述CPU被布置為,產(chǎn)生多個(gè)調(diào)用數(shù) 據(jù)結(jié)構(gòu),所述多個(gè)調(diào)用數(shù)據(jù)結(jié)構(gòu)中的每個(gè)調(diào)用數(shù)據(jù)結(jié)構(gòu)包括一個(gè)或多個(gè)執(zhí)行序列,以及使 得所述執(zhí)行序列中的至少一些執(zhí)行序列通過訪問所述多處理器設(shè)備的設(shè)備存儲(chǔ)器而在不 同的調(diào)用數(shù)據(jù)結(jié)構(gòu)之間交換變量。
68.根據(jù)權(quán)利要求67所述的裝置,其中在所述不同的調(diào)用數(shù)據(jù)結(jié)構(gòu)之間交換的每個(gè) 變量都由一個(gè)或多個(gè)源執(zhí)行序列所產(chǎn)生,并被一個(gè)或多個(gè)目標(biāo)序列所使用,且其中所述CPU 被布置為,根據(jù)所述源執(zhí)行序列和所述目標(biāo)執(zhí)行序列將所述變量聚合成組,并且將每個(gè)組 以連續(xù)的地址存儲(chǔ)在所述設(shè)備存儲(chǔ)器中。
69.根據(jù)權(quán)利要求68所述的裝置,其中所述CPU被布置為,使得所述執(zhí)行序列以讀命令 從所述設(shè)備存儲(chǔ)器讀所述變量,每個(gè)讀命令從所述組之一讀取預(yù)定大小的數(shù)據(jù)。
70.根據(jù)權(quán)利要求69所述的裝置,其中當(dāng)兩個(gè)或更多個(gè)組中的變量聯(lián)合起來未超過所 述預(yù)定大小時(shí),所述CPU被布置為,定義一個(gè)從所述兩個(gè)或更多個(gè)組讀取所述變量的合并 的讀命令。
71.根據(jù)權(quán)利要求67所述的裝置,其中,當(dāng)在一個(gè)給定調(diào)用數(shù)據(jù)結(jié)構(gòu)中的多個(gè)執(zhí)行序 列的一個(gè)集合中使用一組變量時(shí),所述CPU被布置為,僅僅使得所述多個(gè)執(zhí)行序列中的一 個(gè)部分子集從所述設(shè)備存儲(chǔ)器讀取所述一組變量,并且將該變量傳遞給該集合中的其他的 執(zhí)行序列。
72.根據(jù)權(quán)利要求71所述的裝置,其中所述CPU被布置為,識(shí)別該集合中不能從該調(diào)用 數(shù)據(jù)結(jié)構(gòu)的其他執(zhí)行序列接收所述變量的至少一個(gè)執(zhí)行序列,并且將所識(shí)別的序列添加到 所述部分子集。
73.根據(jù)權(quán)利要求71所述的裝置,其中所述CPU被布置為,識(shí)別所述給定調(diào)用數(shù)據(jù)結(jié)構(gòu) 中的同步元——其將所述部分子集連接到所述集合中的其他執(zhí)行序列,并且分配與所述同 步元相關(guān)聯(lián)的通信資源以便傳遞所述變量。
74.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中所述CPU被布置為,與所述多處理器 設(shè)備一起,運(yùn)行一個(gè)事件驅(qū)動(dòng)仿真——其仿真了所述計(jì)算任務(wù)。
75.根據(jù)權(quán)利要求39-45中任一所述的裝置,其中所述CPU被布置為,根據(jù)選自下列因 素組成的一組因素中的至少一個(gè)因素,將所述PE放置在所述執(zhí)行序列中始自所述PE的相應(yīng)的最長的執(zhí)行依賴性鏈的長度;執(zhí)行序列的相應(yīng)的占用程度;以及由對(duì)所述PE的放置而引起的同步元。
76.一種計(jì)算裝置,包括一個(gè)界面,被連接以接受計(jì)算任務(wù)的定義,該計(jì)算任務(wù)包括具有執(zhí)行依賴性的多個(gè)原 子處理元(PE),每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的 第一 PE;以及一個(gè)中央處理單元(CPU),所述中央處理單元被布置為編譯所述計(jì)算任務(wù)以用于在 多處理器設(shè)備上并發(fā)地執(zhí)行,所述多處理器設(shè)備包括并行運(yùn)行的多個(gè)處理器,并通過在一 個(gè)包括多個(gè)執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述執(zhí)行依賴性沖突地布置所述PE來調(diào)度該 PE,以用于由所述多個(gè)處理器根據(jù)微處理器設(shè)備的內(nèi)建調(diào)度策略執(zhí)行;以及調(diào)用所述多處 理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而并行地且無關(guān)于所述 多處理器設(shè)備的調(diào)度策略地執(zhí)行所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果。
77.一種計(jì)算裝置,包括一個(gè)多處理器設(shè)備,包括能夠同時(shí)執(zhí)行第一數(shù)量的原子處理元(PE)的多個(gè)處理器;以及一個(gè)中央處理單元(CPU),所述中央處理單元被布置為接受計(jì)算任務(wù)的定義,該計(jì)算 任務(wù)包括具有執(zhí)行依賴性的多個(gè)原子處理元(PE),每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng) 的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的第一 PE ;通過在包括第二數(shù)量的執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié) 構(gòu)中不與所述執(zhí)行依賴性沖突地布置所述PE來編譯該計(jì)算任務(wù)以用于在所述多處理器設(shè) 備上并發(fā)地執(zhí)行,所述第二數(shù)量大于1且不超過所述第一數(shù)量;以及調(diào)用所述多處理器設(shè) 備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而并行地執(zhí)行所述執(zhí)行序列, 以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果。
78.一種計(jì)算裝置,包括一個(gè)多處理器設(shè)備,包括并行運(yùn)行的多個(gè)處理器,且根據(jù)微處理器設(shè)備的內(nèi)建調(diào)度策 略調(diào)度原子處理元(PE)以用于由所述多個(gè)處理器執(zhí)行;以及一個(gè)中央處理單元(CPU),所述中央處理單元被布置為接受計(jì)算任務(wù)的定義,該計(jì)算 任務(wù)包括具有執(zhí)行依賴性的多個(gè)PE,每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二 PE之 前要執(zhí)行一個(gè)相應(yīng)的第一 PE ;通過在包括多個(gè)執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述執(zhí)行 依賴性沖突地布置所述PE來編譯該計(jì)算任務(wù),以用于在所述多處理器設(shè)備上并發(fā)地執(zhí)行; 以及調(diào)用所述多處理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)并行 地且無關(guān)于所述多處理器設(shè)備的調(diào)度策略地執(zhí)行所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果
79.一種計(jì)算機(jī)軟件產(chǎn)品,所述產(chǎn)品包括計(jì)算機(jī)可讀介質(zhì),在所述計(jì)算機(jī)可讀介質(zhì)中存 儲(chǔ)了程序指令,所述指令當(dāng)被計(jì)算機(jī)讀取時(shí),使得所述計(jì)算機(jī)接受計(jì)算任務(wù)的定義,該計(jì) 算任務(wù)包括具有執(zhí)行依賴性的多個(gè)原子處理元(PE),每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相 應(yīng)的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的第一 PE ;編譯該計(jì)算任務(wù)以用于在多處理器設(shè)備上并 發(fā)地執(zhí)行,所述多處理器設(shè)備包括多個(gè)處理器,所述多個(gè)處理器通過在一個(gè)包括第二數(shù)量 的執(zhí)行序列的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述執(zhí)行依賴性沖突地布置所述PE而能夠同時(shí)地執(zhí)行 第一數(shù)量的PE,所述第二數(shù)量大于1且不超過所述第一數(shù)量;以及調(diào)用所述多處理器設(shè)備 以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)并行地執(zhí)行所述執(zhí)行序列,以產(chǎn) 生所述計(jì)算任務(wù)的結(jié)果。
80.一種計(jì)算機(jī)軟件產(chǎn)品,所述產(chǎn)品包括計(jì)算機(jī)可讀介質(zhì),在所述計(jì)算機(jī)可讀介質(zhì)中存儲(chǔ)了程序指令,所述指令當(dāng)被計(jì)算機(jī)讀取時(shí),使得所述計(jì)算機(jī)接受計(jì)算任務(wù)的定義,該計(jì) 算任務(wù)包括具有執(zhí)行依賴性的多個(gè)原子處理元(PE),每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相 應(yīng)的第二 PE之前要執(zhí)行一個(gè)相應(yīng)的第一 PE ;編譯該計(jì)算任務(wù)以用于在多處理器設(shè)備上并 發(fā)地執(zhí)行,所述多處理器設(shè)備包括并行運(yùn)行的多個(gè)處理器,通過在一個(gè)包括多個(gè)執(zhí)行序列 的調(diào)用數(shù)據(jù)結(jié)構(gòu)中不與所述執(zhí)行依賴性沖突地布置所述PE來調(diào)度該P(yáng)E,以用于由所述多 個(gè)處理器根據(jù)微處理器設(shè)備的內(nèi)建調(diào)度策略執(zhí)行;以及調(diào)用該多處理器設(shè)備以運(yùn)行軟件代 碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而并行地且無關(guān)于所述多處理器設(shè)備的調(diào)度策 略地執(zhí)行所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果。
全文摘要
一種計(jì)算方法,包括接受計(jì)算任務(wù)(68)的定義,該計(jì)算任務(wù)包括具有執(zhí)行依賴性(80)的多個(gè)原子處理元(PE-76)。每個(gè)執(zhí)行依賴性規(guī)定了在執(zhí)行一個(gè)相應(yīng)的第二PE之前要執(zhí)行一個(gè)相應(yīng)的第一PE。編譯該計(jì)算任務(wù)以用于在多處理器設(shè)備(32)上并發(fā)地執(zhí)行,所述多處理器設(shè)備包括多個(gè)處理器(44),所述多個(gè)處理器(44)通過在一個(gè)包括第二數(shù)量的執(zhí)行序列(98)的調(diào)用數(shù)據(jù)結(jié)構(gòu)(90)中不與所述執(zhí)行依賴性沖突地布置所述PE而能夠同時(shí)地執(zhí)行第一數(shù)量的PE,所述第二數(shù)量大于1且不超過所述第一數(shù)量。調(diào)用所述多處理器設(shè)備以運(yùn)行軟件代碼,所述軟件代碼響應(yīng)于所述調(diào)用數(shù)據(jù)結(jié)構(gòu)而并行地執(zhí)行所述執(zhí)行序列,以產(chǎn)生所述計(jì)算任務(wù)的結(jié)果。
文檔編號(hào)G06F15/16GK102089752SQ200980126852
公開日2011年6月8日 申請(qǐng)日期2009年6月30日 優(yōu)先權(quán)日2008年7月10日
發(fā)明者S·密茨拉希, T·本-戴維, U·泰 申請(qǐng)人:洛克泰克科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1