專利名稱::一種基于多重并行的數(shù)據(jù)通用處理方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及并行計算
技術(shù)領(lǐng)域:
,尤其涉及一種基于異構(gòu)多核架構(gòu)的通用數(shù)據(jù)并行處理方法。
背景技術(shù):
:隨著當今科學技術(shù)的迅猛發(fā)展,高性能計算已經(jīng)成為科學技術(shù)發(fā)展中具有戰(zhàn)略重要性的研究手段,它與傳統(tǒng)的理論研究和實驗室實驗一起構(gòu)成了現(xiàn)代科學技術(shù)和工程設(shè)計中互相補充、互相關(guān)聯(lián)的研究方法,被國際上稱為21世紀科學研究的三大“支柱”。高性能計算機的應(yīng)用領(lǐng)域主要集中在科學研發(fā)、電信、金融、政府等,所以高性能計算機對于國家的貢獻當然是功不可沒的,為了加快當今信息化建設(shè)的步伐,越來越多的領(lǐng)域應(yīng)用到高性能計算技術(shù)。高性能計算極大地加快了計算的速度,縮短了研制和生產(chǎn)周期。它的應(yīng)用,大大拓寬了研究能力,促進和推動了現(xiàn)代科學與工程技術(shù)的發(fā)展。加快發(fā)展高性能計算對于提升我國科技自主創(chuàng)新能力、增強國家競爭力、保障國家安全、促進國民經(jīng)濟建設(shè)、建設(shè)創(chuàng)新型國家具有十分重要的戰(zhàn)略意義。在高性能計算領(lǐng)域的發(fā)展過程中,以RISC架構(gòu)為主導的小型機曾經(jīng)稱霸高性能計算市場,后來由于X86架構(gòu)的發(fā)展,在價格上占有絕對優(yōu)勢的X86架構(gòu)最終以集群的形式取代了小型機。雖然通過創(chuàng)建分布式系統(tǒng)可以解決部分大型計算的問題,但是分布式系統(tǒng)有通信開銷大,故障率高;數(shù)據(jù)的存取結(jié)構(gòu)復(fù)雜,開銷大;數(shù)據(jù)的安全性和保密性較難控制等弱點。隨著計算機處理器,特別是GPU(GraphicalProcessingUnit)計算能力的飛速提高和低廉的價格,高性能計算逐步進入桌面(低端)領(lǐng)域,使得每一名研究人員、科學家以及工程師都有可能擁有自己的超級計算機,能夠更快的解決問題,加快了科學發(fā)展的節(jié)奏?,F(xiàn)在的GPU包含了上百個處理單元,對單精度浮點運算可以獲得1TFL0PS的性能,對雙精度浮點運算也可以獲得超過80GFL0PS的性能,可以擁有4GB的顯存,超過100GB/秒的帶寬。盡管GPU原本是一種專為圖形計算而設(shè)計的處理器,然而特別適合做大規(guī)模并行計算的GPU以強大的計算性能、較低的能耗、低廉的價格以及占地面積較小等特點迅速出現(xiàn)在許多非圖形應(yīng)用的高性能計算領(lǐng)域。如今,許多重要的科學工程都正在嘗試將GPU計算能力添加到他們的代碼里。軟件工程師們正熱烈期待著他們的工作能夠通過GPU獲得卓越的性能。然而,目前的大多數(shù)應(yīng)用程序直接移植到GPU上來并不會立即得到性能的提高,甚至還會出現(xiàn)性能的下降。這主要是因為這些程序和結(jié)構(gòu)并不是針對GPU架構(gòu)的特點而設(shè)計的,無法挖掘出GPU全部的計算能力。如何利用并行應(yīng)用程序進行高效的數(shù)據(jù)處理通常是一件復(fù)雜而耗時的工作。
發(fā)明內(nèi)容本發(fā)明提供了一種融合了數(shù)據(jù)并行、任務(wù)并行、管道并行的多重并行數(shù)據(jù)處理方法,可以使應(yīng)用程序進行數(shù)據(jù)處理時能夠最大限度地有效使用硬件的計算資源和存儲資源。一種基于多重并行的數(shù)據(jù)通用處理方法,執(zhí)行在具有GPU和CPU處理器的計算機中(1)將進行數(shù)據(jù)處理的應(yīng)用程序劃分成若干執(zhí)行行為;每個執(zhí)行行為可以完成至少一個對數(shù)據(jù)的基本操作,例如數(shù)據(jù)的訪問、數(shù)據(jù)的存儲等,或者計算指令;(2)根據(jù)執(zhí)行行為對數(shù)據(jù)的基本操作類型以及計算指令類型,將所有的執(zhí)行行為劃分成若干個任務(wù),即將相似的執(zhí)行行為劃入同一個計算任務(wù)中;相似的執(zhí)行行為,是指具有相同的計算操作或相似的存儲操作,相似的存儲操作是指對數(shù)據(jù)的訪問保持在存儲區(qū)域的局部范圍內(nèi)。此步驟的劃分可以滿足硬件的SIMD(SingleInstruction,MultipleData)執(zhí)行特性和存儲的局部訪問特性。每個任務(wù)完成指定的計算任務(wù),劃分時盡可能的短小而功能單一,任務(wù)間根據(jù)具體的情況可以并行執(zhí)行,也可串行執(zhí)行。(3)將應(yīng)用程序需要處理的數(shù)據(jù)分為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù),在可執(zhí)行所述的應(yīng)用程序的計算機顯存中劃分存儲空間(存儲池),在該存儲空間中分別為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)劃分存儲區(qū)域,即存儲空間中一部分用于存儲靜態(tài)數(shù)據(jù),其余的空間用于存儲動態(tài)數(shù)據(jù)。其中靜態(tài)數(shù)據(jù)是指在應(yīng)用程序執(zhí)行過程中不會改變的數(shù)據(jù),而動態(tài)數(shù)據(jù)是指在應(yīng)用程序執(zhí)行過程中產(chǎn)生的新數(shù)據(jù)。所有這些信息預(yù)先記錄在一個配置文件里;(4)根據(jù)對數(shù)據(jù)的處理方式,將步驟(2)中任務(wù)分為計算型任務(wù)和邏輯判斷型任務(wù),在GPU上運行計算型任務(wù),在CPU上運行邏輯判斷型任務(wù),本發(fā)明采用基于管道并行、數(shù)據(jù)并行、任務(wù)并行的多重并行執(zhí)行方式,完成應(yīng)用程序的執(zhí)行。管道是一種生產(chǎn)者一消費者執(zhí)行模式,適合絕大多數(shù)應(yīng)用程序的計算流程,而且管道通過數(shù)據(jù)重組可以有效地平衡工作負載,避免某一單元可能出現(xiàn)過多輸出而使整個計算流程負載不均;數(shù)據(jù)并行執(zhí)行模型正如當前主流的編程模型一樣,如CUDA(ComputeUnifiedDeviceArchitecture),對大規(guī)模的整齊同構(gòu)的數(shù)據(jù)集可以充分利用硬件SIMD特性,隱藏訪存延遲;任務(wù)執(zhí)行模型是一種可擴展的執(zhí)行模式,可以明確地表示出程序執(zhí)行過程中各單元的相互依賴關(guān)系以及動態(tài)的執(zhí)行行為。為了充分發(fā)揮異構(gòu)多核架構(gòu)的特點,合理地使用硬件資源,本發(fā)明采用管道并行數(shù)據(jù)處理模式,將涉及大量計算的應(yīng)用程序執(zhí)行管道運行在GPU上,而涉及大量邏輯判斷的數(shù)據(jù)任務(wù)調(diào)度管道運行在CPU上,兩種管道異步并行執(zhí)行,數(shù)據(jù)任務(wù)調(diào)度管道要比應(yīng)用程序執(zhí)行管道提前運行。通過這種管道并行執(zhí)行模式,既可以保證計算的獨立性和并行性,也可以避免使用原子、鎖等昂貴的同步操作。在應(yīng)用程序執(zhí)行管道中,同一計算任務(wù)內(nèi)部的執(zhí)行行為以數(shù)據(jù)并行方式執(zhí)行,而不同計算任務(wù)間的執(zhí)行行為以任務(wù)并行的方式異步執(zhí)行。由于一些程序可能產(chǎn)生不可預(yù)測的數(shù)據(jù)量而造成整個執(zhí)行管道負載不均衡的情況。數(shù)據(jù)并行的執(zhí)行模式很可能使一個任務(wù)產(chǎn)生大量新的數(shù)據(jù),很難同時對這些數(shù)據(jù)進行存儲并使用它們,大量新的數(shù)據(jù)也可能迅速消耗掉有限的顯存,而且由于這些數(shù)據(jù)的產(chǎn)生是隨機的不可預(yù)測的,也增加了對數(shù)據(jù)管理的難度。因此,執(zhí)行步驟(4)之前,判斷所要執(zhí)行的任務(wù)將產(chǎn)生的新數(shù)據(jù)的大小是否超出了當前存儲池的剩余空間;一旦經(jīng)判斷超出了存儲池的剩余空間,我們將對該任務(wù)需要處理的數(shù)據(jù)進行分組,使數(shù)據(jù)分批進行處理。這種方法將會大大降低一些涉及到海量數(shù)據(jù)的算法給系統(tǒng)存儲和帶寬造成的負擔,使顯存中的數(shù)據(jù)都是正在計算的線程所需要的數(shù)據(jù),從而進一步加強了線程的并行計算效率,提高了對硬件的有效使用能力。由于在任務(wù)運行時,有可能出現(xiàn)不可預(yù)測的新任務(wù),因此本發(fā)明采用基于優(yōu)先級的動態(tài)調(diào)度,同時根據(jù)所調(diào)度的任務(wù)管理相應(yīng)的數(shù)據(jù)轉(zhuǎn)移。對每一個任務(wù)(包括步驟(2)中的任務(wù)以及在任務(wù)運行時出現(xiàn)的新任務(wù))都設(shè)置一個優(yōu)先級狀態(tài),當新任務(wù)出現(xiàn)時,根據(jù)所有任務(wù)的優(yōu)先級狀態(tài)選擇優(yōu)先級高的任務(wù)依次運行。衡量任務(wù)的優(yōu)先級主要基于其所需數(shù)據(jù)在存儲層次的位置、所需處理器的類型以及所需數(shù)據(jù)集的大小。以數(shù)據(jù)驅(qū)動的方式進行任務(wù)調(diào)度,根據(jù)已空閑處理器的類型和當前存儲池中靜態(tài)數(shù)據(jù)所對應(yīng)的任務(wù)進行調(diào)度。具體來說,按優(yōu)先級由高到低的順序結(jié)合以下幾條原則(1)任務(wù)的執(zhí)行不需要靜態(tài)數(shù)據(jù);(2)所需數(shù)據(jù)在cache里;(3)優(yōu)先處理具備充分相似性數(shù)據(jù)的任務(wù),或者產(chǎn)生的數(shù)據(jù)可以協(xié)助其它任務(wù)提高執(zhí)行的優(yōu)先級,或者多個任務(wù)的執(zhí)行具有相似性。(4)所需數(shù)據(jù)在GPU顯存;(5)所需數(shù)據(jù)在CPU內(nèi)存;(6)所需數(shù)據(jù)正在由硬盤傳輸?shù)絻?nèi)存;(7)所需數(shù)據(jù)集太小而無法充分利用硬件計算能力。本發(fā)明方法的實施基于更成熟的異構(gòu)多核架構(gòu),比如NVIDIA公司最新推出的Fermi架構(gòu),或者Inter公司即將推出的Larrabee架構(gòu)等,這些架構(gòu)一般均具有超過1TFLOPS的浮點運算能力,超過20的多核處理器,上百的硬件線程以及復(fù)雜的存儲層次結(jié)構(gòu)。本發(fā)明數(shù)據(jù)處理方法針對具有動態(tài)特征執(zhí)行行為和不規(guī)則數(shù)據(jù)結(jié)構(gòu)的復(fù)雜算法做了專門的優(yōu)化,能夠在數(shù)據(jù)處理時根據(jù)存儲局部性原則和SIMD操作機制對數(shù)據(jù)進行動態(tài)管理使應(yīng)用程序進行數(shù)據(jù)處理時能夠最大限度地有效使用硬件的計算資源和存儲資源。利用本發(fā)明方法可以迅速而便捷的開發(fā)出高性能的并行執(zhí)行的應(yīng)用程序,這無疑將會大大加快程序開發(fā)的進度和效率,節(jié)省研發(fā)費用。圖1為CUDA及本發(fā)明模型隨著場景復(fù)雜度遞增所表現(xiàn)出的性能分析。具體實施例方式選擇一臺配有一顆IntelXeon3.7GHz的4核CPU,一顆NvidiaGTX285(1G顯存)的PC來驗證本發(fā)明的可行性。基于PTX指令集實現(xiàn)了一套基于上述方法實現(xiàn)的編程接口,并按照本發(fā)明所提出的方法去重新設(shè)計和編寫圖形學中具有大量動態(tài)不規(guī)則性行為的光線跟蹤算法,并與使用Nvidia公司的CUDA編程模型編寫的代碼所得到的效果作對比,并做了如下分析。將應(yīng)用程序劃分成若干計算任務(wù),為了滿足硬件的SIMD/SIMT操作和局部訪存特性,我們使具有相似執(zhí)行行為或者相似訪存行為的計算封裝在一個計算任務(wù)內(nèi)以進行有效的處理,每個計算任務(wù)盡可能的短小而功能單一,計算任務(wù)間根據(jù)具體的情況可以并行執(zhí)行,也可串行執(zhí)行。計算任務(wù)內(nèi)部以數(shù)據(jù)并行方式計算,而計算任務(wù)間以任務(wù)并行方式異步計算。每一個計算任務(wù)都設(shè)有一個狀態(tài),用以處理可能存在相互依賴關(guān)系的計算任務(wù)間的執(zhí)行。根據(jù)光線跟蹤算法中計算任務(wù)的特點在應(yīng)用程序執(zhí)行管道中創(chuàng)建了6個計算任務(wù),分別進行光線產(chǎn)生、遍歷加速結(jié)構(gòu)、面片相交、著色、陰影等計算任務(wù),同時在數(shù)據(jù)任務(wù)調(diào)度管道中進行光線排序和光線包的創(chuàng)建。這些任務(wù)均具有較好的并行執(zhí)行能力,即較寬的SIMD執(zhí)行寬度,但是光線的遞歸特性使得SIMD有效使用率很可能隨著遞歸的進行而劇烈下降。另外,我們在實現(xiàn)時使用延遲計算技術(shù)來進一步提高SIMD利用率,即如果著色任務(wù)經(jīng)計算后無法產(chǎn)生足夠的光線而形成一個完整的光線包,相交計算將被延遲直到完整的光線包已經(jīng)形成;同樣地,如果相交計算任務(wù)無法產(chǎn)生足夠多的光線進行著色計算,著色計算也將被延遲。將數(shù)據(jù)分為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù),其中靜態(tài)數(shù)據(jù)是指在應(yīng)用程序執(zhí)行過程中不會改變的數(shù)據(jù),而動態(tài)數(shù)據(jù)是指在應(yīng)用程序執(zhí)行過程中產(chǎn)生的不斷變化的新數(shù)據(jù)。在初始化時設(shè)置一個存儲池,根據(jù)具體的應(yīng)用程序為靜態(tài)數(shù)據(jù)在顯存中分配一定的空間,其余的空間為動態(tài)數(shù)據(jù)所占有。所有這些信息記錄在一個配置文件里?!?yīng)用程序所需的靜態(tài)數(shù)據(jù)大小可能超出了顯存的大小,這樣就可能在程序執(zhí)行過程中動態(tài)的調(diào)度靜態(tài)數(shù)據(jù),而每次導入的數(shù)據(jù)大小不一定跟上一次完全一致,這樣就可能在靜態(tài)數(shù)據(jù)區(qū)域和動態(tài)數(shù)據(jù)區(qū)間產(chǎn)生碎片。為了避免碎片的產(chǎn)生而有效的使用顯存,我們可以在顯存中采用雙向分配的方法,在存儲池的低地址端存放靜態(tài)數(shù)據(jù),而在存儲池的高地址端存放動態(tài)數(shù)據(jù)。如上所述,為了充分發(fā)揮異構(gòu)多核架構(gòu)的特點,合理地使用硬件資源,本發(fā)明設(shè)計了應(yīng)用程序執(zhí)行管道與數(shù)據(jù)任務(wù)調(diào)度管道相結(jié)合的管道并行執(zhí)行模式,將涉及大量計算的應(yīng)用程序執(zhí)行管道運行在GPU上,而涉及大量邏輯判斷的數(shù)據(jù)任務(wù)調(diào)度管道運行在CPU上,兩種管道異步并行執(zhí)行,數(shù)據(jù)任務(wù)調(diào)度管道要比應(yīng)用程序執(zhí)行管道提前運行。通過這種管道并行執(zhí)行模式,我們既可以保證計算的獨立性和并行性,也可以避免使用原子、鎖等昂貴的同步操作。在實現(xiàn)時,本發(fā)明基于以下三點原則設(shè)計數(shù)據(jù)任務(wù)調(diào)度管道①應(yīng)盡可能地保持對靜態(tài)數(shù)據(jù)的訪問處在硬件存儲層次中速度最快的一層(即cache、sharedmemory等),同時盡量延遲對數(shù)據(jù)的訪問直到這種訪問不可避免。②優(yōu)先處理具備充分相似性數(shù)據(jù)的任務(wù),或者產(chǎn)生的數(shù)據(jù)可以協(xié)助其它任務(wù)提高執(zhí)行的優(yōu)先級,或者多個任務(wù)的執(zhí)行具有相似性。③以數(shù)據(jù)驅(qū)動的方式進行任務(wù)調(diào)度,根據(jù)已空閑處理器的類型和當前存儲池中靜態(tài)數(shù)據(jù)所對應(yīng)的任務(wù)進行調(diào)度。1)本發(fā)明設(shè)計了數(shù)據(jù)分析器來動態(tài)控制數(shù)據(jù)的使用,以解決一些程序可能產(chǎn)生不可預(yù)測的數(shù)據(jù)量而造成整個執(zhí)行管道負載不均衡的情況。數(shù)據(jù)并行的執(zhí)行模式很可能使一個計算任務(wù)產(chǎn)生大量新的數(shù)據(jù),很難同時對這些數(shù)據(jù)進行存儲并使用它們,大量新的數(shù)據(jù)也可能迅速消耗掉有限的顯存,而且由于這些數(shù)據(jù)的產(chǎn)生是隨機的不可預(yù)測的,也增加了對數(shù)據(jù)管理的難度。因此,本發(fā)明設(shè)置一個數(shù)據(jù)分析器,計算任務(wù)每一次執(zhí)行之前,都要判斷所將產(chǎn)生的新數(shù)據(jù)的大小是否超出了當前的剩余顯存(具體的評估方法根據(jù)相應(yīng)的應(yīng)用而定);一旦經(jīng)判斷超出了剩余的顯存容量,我們將對輸入數(shù)據(jù)進行分組,使數(shù)據(jù)分批進行處理。我們的這種方法將會大大降低一些涉及到海量數(shù)據(jù)的算法給系統(tǒng)存儲和帶寬造成的負擔,使顯存中的數(shù)據(jù)都是正在計算的線程所需要的數(shù)據(jù),從而進一步加強了線程的并行計算效率,提高了對硬件的有效使用能力。為每個計算任務(wù)都設(shè)立了一個數(shù)據(jù)緩存區(qū),用于管理計算任務(wù)每次產(chǎn)生或者消耗的數(shù)據(jù)。由于在一些復(fù)雜算法中數(shù)據(jù)的產(chǎn)生和消耗是動態(tài)不規(guī)則的,為了滿足局部相似性原則和SIMD操作特性,使計算盡量集中在局部數(shù)據(jù)集中進行,有必要對這些數(shù)據(jù)重新組織,保證計算可以繼續(xù)在硬件上有效地進行。當前硬件強大的帶寬能力以及CPU強大的邏輯處理能力使得數(shù)據(jù)動態(tài)重組操作是十分可行的。2)設(shè)計了任務(wù)調(diào)度器來對不可預(yù)測的任務(wù)執(zhí)行序列進行基于優(yōu)先級的動態(tài)調(diào)度,同時根據(jù)所調(diào)度的任務(wù)管理相應(yīng)的數(shù)據(jù)轉(zhuǎn)移。我們采用按需調(diào)度的方法,當某一個處理器可用時,①設(shè)置一個信號量,鎖住調(diào)度器;②掃描整個待執(zhí)行任務(wù)序列,選擇優(yōu)先級最高的任務(wù),并作標記;③對調(diào)度器解鎖。優(yōu)先級的確定是我們這個調(diào)度器的核心部分。針對混合處理資源的特點,我們衡量任務(wù)的優(yōu)先級主要基于其所需數(shù)據(jù)在存儲層次的位置、所需處理器的類型以及所需數(shù)據(jù)集的大小。具體來說,按優(yōu)先級由高到低的順序結(jié)合以下幾條原則(1)任務(wù)的執(zhí)行不需要靜態(tài)數(shù)據(jù);(2)所需數(shù)據(jù)在cache里;(3)優(yōu)先處理具備充分相似性數(shù)據(jù)的任務(wù),或者產(chǎn)生的數(shù)據(jù)可以協(xié)助其它任務(wù)提高執(zhí)行的優(yōu)先級,或者多個任務(wù)的執(zhí)行具有相似性。(4)所需數(shù)據(jù)在GPU顯存;(5)所需數(shù)據(jù)在CPU內(nèi)存;(6)所需數(shù)據(jù)正在由硬盤傳輸?shù)絻?nèi)存;(7)所需數(shù)據(jù)集太小而無法充分利用硬件計算能力。選擇具有不同幾何復(fù)雜度的測試場景,Burmy,F(xiàn)airy,BARTKitchen作為測試模型文件,F(xiàn)airy為動態(tài)場景并帶有兩次反射計算,繪制分辨率為1024*1024。我們分別使用了本發(fā)明方法和CUDA編程模型對這個場景進行測試,結(jié)果如表1所示,可見本發(fā)明方法相比CUDA來說,取得了更好的性能。管道并行機制通過合理地使用硬件計算資源和存儲資源,根據(jù)處理核的平衡負載進行了基于優(yōu)先級的任務(wù)調(diào)度。表1<table>tableseeoriginaldocumentpage7</column></row><table>表1分別使用CUDA及本模型對場景Bunny,F(xiàn)airy,BARTKitchen在1024*1024分辨率下每秒的繪制幀數(shù)。為了驗證本發(fā)明方法對硬件的并行使用能力,測試了標量處理器的利用率,其直接反映了我們對數(shù)據(jù)和任務(wù)的調(diào)度和組織方法能否最大限度地開發(fā)算法在硬件上的并行執(zhí)行能力。注意,我們沒有使用ALU的使用情況作為我們的測試標準,因為有些時候即便線程槽已被占用,但ALU也可能因為訪存延遲或者SIMD的低利用率而未被完全使用。如表2所示,相比CUDA編程模型,本發(fā)明方法能夠更加有效地使用GPU的計算資源。表2<table>tableseeoriginaldocumentpage8</column></row><table>表2CUDA及本模型的GPU利用率比較。為了說明本發(fā)明方法能夠針對不同復(fù)雜度的場景動態(tài)地組織數(shù)據(jù)和調(diào)度任務(wù)而不會出現(xiàn)負載不均衡的情況,圖1可見CUDA編程模型當場景復(fù)雜度極度增加時會出現(xiàn)明顯的負載不均橫而使處理資源利用不佳的情況,最終導致性能的下降,而本發(fā)明方法則一直維持著較為穩(wěn)定的性能。權(quán)利要求一種基于多重并行的數(shù)據(jù)通用處理方法,其特征在于,在具有GPU和CPU處理器的計算機中(1)將進行數(shù)據(jù)處理的應(yīng)用程序劃分成若干執(zhí)行行為;(2)根據(jù)執(zhí)行行為對數(shù)據(jù)或者計算的相似性,將所有的執(zhí)行行為劃分成若干個任務(wù);(3)將應(yīng)用程序需要處理的數(shù)據(jù)分為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù),在可執(zhí)行所述的應(yīng)用程序的計算機顯存中劃分存儲空間,在該存儲空間中分別為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)劃分存儲區(qū)域;(4)分別在GPU和CPU上建立執(zhí)行管道,根據(jù)對數(shù)據(jù)的處理方式,將步驟(2)中任務(wù)分為計算型任務(wù)和邏輯判斷型任務(wù),在GPU上運行計算型任務(wù),在CPU上運行邏輯判斷型任務(wù),直至完成應(yīng)用程序的執(zhí)行,其中在GPU管道中,任務(wù)內(nèi)部以數(shù)據(jù)并行的方式運行,任務(wù)之間以任務(wù)并行的方式運行。2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)通用處理方法,其特征在于,每個執(zhí)行行為可以完成至少一個對數(shù)據(jù)的基本操作或者計算操作。3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)并行處理方法,其特征在于,所述的靜態(tài)數(shù)據(jù)是在應(yīng)用程序執(zhí)行過程中不會改變的數(shù)據(jù),所述的動態(tài)數(shù)據(jù)是在應(yīng)用程序執(zhí)行過程中產(chǎn)生的數(shù)據(jù)。4.根據(jù)權(quán)利要求1所述的數(shù)據(jù)并行處理方法,其特征在于,分別在GPU和CPU上建立執(zhí)行管道,根據(jù)對數(shù)據(jù)的處理方式,將任務(wù)分為計算型任務(wù)和邏輯判斷型任務(wù),在GPU上運行計算型任務(wù),在CPU上運行邏輯判斷型任務(wù),兩種管道并行執(zhí)行。5.根據(jù)權(quán)利要求1所述的數(shù)據(jù)并行處理方法,其特征在于,步驟(4)中,同一任務(wù)內(nèi)部的執(zhí)行行為以數(shù)據(jù)并行方式運行,而不同任務(wù)間執(zhí)行行為以并行方式異步運行。6.根據(jù)權(quán)利要求1所述的數(shù)據(jù)并行處理方法,其特征在于,對每一個任務(wù)都設(shè)置一個優(yōu)先級狀態(tài),當新任務(wù)出現(xiàn)時,根據(jù)所有任務(wù)的優(yōu)先級狀態(tài)選擇優(yōu)先級高的任務(wù)依次運行。全文摘要本發(fā)明公開了一種基于多重并行的數(shù)據(jù)通用處理方法,包括(1)將進行數(shù)據(jù)處理的應(yīng)用程序劃分成若干執(zhí)行行為;(2)根據(jù)執(zhí)行行為對數(shù)據(jù)的基本操作類型,將所有的執(zhí)行行為劃分成若干個任務(wù);(3)將應(yīng)用程序需要處理的數(shù)據(jù)分為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù);(4)在GPU上運行計算型任務(wù),在CPU上運行邏輯判斷型任務(wù),直至完成應(yīng)用程序的執(zhí)行。本發(fā)明數(shù)據(jù)處理方法針對具有動態(tài)特征執(zhí)行行為和不規(guī)則數(shù)據(jù)結(jié)構(gòu)的復(fù)雜算法做了專門的優(yōu)化,能夠在數(shù)據(jù)處理時根據(jù)存儲局部性原則和SIMD操作機制對數(shù)據(jù)進行動態(tài)管理使應(yīng)用程序進行數(shù)據(jù)處理時能夠最大限度地有效使用硬件的計算資源和存儲資源。文檔編號G06F9/38GK101833438SQ201010150549公開日2010年9月15日申請日期2010年4月19日優(yōu)先權(quán)日2010年4月19日發(fā)明者楊鑫,許端清,趙磊申請人:浙江大學