本發(fā)明實(shí)施例涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別是涉及一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)方法、裝置及系統(tǒng)。
背景技術(shù):
在大數(shù)據(jù)時(shí)代,海量圖像數(shù)據(jù)規(guī)模不僅給數(shù)據(jù)中心帶來了超高的存儲成本,同時(shí)也給數(shù)據(jù)中心的性能帶來了挑戰(zhàn)。為了降低圖像文件的數(shù)據(jù)規(guī)模,業(yè)內(nèi)不斷致力于更加高效的圖像有損壓縮編碼算法研究,其中一種新的圖像文件格式應(yīng)運(yùn)而生,該圖像壓縮格式為webp,采用該格式每天可以節(jié)省幾tb的帶寬,網(wǎng)站頁面平均加載時(shí)間大約減少1/3。與傳統(tǒng)的壓縮技術(shù)相比,webp具備更優(yōu)的圖像數(shù)據(jù)壓縮算法,能夠得到更小的圖片體積,而且擁有肉眼識別無差異的圖像質(zhì)量。但是webp與jpeg相比,在速度上處于略勢,編碼速度慢10倍,解碼速度慢1.5倍,并且現(xiàn)有技術(shù)中通過cpu實(shí)現(xiàn)webp有損壓縮算法,由于cpu是通過串行處理的方式實(shí)現(xiàn)webp有損壓縮算法的,所以使現(xiàn)有技術(shù)具有壓縮速度慢、功耗高的缺點(diǎn)。
因此,如何提供一種解決上述技術(shù)問題的基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)方法、裝置及系統(tǒng)成為本領(lǐng)域的技術(shù)人員需要解決的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的是提供一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)方法、裝置及系統(tǒng),在使用過程中在一定程度上提高了壓縮速度、降低了功耗。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)方法,包括:
接收主機(jī)端發(fā)送的圖像數(shù)據(jù)信息,并將所述圖像數(shù)據(jù)信息存儲至緩存中;所述圖像數(shù)據(jù)信息為yuv格式的圖像數(shù)據(jù)信息,所述緩存預(yù)先通過所述主機(jī)端建立;
依據(jù)所述主機(jī)端發(fā)送的啟動(dòng)指令調(diào)用fpga硬件電路實(shí)現(xiàn)的webp有損壓縮算法,并依據(jù)所述webp有損壓縮算法對所述圖像數(shù)據(jù)信息進(jìn)行壓縮編碼處理,得到處理后的圖像數(shù)據(jù),并將所述計(jì)算后的圖像數(shù)據(jù)存儲至所述緩存中;
返回計(jì)算完成信息至所述主機(jī)端,以便所述主機(jī)端接收到所述計(jì)算完成信息后從所述緩存中讀取所述計(jì)算完成的圖像數(shù)據(jù)。
可選的,所述webp有損壓縮算法為采用opencl高級語言進(jìn)行描述的webp有損壓縮算法。
可選的,所述依據(jù)所述webp有損壓縮算法對所述圖像數(shù)據(jù)信息進(jìn)行壓縮編碼處理,得到處理后的圖像數(shù)據(jù)的過程具體為:
對所述圖像數(shù)據(jù)信息進(jìn)行宏塊劃分得到多個(gè)宏塊數(shù)據(jù)信息;
采用循環(huán)流水并行處理的方式對各個(gè)所述宏塊數(shù)據(jù)信息進(jìn)行壓縮編碼處理,得到處理后的圖像數(shù)據(jù)。
可選的,所述對各個(gè)所述宏塊數(shù)據(jù)信息進(jìn)行并行壓縮編碼處理的過程為:
對每個(gè)所述宏塊數(shù)據(jù)信息進(jìn)行預(yù)測變換、dct變換、wht變換、量化以及熵編碼處理。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)裝置,包括:
存儲模塊,用于接收主機(jī)端發(fā)送的圖像數(shù)據(jù)信息,并將所述圖像數(shù)據(jù)信息存儲至緩存中;所述圖像數(shù)據(jù)信息為yuv格式的圖像數(shù)據(jù)信息,所述緩存預(yù)先通過所述主機(jī)端建立;還用于將計(jì)算后的圖像數(shù)據(jù)存儲至所述緩存中;
壓縮模塊,用于依據(jù)所述主機(jī)端發(fā)送的啟動(dòng)指令調(diào)用fpga硬件電路實(shí)現(xiàn)的webp有損壓縮算法,并依據(jù)所述webp有損壓縮算法對所述圖像數(shù)據(jù)信息進(jìn)行壓縮編碼處理,得到所述處理后的圖像數(shù)據(jù);
返回模塊,用于返回計(jì)算完成信息至所述主機(jī)端,以便所述主機(jī)端接收到所述計(jì)算完成信息后從所述緩存中讀取所述計(jì)算完成的圖像數(shù)據(jù)。
可選的,所述存儲模塊為fpga異構(gòu)加速板卡上的ddr存儲器。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)系統(tǒng),包括主機(jī)端和如上述所述的基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)裝置。
可選的,所述主機(jī)端通過pci-e接口與所述基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)裝置進(jìn)行通信。
本發(fā)明實(shí)施例提供了一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)方法、裝置及系統(tǒng),包括:接收主機(jī)端發(fā)送的圖像數(shù)據(jù)信息,并將圖像數(shù)據(jù)信息存儲至緩存中;圖像數(shù)據(jù)信息為yuv格式的圖像數(shù)據(jù)信息,緩存預(yù)先通過主機(jī)端建立;依據(jù)主機(jī)端發(fā)送的啟動(dòng)指令調(diào)用fpga硬件電路實(shí)現(xiàn)的webp有損壓縮算法,并依據(jù)webp有損壓縮算法對圖像數(shù)據(jù)信息進(jìn)行壓縮編碼處理,得到處理后的圖像數(shù)據(jù),并將計(jì)算后的圖像數(shù)據(jù)存儲至緩存中;返回計(jì)算完成信息至主機(jī)端,以便主機(jī)端接收到計(jì)算完成信息后從緩存中讀取計(jì)算完成的圖像數(shù)據(jù)。
本發(fā)明通過調(diào)用fpga異構(gòu)加速平臺上的fpga硬件電路實(shí)現(xiàn)webp有損壓縮算法,以對主機(jī)端發(fā)送的圖像數(shù)據(jù)信息的壓縮處理,通過流水并行的處理方式提高算法的并行度,實(shí)現(xiàn)對圖像數(shù)據(jù)信息進(jìn)行壓縮處理過程的加速。本發(fā)明在使用過程中在一定程度上提高了壓縮速度、降低了功耗。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對現(xiàn)有技術(shù)和實(shí)施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)方法的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)方法、裝置及系統(tǒng),在使用過程中在一定程度上提高了壓縮速度、降低了功耗。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請參照圖1,圖1為本發(fā)明實(shí)施例提供的一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)方法的流程示意圖。該方法包括:
s10:接收主機(jī)端發(fā)送的圖像數(shù)據(jù)信息,并將圖像數(shù)據(jù)信息存儲至緩存中;圖像數(shù)據(jù)信息為yuv格式的圖像數(shù)據(jù)信息,緩存預(yù)先通過主機(jī)端建立;
s20:依據(jù)主機(jī)端發(fā)送的啟動(dòng)指令調(diào)用fpga硬件電路實(shí)現(xiàn)的webp有損壓縮算法,并依據(jù)webp有損壓縮算法對圖像數(shù)據(jù)信息進(jìn)行壓縮編碼處理,得到處理后的圖像數(shù)據(jù),并將計(jì)算后的圖像數(shù)據(jù)存儲至緩存中;
s30:返回計(jì)算完成信息至主機(jī)端,以便主機(jī)端接收到計(jì)算完成信息后從緩存中讀取計(jì)算完成的圖像數(shù)據(jù)。
需要說明的是,在通過fpga(field-programmablegatearray,現(xiàn)場可編程門陣列)異構(gòu)加速平臺對待壓縮的圖像數(shù)據(jù)信息進(jìn)行壓縮編碼處理之前,可以預(yù)先采用高級語言對解壓縮算法進(jìn)行描述,并生成在主機(jī)端處理器(cpu)上運(yùn)行的主機(jī)端程序以及面向fpga異構(gòu)加速平臺的kernel(操作系統(tǒng)內(nèi)核)程序。
具體的,可以預(yù)先通過主機(jī)端的主機(jī)端程序完成webp有損壓縮算法的初始化,該初始化過程可以包括:將jpg格式的圖像文件轉(zhuǎn)換成yuv格式的圖像文件,并獲取相應(yīng)的圖像數(shù)據(jù)信息;創(chuàng)建主機(jī)端與fpga異構(gòu)加速平臺進(jìn)行數(shù)據(jù)通信的接口和緩存,具體的該緩存可以設(shè)置在fpga異構(gòu)加速平臺的存儲器(可以是ddr內(nèi)存)中;主機(jī)端可以將格式為yuv的圖像數(shù)據(jù)信息發(fā)送至fpga異構(gòu)加速平臺,該fpga異構(gòu)加速平臺接收到圖像數(shù)據(jù)信息后將該圖像數(shù)據(jù)信息存儲至預(yù)先建立的緩存中。fpga異構(gòu)加速平臺接收到主機(jī)端發(fā)送的啟動(dòng)指令后調(diào)用可以實(shí)現(xiàn)webp有損壓縮算法(該webp有損壓縮算法由fpga芯片上的webp有損壓縮算法硬件電路(即fpga硬件電路)實(shí)現(xiàn)),并從緩存中獲取需要處理的圖像數(shù)據(jù)信息,依據(jù)所調(diào)用的webp有損壓縮算法對該圖像數(shù)據(jù)信息進(jìn)行相應(yīng)的計(jì)算處理,并將計(jì)算處理后的圖像數(shù)據(jù)存儲至緩存中,計(jì)算完畢時(shí)可以向主機(jī)端發(fā)送計(jì)算完成信息,主機(jī)端接收到fpga異構(gòu)加速平臺發(fā)送的計(jì)算完成信息后可以將計(jì)算完成的圖像數(shù)據(jù)從fpga異構(gòu)加速平臺的存儲器中讀取至主機(jī)端內(nèi)存中,并對讀取出的圖像數(shù)據(jù)進(jìn)行webp格式文件頭封裝,以完成webp有損壓縮算法的fpga異構(gòu)加速過程。
可選的,webp有損壓縮算法為采用opencl高級語言進(jìn)行描述的webp有損壓縮算法。
具體的,在本發(fā)明實(shí)施例中的可以采用opencl(opencomputinglanguage,開放運(yùn)算語言)高級語言對webp有損壓縮算法進(jìn)行描述,對于生成的在處理器(cpu)上運(yùn)行的主機(jī)端程序以及面向fpga異構(gòu)加速平臺的kernel(操作系統(tǒng)內(nèi)核)程序,可以采用gcc編譯器對主機(jī)端程序進(jìn)行編譯,生成可以在cpu上執(zhí)行的可執(zhí)行文件;采用alterasdkforopencl高層次綜合工具對kernel程序文件進(jìn)行編譯,生成可以在fpga上運(yùn)行的aocx文件。通過alterasdkforopencl高層次綜合工具完成經(jīng)opencl高級語言描述的webp有損壓縮算法到fpga異構(gòu)加速平臺中的硬件執(zhí)行比特流的自動(dòng)化映射,完成對webp有損壓縮算法的異構(gòu)加速系統(tǒng)的自動(dòng)化部署過程,實(shí)現(xiàn)fpga異構(gòu)加速平臺對webp有損壓縮算法的硬件加速。
需要說明的是,本發(fā)明實(shí)施例中采用opencl高級語言描述webp有損壓縮算法,在一定程度上降低將壓縮算法部署到fpga異構(gòu)加速平臺的時(shí)間,降低了開發(fā)的難度、縮短了研發(fā)周期,同時(shí)還可以提高webp有損壓縮算法的執(zhí)行性能。
另外,本發(fā)明實(shí)施例中不僅限于采用opencl高級語言描述webp有損壓縮算法,也可以采用其他的高級語言描述webp有損壓縮算法,具體的采用哪種高級語言描述webp有損壓縮算法可以根據(jù)實(shí)際情況而定,本發(fā)明實(shí)施例對此不做特殊的限定,能實(shí)現(xiàn)本發(fā)明實(shí)施例的目的即可。
可選的,依據(jù)webp有損壓縮算法對圖像數(shù)據(jù)信息進(jìn)行壓縮編碼處理,得到處理后的圖像數(shù)據(jù)的過程具體為:
對圖像數(shù)據(jù)信息進(jìn)行宏塊劃分,得到多個(gè)宏塊數(shù)據(jù)信息;
采用循環(huán)流水并行處理的方式對各個(gè)宏塊數(shù)據(jù)信息進(jìn)行壓縮編碼處理,得到處理后的圖像數(shù)據(jù)。
需要說明的是,在對各個(gè)宏塊數(shù)據(jù)信息進(jìn)行壓縮編碼處理時(shí),采用循環(huán)流水并行優(yōu)化技術(shù)指導(dǎo)高層次綜合工具的自動(dòng)映射過程,并進(jìn)一步得到壓縮后的圖像數(shù)據(jù)。對多個(gè)宏塊數(shù)據(jù)信息采用并行執(zhí)行的方式進(jìn)行優(yōu)化處理,可以在一定程度上提高處理速度和性能。
可選的,對各個(gè)宏塊數(shù)據(jù)信息進(jìn)行并行計(jì)算處理的過程為:
對每個(gè)宏塊數(shù)據(jù)信息進(jìn)行預(yù)測變換、dct變換、wht變換、量化以及熵編碼處理。
具體的,對每個(gè)宏塊數(shù)據(jù)信息進(jìn)行計(jì)算處理,主要是對每個(gè)宏塊數(shù)據(jù)信息進(jìn)行變換和編碼處理,具體的變換處理包括預(yù)測變換、dct變換和wht變換,當(dāng)然,也可以包括其他的變換處理;編碼處理包括熵編碼,當(dāng)然,也可以包括其他的編碼處理方式,本發(fā)明實(shí)施例對此不做特殊的限定,能實(shí)現(xiàn)本發(fā)明實(shí)施例的目的即可。
本發(fā)明實(shí)施例提供了一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)方法,包括:接收主機(jī)端發(fā)送的圖像數(shù)據(jù)信息,并將圖像數(shù)據(jù)信息存儲至緩存中;圖像數(shù)據(jù)信息為yuv格式的圖像數(shù)據(jù)信息,緩存預(yù)先通過主機(jī)端建立;依據(jù)主機(jī)端發(fā)送的啟動(dòng)指令調(diào)用fpga硬件電路實(shí)現(xiàn)的webp有損壓縮算法,并依據(jù)webp有損壓縮算法對圖像數(shù)據(jù)信息進(jìn)行壓縮編碼處理,得到處理后的圖像數(shù)據(jù),并將計(jì)算后的圖像數(shù)據(jù)存儲至緩存中;返回計(jì)算完成信息至主機(jī)端,以便主機(jī)端接收到計(jì)算完成信息后從緩存中讀取計(jì)算完成的圖像數(shù)據(jù)。
本發(fā)明通過調(diào)用fpga異構(gòu)加速平臺上的fpga硬件電路實(shí)現(xiàn)webp有損壓縮算法,以對主機(jī)端發(fā)送的圖像數(shù)據(jù)信息的壓縮處理,通過流水并行的處理方式提高算法的并行度,實(shí)現(xiàn)對圖像數(shù)據(jù)信息進(jìn)行壓縮處理過程的加速。本發(fā)明在使用過程中在一定程度上提高了壓縮速度、降低了功耗。
還需要說明的是,采用fpga異構(gòu)加速平臺實(shí)現(xiàn)webp有損壓縮算法的核心部分,可以從整體上提高webp有損壓縮算法的吞吐率,從而提供其性能。
請參照圖2,圖2為本發(fā)明實(shí)施例提供的一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖。在上述實(shí)施例的基礎(chǔ)上:
該裝置包括:
存儲模塊1,用于接收主機(jī)端發(fā)送的圖像數(shù)據(jù)信息,并將所述圖像數(shù)據(jù)信息存儲至緩存中;所述圖像數(shù)據(jù)信息為yuv格式的圖像數(shù)據(jù)信息,所述緩存預(yù)先通過所述主機(jī)端建立;還用于將計(jì)算后的圖像數(shù)據(jù)存儲至所述緩存中;
壓縮模塊2,用于依據(jù)所述主機(jī)端發(fā)送的啟動(dòng)指令調(diào)用fpga硬件電路實(shí)現(xiàn)webp有損壓縮算法,并依據(jù)所述webp有損壓縮算法對所述圖像數(shù)據(jù)信息進(jìn)行壓縮編碼處理,得到所述處理后的圖像數(shù)據(jù);
返回模塊3,用于返回計(jì)算完成信息至所述主機(jī)端,以便所述主機(jī)端接收到所述計(jì)算完成信息后從所述緩存中讀取所述計(jì)算完成的圖像數(shù)據(jù)。
可選的,所述存儲模塊為fpga異構(gòu)加速板卡上的ddr存儲器。
具體的,fpga異構(gòu)加速平臺上的fpga異構(gòu)加速板卡上包括fpga芯片和存儲器,本發(fā)明實(shí)施例中的存儲模塊1可以為fpga異構(gòu)加速板卡上的存儲器,具體可以為ddr存儲器(例如ddr3存儲器)。fpga芯片上設(shè)置有用于實(shí)現(xiàn)webp有損壓縮算法的fpga硬件電路,在對圖像數(shù)據(jù)信息進(jìn)行處理的過程中,通過調(diào)用fpga異構(gòu)加速平臺上的用于實(shí)現(xiàn)webp有損壓縮算法的fpga硬件電路進(jìn)行硬件加速,以提高對圖像信息數(shù)據(jù)處理的速度。
需要說的是,本發(fā)明實(shí)施例提供了一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)裝置,在使用過程中在一定程度上提高了壓縮速度、降低了功耗。另外,對于本發(fā)明實(shí)施例中涉及到的基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)方法的具體介紹請參照上述實(shí)施例,本申請?jiān)诖瞬辉儋樖觥?/p>
在上述實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例提供了一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)系統(tǒng),包括主機(jī)端和如上述所述的基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)裝置。
可選的,所述主機(jī)端通過pci-e接口與所述基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)裝置進(jìn)行通信。
需要說明的是,本發(fā)明實(shí)施例中的主機(jī)端與基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)裝置之間采用pci-e接口連接,以進(jìn)行數(shù)據(jù)通信。當(dāng)然,不僅限于通過pci-e接口進(jìn)行數(shù)據(jù)通信,也可以通過其他的接口進(jìn)行數(shù)據(jù)通信,具體采用哪種接口可以根據(jù)實(shí)際情況而定,本發(fā)明實(shí)施例對此不做特殊的限定,能實(shí)現(xiàn)本發(fā)明實(shí)施例的目的即可。
本發(fā)明實(shí)施例提供了一種基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)系統(tǒng),在使用過程中在一定程度上提高了壓縮速度、降低了功耗。另外,對于本發(fā)明實(shí)施例中涉及到的基于fpga異構(gòu)加速平臺的webp有損壓縮算法的實(shí)現(xiàn)方法的具體介紹請參照上述方法實(shí)施例,本申請?jiān)诖瞬辉儋樖觥?/p>
還需要說明的是,在本說明書中,諸如術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其他實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。