亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種面向科學(xué)計(jì)算的浮點(diǎn)型數(shù)據(jù)并行無損壓縮方法

文檔序號(hào):9304437閱讀:539來源:國知局
一種面向科學(xué)計(jì)算的浮點(diǎn)型數(shù)據(jù)并行無損壓縮方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)據(jù)并行處理技術(shù)領(lǐng)域,具體涉及一種面向科學(xué)計(jì)算的浮點(diǎn)型數(shù)據(jù)并行無損壓縮方法。
【背景技術(shù)】
[0002]隨著數(shù)據(jù)時(shí)代的到來,各行各業(yè)所產(chǎn)生的數(shù)據(jù)呈指數(shù)級(jí)增長,大規(guī)模數(shù)據(jù)的產(chǎn)生不僅對(duì)硬件設(shè)備帶來巨大挑戰(zhàn),而且對(duì)網(wǎng)絡(luò)帶寬產(chǎn)生巨大壓力,如此龐大的數(shù)據(jù)嚴(yán)重阻礙了科學(xué)計(jì)算的運(yùn)用和發(fā)展。數(shù)據(jù)壓縮一直是用于降低數(shù)據(jù)規(guī)模行之有效的方法,并且在科學(xué)計(jì)算領(lǐng)域,任何一個(gè)微小誤差都將可能產(chǎn)生不可預(yù)料的后果,所以無損性是數(shù)據(jù)壓縮的必要條件。
[0003]傳統(tǒng)的數(shù)據(jù)壓縮方法往往耗時(shí)巨大,而科學(xué)數(shù)據(jù)的更新速度卻十分迅速,因此對(duì)傳統(tǒng)數(shù)據(jù)壓縮方法的更新?lián)Q代迫在眉睫;同時(shí)受國外高昂軟件費(fèi)用license的限制,我國在高性能硬件設(shè)備和應(yīng)用低效率之間的矛盾日益突出,提高處理器利用率可以有效緩解此種矛盾。
[0004]就目前計(jì)算機(jī)硬件設(shè)備而言,其性能上已經(jīng)有很大提高,如一般計(jì)算機(jī)都已是4核處理器,而GPU擁有成千上萬的算術(shù)邏輯單元專用于數(shù)據(jù)計(jì)算,這為并行技術(shù)提供了硬件基礎(chǔ)。采用并行數(shù)據(jù)壓縮方法不僅可以加快數(shù)據(jù)處理流程,而且可以提高處理器利用率。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的目的是提供一種面向科學(xué)計(jì)算的浮點(diǎn)型數(shù)據(jù)并行無損壓縮方法,解決了現(xiàn)有技術(shù)中存在的高性能硬件設(shè)備和應(yīng)用低效率之間的矛盾的問題。
[0006]本發(fā)明所采用的技術(shù)方案是,一種面向科學(xué)計(jì)算的浮點(diǎn)型數(shù)據(jù)并行無損壓縮方法,將TMI方法由CPU轉(zhuǎn)移到GPU,并采用棋盤分割的方式得以充分利用GPU提供的眾核技術(shù),加快數(shù)據(jù)處理流程。
[0007]本發(fā)明的特點(diǎn)還在于:
[0008]CPU內(nèi)部的具體工作步驟為:
[0009]步驟1.1、初始化GPU,獲得GPU的各種參數(shù),并創(chuàng)建命令隊(duì)列;
[0010]步驟1.2、創(chuàng)建GPU的Kernel壓縮程序和Kernel解壓縮程序的執(zhí)行命令;
[0011]步驟1.3、申請(qǐng)保存壓縮完成后的有效數(shù)據(jù)位和標(biāo)志位數(shù)據(jù)的GPU內(nèi)存空間;
[0012]步驟1.4、轉(zhuǎn)換待壓縮數(shù)據(jù)使其變成可被GPU識(shí)別的維度和格式;
[0013]步驟1.5、將步驟1.4轉(zhuǎn)換后的數(shù)據(jù)由CPU發(fā)送到GPU ;
[0014]步驟1.6、根據(jù)命令隊(duì)列控制GPU端Kernel壓縮程序的運(yùn)行;
[0015]步驟1.7、根據(jù)命令隊(duì)列控制GPU端Kernel解壓縮程序的運(yùn)行。
[0016]步驟1.1具體為:首先獲取支持GPU的平臺(tái)信息;然后獲取GPU的設(shè)備信息;最后根據(jù)平臺(tái)信息和GPU的設(shè)備信息創(chuàng)建上下文和命令隊(duì)列;
[0017]其中,GPU的設(shè)備信息包括GPU的型號(hào),GPU能運(yùn)行的最大線程數(shù),GPU的內(nèi)存大小,GPU所支持的全局內(nèi)存大小和局部內(nèi)存大小。
[0018]GPU內(nèi)部的具體工作步驟為:
[0019]步驟2.1、接收CPU發(fā)送的數(shù)據(jù);
[0020]步驟2.2、獲取步驟2.1中接收到的數(shù)據(jù)的工作組編號(hào),根據(jù)該編號(hào)確定數(shù)據(jù)壓縮和解壓縮時(shí)的線程編號(hào);
[0021]步驟2.3、根據(jù)步驟2.2得到的線程編號(hào)和工作組編號(hào)確定哪部分?jǐn)?shù)據(jù)由哪個(gè)線程處理壓縮和解壓縮;
[0022]步驟2.4、采用TMI壓縮方法進(jìn)行數(shù)據(jù)壓縮,并將壓縮后的數(shù)據(jù)按位存儲(chǔ);
[0023]步驟2.5、采用TMI解壓縮方法進(jìn)行數(shù)據(jù)解壓縮。
[0024]步驟2.2中工作組編號(hào)的獲取具體為:將所有數(shù)據(jù)的維度視作全局工作空間,每個(gè)數(shù)據(jù)的位置編號(hào)視作相應(yīng)維度上的全局編號(hào);對(duì)全局工作空間分塊,將每塊視作工作組空間,塊的位置編號(hào)視作相應(yīng)維度上的工作組編號(hào);工作組空間內(nèi)的數(shù)據(jù)的位置相對(duì)工作組空間的位置視作局部位置。
[0025]步驟2.4的具體步驟為:
[0026]步驟2.4.1、內(nèi)存拷貝參考數(shù)據(jù)和被壓縮數(shù)據(jù),將其分別轉(zhuǎn)換為4個(gè)字節(jié)的整數(shù),
[0027]其中,參考數(shù)據(jù)是前一個(gè)被壓縮數(shù)據(jù);
[0028]步驟2.4.2、根據(jù)IEEE754格式,提取出參考數(shù)據(jù)和被壓縮數(shù)據(jù)的符號(hào)域、指數(shù)域和尾數(shù)域;
[0029]步驟2.4.3、保持被壓縮數(shù)據(jù)的符號(hào)域值不變;
[0030]步驟2.4.4、采用減法運(yùn)算得出被壓縮數(shù)據(jù)與參考數(shù)據(jù)的指數(shù)域差值,當(dāng)指數(shù)域差值的值較小時(shí),標(biāo)記相應(yīng)的標(biāo)志位;當(dāng)指數(shù)域差值的值較大時(shí),單獨(dú)存儲(chǔ)被壓縮數(shù)據(jù)的指數(shù)域,并標(biāo)記相應(yīng)的標(biāo)志位;
[0031]步驟2.4.5、采用減法運(yùn)算得出被壓縮數(shù)據(jù)與參考數(shù)據(jù)的尾數(shù)域差值,刪除尾數(shù)域差值頭部的連續(xù)冗余0,存儲(chǔ)有效數(shù)據(jù),同時(shí)標(biāo)記有效數(shù)據(jù)的個(gè)數(shù);
[0032]步驟2.4.6、采用位位相接的方式封裝所有數(shù)據(jù)尾數(shù)域差值的有效數(shù)據(jù)位,并封裝被壓縮數(shù)據(jù)的符號(hào)域、指數(shù)域及各種標(biāo)志位,即實(shí)現(xiàn)了數(shù)據(jù)的完全無損壓縮。
[0033]步驟2.5具體步驟為:
[0034]步驟2.5.1、根據(jù)尾數(shù)部分的標(biāo)志位值確定尾數(shù)域差值的有效數(shù)據(jù)位數(shù),并按位從尾數(shù)域的壓縮數(shù)據(jù)中取出該差值;然后由IEEE754格式可知該差值頭部所需的冗余O位數(shù),并對(duì)其進(jìn)行填充;最后根據(jù)參考數(shù)據(jù)的尾數(shù)值恢復(fù)出被壓縮數(shù)據(jù)的尾數(shù)域;
[0035]步驟2.5.2、根據(jù)指數(shù)部分的標(biāo)志位值,如果獲得的是指數(shù)域差值,根據(jù)參考數(shù)據(jù)的指數(shù)域恢復(fù)出被壓縮數(shù)據(jù)的指數(shù)域,轉(zhuǎn)到步驟2.3 ;如果獲得的是被壓縮數(shù)據(jù)的指數(shù)域,直接轉(zhuǎn)到步驟2.3 ;
[0036]步驟2.5.3、從壓縮數(shù)據(jù)中取出被壓縮數(shù)據(jù)的符號(hào)域;
[0037]步驟2.5.4、按照IEEE754格式,組合符號(hào)域、指數(shù)域和尾數(shù)域變成4個(gè)字節(jié)的整數(shù),并內(nèi)存映射該整數(shù)使其還原成被壓縮的浮點(diǎn)型數(shù)據(jù)。
[0038]本發(fā)明的有益效果是:本發(fā)明一種面向科學(xué)計(jì)算的浮點(diǎn)型數(shù)據(jù)并行無損壓縮方法,通過移植等手段,結(jié)合CPU與GPU混合異構(gòu)編程模型,運(yùn)用跨平臺(tái)語言O(shè)penCL進(jìn)一步優(yōu)化數(shù)據(jù)壓縮流程,加快數(shù)據(jù)處理速度,達(dá)到了高壓縮率與高速度化的平衡。
【附圖說明】
[0039]圖1是本發(fā)明并行壓縮方法中基于OpenCL的TMI并行壓縮策略示意圖;
[0040]圖2是本發(fā)明并行壓縮方法與TM1、OMPTMI的壓縮率比較圖;
[0041]圖3是本發(fā)明并行壓縮方法與TM1、OMPTMI的壓縮和解壓縮時(shí)間比較圖。
【具體實(shí)施方式】
[0042]下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)行詳細(xì)說明。
[0043]本發(fā)明一種面向科學(xué)計(jì)算的浮點(diǎn)型數(shù)據(jù)并行無損壓縮方法,主要針對(duì)單精度浮點(diǎn)型數(shù)據(jù)。結(jié)合尾數(shù)整型化-Think Mantissa as Integer (TH)串行壓縮方法的理論原型,提出基于眾核GPU的OpenCL并行TMI壓縮方法(CLTMI)。如圖1所示,通過移植等手段,將TMI方法由CPU轉(zhuǎn)移到GPU,并采用棋盤分割的方式得以充分利用GPU所提供的眾核技術(shù),加快數(shù)據(jù)處理流程。
[0044]CPU主要包括對(duì)GPU的初始化、對(duì)數(shù)據(jù)的轉(zhuǎn)換以及對(duì)KerneI程序的控制,具體步驟為:
[0045]步驟1.1、初始化GPU,獲得GPU的各種參數(shù),并創(chuàng)建命令隊(duì)列,具體為:
[0046]首先獲取支持GPU的平臺(tái)信息即是NVIDIA平臺(tái)還是AMD平臺(tái)或者其他種類的平臺(tái);然后獲取GPU的設(shè)備信息;最后根據(jù)平臺(tái)信息和GPU的設(shè)備信息創(chuàng)建上下文和命令隊(duì)列;
[0047]在該步驟中必須了解支持OpenCL運(yùn)行的環(huán)境參數(shù),包括OpenCL的運(yùn)行設(shè)備即GPU的設(shè)備信息包括GPU的型號(hào),GPU能運(yùn)行的最大線程數(shù),GPU的內(nèi)存大小,GPU所支持的全局內(nèi)存大小和局部內(nèi)存大??;根據(jù)這些參數(shù)不斷優(yōu)化OpenCL并行程序,同時(shí)避免出現(xiàn)數(shù)據(jù)量過大導(dǎo)致內(nèi)存不足,或者使分塊容量過大導(dǎo)致訪問越界等異常現(xiàn)象。
[0048]步驟1.2、創(chuàng)建GPU的Kernel壓縮程序和Kernel解壓縮程序的執(zhí)行命令,Kernel程序的命名必須與宿主機(jī)創(chuàng)建Kernel程序執(zhí)行命令時(shí)定義的名字完全相同,否則將出現(xiàn)程序可以編譯通過但運(yùn)行異常退出等情況;
[0049]步驟1.3、申請(qǐng)保存壓縮完成后的有效數(shù)據(jù)位和標(biāo)志位數(shù)據(jù)的GPU內(nèi)存空間,此處申請(qǐng)的內(nèi)存空間必須小于步驟1.1中獲得的最大內(nèi)存空間;
[0050]步驟1.4、轉(zhuǎn)換待壓縮數(shù)據(jù)使其變成可被GPU識(shí)別的維度和格式。CPU處理的數(shù)據(jù)屬于二維數(shù)據(jù),GPU雖常用于浮點(diǎn)型數(shù)據(jù)計(jì)算,并且也支持多維度數(shù)據(jù)處理,但使用OpenCL異構(gòu)編程模型時(shí),必須人工將多維度數(shù)據(jù)轉(zhuǎn)換成一維度數(shù)據(jù)。以二維數(shù)組為例,式(I)表示二維數(shù)組(^七82向一維數(shù)組data丨轉(zhuǎn)換:
[0051]data2[i, j] = Clata1 [i*Nl+j](I)
[0052]式⑵表示一維數(shù)組Clata1向二維數(shù)組data 2轉(zhuǎn)換:
[0053]Clata1 [i] = data2[i/Nl, i% NI] (2)
[0054]其中1、j表示數(shù)組下標(biāo),N1、Nx表示二維數(shù)組的維度大小。
[0055]步驟1.5、將步驟1.4轉(zhuǎn)換后的數(shù)據(jù)由CPU發(fā)送到GPU ;
[0056]步驟1.6、根據(jù)命令隊(duì)列控制GPU端Kernel壓縮程序的運(yùn)行;
[0057]步驟1.7、根據(jù)命令隊(duì)列控制GPU端Kernel解壓縮程序的運(yùn)行。
[0058]GPU主要包括對(duì)線程編號(hào)的獲取、數(shù)據(jù)的壓縮與解壓縮工作,具體步驟為:
[0059]步驟2.1、接收CPU發(fā)送的數(shù)據(jù);
[0060]步驟2.2、獲取步驟2.1中接收到的數(shù)據(jù)的工作組編號(hào),根據(jù)該編號(hào)確定數(shù)據(jù)壓縮和解壓縮時(shí)的線程編號(hào);
[0061]其中,工作組編號(hào)的獲取具體為:將所有數(shù)據(jù)的維度視作全局工作空間(GlobalWork Size),每個(gè)數(shù)據(jù)的位置編號(hào)視作相應(yīng)維度上的全局編號(hào)(Global ID);對(duì)全局工作空間分塊,將每塊視作工作組空間(Work Group),塊的位置編號(hào)視作相應(yīng)維度上的
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1