本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取方法及系統(tǒng)。
背景技術(shù):
隨著摩爾定律的不斷發(fā)展,圖像處理單元(graphicsprocessingunit,縮寫為gpu)中集成的晶體管數(shù)目已經(jīng)超過了中央處理單元(centralprocessingunit,縮寫為cpu)中集成的晶體管數(shù)目,gpu的通用計(jì)算能力正在不斷發(fā)展,其并行計(jì)算能力也正在不斷被挖掘和應(yīng)用。目前,包括多個(gè)內(nèi)核(例如,多個(gè)cpu、gpu)的異構(gòu)多核處理器被廣泛地應(yīng)用在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,由于這些系統(tǒng)中的gpu具有高效的并行計(jì)算能力,使得高速內(nèi)存帶寬和并行編程模型可被廣泛地應(yīng)用于計(jì)算密集型程序?,F(xiàn)在無論在個(gè)人電腦,還是超級(jí)計(jì)算機(jī)或者gpu集群中,gpu都作為主要的加速器件負(fù)責(zé)計(jì)算任務(wù),利用gpu加速計(jì)算任務(wù)成為主流,現(xiàn)在越來越多的高性能計(jì)算機(jī)采用由cpu與gpu組成的異構(gòu)系統(tǒng)作為其主要的計(jì)算單元。而隨著圖像獲取的技術(shù)不斷提高,使得圖像的分辨率和圖像的質(zhì)量不斷提高,導(dǎo)致現(xiàn)有的在cpu平臺(tái)上的處理圖像工具已經(jīng)無法滿足圖像處理的需求,容易造成圖像數(shù)據(jù)的堆積,無法實(shí)時(shí)處理圖像,影響圖像處理的效率,使整個(gè)圖像處理的時(shí)間增加。因此如何快速有效的處理圖像成為了一個(gè)急需解決的問題。
由于gpu專用于圖像處理,近年來不少專家學(xué)者成功地將gpu的并行計(jì)算能力應(yīng)用于圖像處理中,并取得不錯(cuò)的加速效果。例如,將gpu應(yīng)用于圖像匹配技術(shù)中,加速圖像匹配的速度,以減少匹配的時(shí)間,將gpu應(yīng)用于圖像邊緣檢測(cè)中,以在加快圖像邊緣檢測(cè)的速度的同時(shí)保留圖像的重要結(jié)構(gòu)屬性。然而,在這些特定的應(yīng)用中,利用gpu進(jìn)行計(jì)算的算法只是一些特定的算法,并沒有形成通用的移植模型,難以推廣到其它數(shù)字圖像處理算法,難以有效提高圖像處理的效率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取方法及系統(tǒng),旨在解決由于現(xiàn)有技術(shù)無法提供一種有效的圖像處理程序轉(zhuǎn)化方法,導(dǎo)致利用圖像處理算法的程序通用性差、運(yùn)行時(shí)并行性差的問題。
一方面,本發(fā)明提供了一種cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取方法,所述方法包括下述步驟:
接收用戶輸入的數(shù)字圖像處理算法;
對(duì)所述數(shù)字圖像處理算法進(jìn)行解析,以獲取所述數(shù)字圖像處理算法中用于圖像分塊處理的可并行運(yùn)行步驟;
根據(jù)預(yù)設(shè)的cpu和gpu上圖像分塊分配方式,將所述可并行運(yùn)行步驟映射為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段;
根據(jù)所述計(jì)算機(jī)程序代碼段獲取利用所述數(shù)字圖像處理算法的圖像協(xié)同處理程序。
另一方面,本發(fā)明提供了一種cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取系統(tǒng),所述系統(tǒng)包括:
算法接收單元,用于接收用戶輸入的數(shù)字圖像處理算法;
算法解析單元,用于對(duì)所述數(shù)字圖像處理算法進(jìn)行解析,以獲取所述數(shù)字圖像處理算法中用于圖像分塊處理的可并行運(yùn)行步驟;
步驟映射單元,用于根據(jù)預(yù)設(shè)的cpu和gpu上圖像分塊分配方式,將所述可并行運(yùn)行步驟映射為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段;以及
第一程序獲取單元,用于根據(jù)所述計(jì)算機(jī)程序代碼段獲取利用所述數(shù)字圖像處理算法的圖像協(xié)同處理程序。
本發(fā)明在接收用戶輸入的數(shù)字圖像處理算法后,對(duì)數(shù)字圖像處理算法進(jìn)行解析,以獲取數(shù)字圖像處理算法中用于圖像分塊處理的可并行運(yùn)行步驟,根據(jù)預(yù)設(shè)的cpu和gpu上圖像分塊分配方式,將可并行運(yùn)行步驟映射為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段,根據(jù)計(jì)算機(jī)程序代碼段獲取利用數(shù)字圖像處理算法的圖像協(xié)同處理程序,從而實(shí)現(xiàn)數(shù)字圖像處理算法到圖像協(xié)同處理程序的轉(zhuǎn)化,提高了利用圖像處理算法的程序的通用性以及程序運(yùn)行時(shí)的并行性。
附圖說明
圖1是本發(fā)明實(shí)施例一提供的cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取方法的實(shí)現(xiàn)流程圖;
圖2是本發(fā)明實(shí)施例二提供的cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取方法的實(shí)現(xiàn)流程圖;
圖3是本發(fā)明實(shí)施例三提供的cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取系統(tǒng)的結(jié)構(gòu)示意圖;以及
圖4是本發(fā)明實(shí)施例四提供的cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
以下結(jié)合具體實(shí)施例對(duì)本發(fā)明的具體實(shí)現(xiàn)進(jìn)行詳細(xì)描述:
實(shí)施例一:
圖1示出了本發(fā)明實(shí)施例一提供的cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取方法的實(shí)現(xiàn)流程,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,詳述如下:
在步驟s101中,接收用戶輸入的數(shù)字圖像處理算法。
本發(fā)明實(shí)施例適用于程序編譯器或圖像處理程序自動(dòng)生成系統(tǒng),數(shù)字圖像處理算法描述了處理數(shù)字圖像的方法,數(shù)字圖像處理算法具體可通過偽代碼、流程圖或類語言等方式表示。
在步驟s102中,對(duì)數(shù)字圖像處理算法進(jìn)行解析,以獲取數(shù)字圖像處理算法中用于圖像分塊處理的可并行運(yùn)行步驟。
在本發(fā)明實(shí)施例中,在對(duì)數(shù)字圖像處理算法進(jìn)行解析時(shí),可通過人工(例如,編程人員)對(duì)表示算法的流程圖或偽代碼進(jìn)行分析,也可以通過對(duì)表示算法的流程圖或偽代碼進(jìn)行機(jī)器自動(dòng)解析,得到對(duì)應(yīng)的可并行運(yùn)行步驟或偽代碼描述。作為示例地,例如,可對(duì)數(shù)字圖像處理算法處理像素的特點(diǎn),判斷該數(shù)字圖像處理算法是否針對(duì)各個(gè)像素點(diǎn)進(jìn)行、各個(gè)像素點(diǎn)的計(jì)算順序有沒有先后關(guān)系,如果處理算法針對(duì)各個(gè)像素點(diǎn)進(jìn)行,且處理結(jié)果互不影響,則該數(shù)字圖像處理算法中對(duì)各個(gè)像素點(diǎn)的處理可并行化實(shí)現(xiàn),這樣,可得到數(shù)字圖像處理算法中用于圖像處理的可并行運(yùn)行步驟。
在步驟s103中,根據(jù)預(yù)設(shè)的cpu和gpu上圖像分塊分配方式,將可并行運(yùn)行步驟映射為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段。
在本發(fā)明實(shí)施例中,預(yù)先設(shè)置cpu和gpu上圖像分塊分配方式,即分配cpu和gpu上處理的圖像分塊數(shù)量或圖像數(shù)據(jù)數(shù)量,在具體分配時(shí)可根據(jù)運(yùn)行計(jì)算機(jī)程序的cpu/gpu異構(gòu)計(jì)算機(jī)中cpu和gpu核心的數(shù)量進(jìn)行分配,也可以以其他方式分配,之后根據(jù)預(yù)設(shè)的cpu和gpu上圖像分塊分配方式,將可并行運(yùn)行步驟映射為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段。具體地,可通過人工將可并行運(yùn)行步驟轉(zhuǎn)換為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段,或自動(dòng)將可并行運(yùn)行步驟映射為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段。
在步驟s104中,根據(jù)計(jì)算機(jī)程序代碼段獲取利用數(shù)字圖像處理算法的圖像協(xié)同處理程序。
在本發(fā)明實(shí)施例中,根據(jù)前述已得到的可并行運(yùn)行的計(jì)算機(jī)程序代碼段獲取利用數(shù)字圖像處理算法的圖像協(xié)同處理程序,從而實(shí)現(xiàn)數(shù)字圖像處理算法到圖像協(xié)同處理程序的轉(zhuǎn)化,提高了利用圖像處理算法的程序的通用性以及程序運(yùn)行時(shí)的并行性。具體在根據(jù)計(jì)算機(jī)程序代碼段獲取利用數(shù)字圖像處理算法的圖像協(xié)同處理程序時(shí),可通過人工或自動(dòng)生成方式得到利用前述數(shù)字圖像處理算法的圖像協(xié)同處理程序。
實(shí)施例二:
圖2示出了本發(fā)明實(shí)施例二提供的cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取方法的實(shí)現(xiàn)流程,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,詳述如下:
在步驟s201中,獲取利用數(shù)字圖像處理算法在cpu上運(yùn)行的第一圖像處理程序,并獲取利用數(shù)字圖像處理算法在gpu上運(yùn)行的第二圖像處理程序。
在步驟s202中,運(yùn)行第一和第二圖像處理程序,分別對(duì)預(yù)設(shè)的測(cè)試用圖像進(jìn)行處理,以得到第一和第二圖像處理程序處理測(cè)試用圖像的運(yùn)行時(shí)間。
在本發(fā)明實(shí)施例中,第一圖像處理程序?yàn)轭A(yù)先編寫的利用cpu上進(jìn)行運(yùn)行的圖像處理程序,第一圖像處理程序?yàn)轭A(yù)先編寫的利用gpu上進(jìn)行運(yùn)行的圖像處理程序。獲取第一和第二圖像處理程序后運(yùn)行第一和第二圖像處理程序,對(duì)預(yù)設(shè)的測(cè)試用圖像進(jìn)行處理,以得到第一和第二圖像處理程序處理測(cè)試用圖像的運(yùn)行時(shí)間。
在步驟s203中,根據(jù)第一和第二圖像處理程序處理測(cè)試用圖像的運(yùn)行時(shí)間,確定cpu和gpu上圖像分塊分配方式并設(shè)置。
在本發(fā)明實(shí)施例中,為了提高cpu和gpu的并行性,要求兩者處理分配的圖像時(shí)間相同,從而充分提高包括cpu和gpu的計(jì)算機(jī)的性能。因此,優(yōu)選地,將cpu上處理的圖像分塊數(shù)量確定為
在步驟s204中,接收用戶輸入的數(shù)字圖像處理算法。
在步驟s205中,對(duì)數(shù)字圖像處理算法進(jìn)行解析,以獲取數(shù)字圖像處理算法中用于圖像分塊處理的可并行運(yùn)行步驟。
在本發(fā)明實(shí)施例中,數(shù)字圖像處理算法描述了處理數(shù)字圖像的方法,數(shù)字圖像處理算法具體可通過偽代碼、流程圖或類語言等方式表示。在對(duì)數(shù)字圖像處理算法進(jìn)行解析時(shí),可通過人工(例如,編程人員)對(duì)表示算法的流程圖或偽代碼進(jìn)行分析,也可以通過對(duì)表示算法的流程圖或偽代碼進(jìn)行機(jī)器自動(dòng)解析,得到對(duì)應(yīng)的可并行運(yùn)行步驟或偽代碼描述。作為示例地,例如,可對(duì)數(shù)字圖像處理算法處理像素的特點(diǎn),判斷該數(shù)字圖像處理算法是否針對(duì)各個(gè)像素點(diǎn)進(jìn)行、各個(gè)像素點(diǎn)的計(jì)算順序有沒有先后關(guān)系,如果處理算法針對(duì)各個(gè)像素點(diǎn)進(jìn)行,且處理結(jié)果互不影響,則該數(shù)字圖像處理算法中對(duì)各個(gè)像素點(diǎn)的處理可并行化實(shí)現(xiàn),這樣,可得到數(shù)字圖像處理算法中用于圖像處理的可并行運(yùn)行步驟。
在步驟s206中,根據(jù)預(yù)設(shè)的cpu和gpu上圖像分塊分配方式,將可并行運(yùn)行步驟映射為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段。
在本發(fā)明實(shí)施例中,預(yù)先設(shè)置cpu和gpu上圖像分塊分配方式,即分配cpu和gpu上處理的圖像分塊數(shù)量或圖像數(shù)據(jù)數(shù)量,在具體分配時(shí)可根據(jù)運(yùn)行計(jì)算機(jī)程序的cpu/gpu異構(gòu)計(jì)算機(jī)中cpu和gpu核心的數(shù)量進(jìn)行分配,也可以以其他方式分配,之后根據(jù)預(yù)設(shè)的cpu和gpu上圖像分塊分配方式,將可并行運(yùn)行步驟映射為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段。具體地,可通過人工將可并行運(yùn)行步驟轉(zhuǎn)換為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段,或自動(dòng)將可并行運(yùn)行步驟映射為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段。
在步驟s207中,根據(jù)計(jì)算機(jī)程序代碼段獲取利用數(shù)字圖像處理算法的圖像協(xié)同處理程序。
在本發(fā)明實(shí)施例中,根據(jù)前述已得到的可并行運(yùn)行的計(jì)算機(jī)程序代碼段獲取利用數(shù)字圖像處理算法的圖像協(xié)同處理程序,從而實(shí)現(xiàn)數(shù)字圖像處理算法到圖像協(xié)同處理程序的轉(zhuǎn)化,提高了利用圖像處理算法的程序的通用性以及程序運(yùn)行時(shí)的并行性。具體在根據(jù)計(jì)算機(jī)程序代碼段獲取利用數(shù)字圖像處理算法的圖像協(xié)同處理程序時(shí),可通過人工或自動(dòng)生成方式得到利用前述數(shù)字圖像處理算法的圖像協(xié)同處理程序。
在步驟s208中,對(duì)獲取的圖像協(xié)同處理程序進(jìn)行優(yōu)化。
在本發(fā)明實(shí)施例中,考慮到訪存對(duì)齊和數(shù)據(jù)向量化,可以通過向量指令集加快數(shù)據(jù)的并行處理,從而實(shí)現(xiàn)圖像協(xié)同處理程序中cpu代碼的優(yōu)化。對(duì)于gpu代碼的優(yōu)化,可減少gpu代碼中的分支處理,提高計(jì)算密集度。另外,在代碼中存在數(shù)據(jù)復(fù)用時(shí)盡可能使用共享存儲(chǔ)器,訪問全局內(nèi)存時(shí)盡量做到合并訪問,合理使用紋理存儲(chǔ)加快全局內(nèi)存的訪問速度。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,所述的存儲(chǔ)介質(zhì),如rom/ram、磁盤、光盤等。
實(shí)施例三:
圖3示出了本發(fā)明實(shí)施例三提供的cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取系統(tǒng)的結(jié)構(gòu),為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,其中包括:
算法接收單元31,用于接收用戶輸入的數(shù)字圖像處理算法;
算法解析單元32,用于對(duì)數(shù)字圖像處理算法進(jìn)行解析,以獲取數(shù)字圖像處理算法中用于圖像分塊處理的可并行運(yùn)行步驟;
步驟映射單元33,用于根據(jù)預(yù)設(shè)的cpu和gpu上圖像分塊分配方式,將可并行運(yùn)行步驟映射為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段;以及
第一程序獲取單元34,用于根據(jù)計(jì)算機(jī)程序代碼段獲取利用數(shù)字圖像處理算法的圖像協(xié)同處理程序。
在本發(fā)明實(shí)施例中,cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取系統(tǒng)的各單元可由相應(yīng)的硬件或軟件單元實(shí)現(xiàn),各單元可以為獨(dú)立的軟、硬件單元,也可以集成為一個(gè)軟、硬件單元,在此不用以限制本發(fā)明。各單元的具體實(shí)施方式可參考實(shí)施一的描述,在此不再贅述。
實(shí)施例四:
圖4示出了本發(fā)明實(shí)施例四提供的cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取系統(tǒng)的結(jié)構(gòu),為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,其中包括:
第二程序獲取單元41,用于獲取利用數(shù)字圖像處理算法在cpu上運(yùn)行的第一圖像處理程序,并獲取利用數(shù)字圖像處理算法在gpu上運(yùn)行的第二圖像處理程序;
程序運(yùn)行單元42,用于運(yùn)行第一和第二圖像處理程序,分別對(duì)預(yù)設(shè)的測(cè)試用圖像進(jìn)行處理,以得到第一和第二圖像處理程序處理測(cè)試用圖像的運(yùn)行時(shí)間;
分配確定單元43,用于根據(jù)第一和第二圖像處理程序處理測(cè)試用圖像的運(yùn)行時(shí)間,確定cpu和gpu上圖像分塊分配方式;
算法接收單元44,用于接收用戶輸入的數(shù)字圖像處理算法;
算法解析單元45,用于對(duì)數(shù)字圖像處理算法進(jìn)行解析,以獲取數(shù)字圖像處理算法中用于圖像分塊處理的可并行運(yùn)行步驟;
步驟映射單元46,用于根據(jù)預(yù)設(shè)的cpu和gpu上圖像分塊分配方式,將可并行運(yùn)行步驟映射為cpu和gpu上可并行運(yùn)行的計(jì)算機(jī)程序代碼段;以及
第一程序獲取單元47,用于根據(jù)計(jì)算機(jī)程序代碼段獲取利用數(shù)字圖像處理算法的圖像協(xié)同處理程序;以及
程序優(yōu)化單元48,用于對(duì)圖像協(xié)同處理程序進(jìn)行優(yōu)化。
其中,分配確定單元43包括分配確定子單元431,用于將cpu上處理的圖像分塊數(shù)量確定為
在本發(fā)明實(shí)施例中,cpu/gpu異構(gòu)環(huán)境的圖像協(xié)同處理程序獲取系統(tǒng)的各單元可由相應(yīng)的硬件或軟件單元實(shí)現(xiàn),各單元可以為獨(dú)立的軟、硬件單元,也可以集成為一個(gè)軟、硬件單元,在此不用以限制本發(fā)明。各單元的具體實(shí)施方式可參考實(shí)施二的描述,在此不再贅述。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。