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

基于cpu和gpu的圖像協(xié)同解碼方法及裝置的制造方法_3

文檔序號(hào):9399629閱讀:來(lái)源:國(guó)知局
中的線程以Wrap (-般個(gè)數(shù)為32)為單位進(jìn)行組織和調(diào)度;3、一個(gè)Warp-次 只能執(zhí)行一個(gè)計(jì)算中的分支,Tier-I內(nèi)部幾乎充滿分支,因此理想的做法是每32個(gè)線程只 使用一個(gè)執(zhí)行計(jì)算,節(jié)省數(shù)據(jù)傳輸帶寬;4、將算數(shù)編碼所需的部分分支判斷操作轉(zhuǎn)換為查 表運(yùn)算;5、使用共享內(nèi)存存儲(chǔ)中間結(jié)果。
[0081] S105,繼續(xù)控制所述電子設(shè)備的CPU對(duì)所述第一處理結(jié)果進(jìn)行JPEG2000標(biāo)準(zhǔn)中定 義的tier-Ι算法處理,得到第二處理結(jié)果。
[0082] 在所述分辨率值不高于預(yù)設(shè)的分辨率閾值的情況下,繼續(xù)控制所述電子設(shè)備的 CPU對(duì)所述第一處理結(jié)果進(jìn)行JPEG2000標(biāo)準(zhǔn)中定義的tier-Ι算法處理,得到第二處理結(jié) 果。
[0083] S106,調(diào)用所述電子設(shè)備的GPU對(duì)所述第二處理結(jié)果順序進(jìn)行反量化處理、小波 逆變換及DC電平變換,得到解碼后的圖像數(shù)據(jù)。
[0084] 較佳的,在本發(fā)明的一個(gè)實(shí)施例中,在所述電子設(shè)備的GPU對(duì)所述第二處理結(jié)果 順序進(jìn)行反量化處理之后,還可以包括:
[0085] 利用GPU的并行能力將反量化處理結(jié)果直接排列成小波逆變換所需的線性格式, 以提高所述電子設(shè)備的GPU執(zhí)行小波逆變換的效率。
[0086] 較佳的,在本發(fā)明的一個(gè)實(shí)施例中,在所述電子設(shè)備的GPU對(duì)所述第二處理結(jié)果 順序進(jìn)行反量化處理之后,還可以包括:
[0087] 識(shí)別圖像編碼空碼塊,以減少所述電子設(shè)備的GPU執(zhí)行小波逆變換階段的計(jì)算 量。
[0088] 可以理解的是,由于反量化運(yùn)算實(shí)質(zhì)是將用整形表示的精確數(shù)值轉(zhuǎn)化為采樣前的 "連續(xù)"的浮點(diǎn)型數(shù)值,運(yùn)算簡(jiǎn)單,且反量化在GPU上的實(shí)現(xiàn)方式為碼塊內(nèi)像素并發(fā),因此可 以對(duì)空碼塊提前判斷,減少小波逆變換階段50%~70%的運(yùn)算;此外,碼塊內(nèi)并發(fā)完成后, GPU可以將數(shù)據(jù)直接排列成小波逆變換所需的線性格式,利于小波逆變換提升效率。
[0089] 較佳的,在本發(fā)明的一個(gè)實(shí)施例中,所述電子設(shè)備的GPU執(zhí)行小波逆變換的方式, 可以包括:
[0090] 利用GPU的高速顯存緩存一次小波逆變換需要的數(shù)據(jù),以減少?gòu)牡退亠@存中的讀 寫(xiě)次數(shù),優(yōu)化小波逆變換的數(shù)據(jù)讀取速度。
[0091] 現(xiàn)有的小波逆變換方法是分別對(duì)整個(gè)圖像做行交織、行小波逆變換、列交織、列小 波逆變換。由于二維小波逆變換實(shí)質(zhì)是針對(duì)兩次行和列的提升算法,具有較大的數(shù)據(jù)無(wú)關(guān) 性,易于并行,因此本發(fā)明將交織、小波逆變換在GPU中以小塊的方式一次完成,小塊存儲(chǔ) 在GPU的Block共享緩存中,避免數(shù)據(jù)重復(fù)讀寫(xiě),具體參見(jiàn)圖7。此外,不同層級(jí)小波變換尺 寸不同,加速比不同,對(duì)較大分辨率的圖像加速比較高。
[0092] 較佳的,在從全局顯存向塊內(nèi)共享內(nèi)存拷貝期間,提前計(jì)算好位置,直接完成變換 前的交織過(guò)程,省去交織處理的時(shí)間,交織過(guò)程如圖8所示。
[0093] 由此可見(jiàn),本發(fā)明的基于CPU和GPU的圖像協(xié)同解碼方法,在高分辨率圖像的解碼 中調(diào)用GPU執(zhí)行tier-Ι算法的速度與CPU接近,將tier-Ι算法的執(zhí)行操作分配到GPU,一 方面在不影響解碼速度的前提下減輕了 CPU的負(fù)荷,另一方面充分利用的空閑的GPU資源, 從而實(shí)現(xiàn)了 CPU、GPU的負(fù)載均衡,增加系統(tǒng)的總體吞吐率。
[0094] 較佳的,在本發(fā)明的另一個(gè)實(shí)施例中,GPU執(zhí)行過(guò)程中上傳、執(zhí)行、下載的并行化。 具體的,使用GPU的Stream特性,在執(zhí)行當(dāng)前圖像解碼時(shí),完成將上一幀圖像的結(jié)果傳輸?shù)?內(nèi)存,并預(yù)先將下一幀圖像的數(shù)據(jù)讀取到緩存中,隱藏了數(shù)據(jù)傳輸?shù)臅r(shí)間;
[0095] 在Cuda定義的GPU接口主要分為三類:數(shù)據(jù)上傳、執(zhí)行并行計(jì)算,下載數(shù)據(jù)到內(nèi) 存,三種操作都可以是異步的,但要正確獲取結(jié)果,要在正確的時(shí)間同步。這三類必須串行 執(zhí)行,否則會(huì)發(fā)生邏輯錯(cuò)誤。Cuda定義了新的結(jié)構(gòu)數(shù)據(jù)流stream,可以理解為上傳/執(zhí)行/ 下載序列的容器。Cuda中同類型的操作無(wú)法并行,例如多個(gè)數(shù)據(jù)流stream之間的上傳操作 只能是串行的。因此本發(fā)明提出了如圖9所示的基于stream的并行方式,圖中橫軸是操作 實(shí)際的執(zhí)行時(shí)間,傾斜的縱軸是觸發(fā)時(shí)間,也就是調(diào)用操作接口的時(shí)間。一個(gè)反"L"型方框 內(nèi)是一次循環(huán)內(nèi)的執(zhí)行內(nèi)容,可以看到采用如圖9所示的異步API調(diào)用順序,上傳到顯存、 下載到內(nèi)存以及執(zhí)行運(yùn)算時(shí)間被很好地重疊,實(shí)際用時(shí)由三者之和減少為三者中最長(zhǎng)的那 個(gè),顯著地減少了總體時(shí)間。
[0096] 較佳的,在本發(fā)明的另一個(gè)實(shí)施例中,針對(duì)多種載荷的多通道并行的解碼方案。具 體的,將壓縮數(shù)據(jù)按照解碼并行度或者系統(tǒng)硬件能力不同,分別將其傳入CPU、GPU占用更 多的解碼通道中,這樣硬件計(jì)算資源可以得到充分使用,不會(huì)出現(xiàn)空閑,提高整體數(shù)據(jù)吞吐 率。
[0097] 解碼通道是由一組解碼功能模塊構(gòu)成,完成一幅圖像的解碼。整體的架構(gòu)如圖10 所示。不同類型通道,其算法映射方式不同,硬件負(fù)載不同。不同的通道在程序?qū)崿F(xiàn)中對(duì)應(yīng) 不同的壓縮數(shù)據(jù)輸入接口,因此可以動(dòng)態(tài)決定壓縮數(shù)據(jù)使用哪個(gè)解碼通道,決定的依據(jù)一 般是圖像的分辨率,普遍來(lái)說(shuō)高分辨率的圖像(高于1K*1K)走通道1,低分辨的圖像走通道 2 ;CPU性能弱或者對(duì)CPU使用率有限制時(shí)使用通道1,其他使用通道2。
[0098] 一般通道1和通道2使用不同的GPU設(shè)備,以免互相影響速度。通道2的前端一 般使用CPU多線程解碼以對(duì)計(jì)算量較大的Tier-I階段有足夠的速度。
[0099] 這樣做的優(yōu)勢(shì)在于提供CPU-GPU負(fù)載調(diào)節(jié)機(jī)制,充分發(fā)揮硬件性能,增加圖像特 點(diǎn)適應(yīng)性,各種圖像都能高效處理。用戶不必關(guān)心算法的細(xì)節(jié)或者了解算法硬件的映射方 式,只需要根據(jù)圖像特點(diǎn)和計(jì)算資源的限制選擇合適的通道即可獲得初步的優(yōu)化。
[0100] 為了進(jìn)一步驗(yàn)證本發(fā)明方法的優(yōu)越性,下面通過(guò)如下表格中的數(shù)據(jù)進(jìn)行說(shuō)明。
[0101] 根據(jù)JPEG2000解碼主要的環(huán)節(jié):頭信息解析、tier-2、tier-ι、反量化、小波逆變 換(IDWT)和DC電平變換,將上述解碼環(huán)節(jié)分別使用CPU、GPU實(shí)現(xiàn)。各個(gè)解碼環(huán)節(jié)的映射 關(guān)系如下表所示:
[0102]
[0103] 由表中可以看出圖像解碼的多個(gè)解碼環(huán)節(jié)有不同的運(yùn)算特點(diǎn),適合并行的模塊可 并行的方式也不盡相同。將可并行的部分使用合適的方式映射到GPU的線程資源,充分利 用GPU計(jì)算單元多、并行度高的優(yōu)點(diǎn),規(guī)避GPU不善于處理分支多、相關(guān)性高的運(yùn)算的弱點(diǎn), 充分利用計(jì)算資源。在CPU計(jì)算階段過(guò)渡到GPU時(shí)需要內(nèi)存數(shù)據(jù)上傳到顯存,在GPU計(jì)算 期間,數(shù)據(jù)一直駐留在顯存,改變線程映射方式不需要額外的時(shí)間,驗(yàn)證了本發(fā)明方法在理 論上是最優(yōu)的。在實(shí)際實(shí)驗(yàn)中,例如在輸入圖像參數(shù)為16bit位深度單通道、4096*4096分 辨率、6層7-5小波變換、1/32有損編碼,使用Nvidia的Kl顯卡和Intel i7 4930K CPU, 可以達(dá)到每秒處理150Mbps的壓縮數(shù)據(jù)。由此可見(jiàn),本發(fā)明方法充分利用當(dāng)前計(jì)算機(jī)多核 CPU+GPU架構(gòu)的計(jì)算能力,提升了單路輸入壓縮圖像的解碼速度,也提升了多路圖像并行解 碼的吞吐率。
[0104] 相應(yīng)于上面提到的方法實(shí)施例,本發(fā)明還提供了一種基于CPU和GPU的圖像協(xié)同 解碼裝置。
[0105] 如圖11所示,一種基于CPU和GPU的圖像協(xié)同解碼裝置,應(yīng)用于配置有中央處理 器CPU和圖形處理器GPU的電子設(shè)備,所述裝置可以包括:
[0106] 碼流接收模塊201,用于接收?qǐng)D像編碼碼流,其中所述圖像編碼碼流為經(jīng)過(guò) JPEG2000編碼后的圖像碼流;
[0107] 第一控制模塊202,用于調(diào)用所述電子設(shè)備的CPU對(duì)所述碼流接收模塊201接收到 的圖像編碼碼流順序進(jìn)行頭信息解析及JPEG2000標(biāo)準(zhǔn)中定義的tier-2算法處理,得到第 一處理結(jié)果;
[0108] 判斷模塊203,用于提取所述圖像編碼碼流的圖像分辨率值,判斷所述分辨率值是 否高于預(yù)設(shè)的分辨率閾值;
[0109] 第二控制模塊204,用于在所述判斷模塊203的判斷結(jié)果為是的情況下,調(diào)用所述 電子設(shè)備的GPU對(duì)所述第一處理結(jié)果進(jìn)行JPEG2000標(biāo)準(zhǔn)中定義的tier-Ι算法處理,得到 第二處理結(jié)果;
[0110] 第三控制模塊205,用于在所述判斷模塊203的判斷結(jié)果為否的情況下,繼續(xù)控制 所述電子設(shè)備的CPU對(duì)所述第一處理結(jié)果進(jìn)行JPEG2000標(biāo)準(zhǔn)中定義的tier-ι算法處理, 得到第二處理結(jié)果;
[0111] 第四控制模塊206,用于調(diào)用所述電子設(shè)備的GPU對(duì)所述第二處理結(jié)果順序進(jìn)行 反量化處理、小波逆變換及DC電平變換,得到解碼后的圖像數(shù)據(jù)。
[0112] 由此可見(jiàn),本發(fā)明的基于CPU和GPU的圖像協(xié)同解碼裝置,在高分辨率圖像的解碼 中調(diào)用GPU執(zhí)行tier-Ι算法的速度與CPU接近,將tier-Ι算法的執(zhí)行操作分配到GPU,一 方面在不影響解碼速度的前提下減輕了 CPU的負(fù)荷,另一方面充分利用的空閑的GPU資源, 從而實(shí)現(xiàn)了 CPU、GPU的負(fù)載均衡,增加系統(tǒng)的總體吞吐率。
[0113] 較佳的,在本發(fā)明的一個(gè)實(shí)施例中,所述電子設(shè)備的CPU與GPU之間的數(shù)據(jù)傳遞方 式可以為:CPU將數(shù)據(jù)發(fā)送至預(yù)先建立的緩沖隊(duì)列,GPU從所述預(yù)先建立的緩沖隊(duì)列異步獲 取數(shù)據(jù)。
[0114] 較佳的,在本發(fā)明的一個(gè)實(shí)施例中,所述第二控制模塊20
當(dāng)前第3頁(yè)1 2 3 4 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1