在线观看国产区-在线观看国产欧美-在线观看国产免费高清不卡-在线观看国产久青草-久久国产精品久久久久久-久久国产精品久久久

美章網 資料文庫 圖像壓縮感知的重構算法研究范文

圖像壓縮感知的重構算法研究范文

本站小編為你精心準備了圖像壓縮感知的重構算法研究參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。

圖像壓縮感知的重構算法研究

《電視技術雜志》2014年第十一期

1GPU并行計算模型

NVIDIA公司在2007年6月提出了CUDA(ComputeUnifiedDeviceArchitecture)統一處理架構,CUDA擁有兩個層次的并行,線程級并行實現的細粒度數據并行,和任務級并行實現的粗粒度并行。CUDA是一種不需要借助圖形學API就可以使用類C語言進行通用計算的開發環境和軟件體系[4],能夠利用NVIDIAGPU的并行計算引擎比CPU更加高效地解決許多復雜計算任務。JacketEn-gine是由AcclerEyes公司開發的一個以MATLAB為基礎的基于GPU的計算引擎,它屏蔽了底層硬件的復雜度,能夠使標準的MATLAB代碼在GPU上運行,利用GPU強大的計算能力,提高代碼的執行效率。

1.1CUDA線程層次CUDA支持大量的線程(Thread)并行,若干線程組成線程塊(Block),線程塊被組織成一維、二維或三維的線程網格(Grid),如圖1所示,1個Grid中含有M×N個Block,每個Block含有M×N個Thread。線程塊內的線程數以及網格內的線程塊數都是由<<<…>>>(執行配置運算符)確定,參數可以是整形或dim3類型(基于uint3定義的矢量類型,相當于由3個unsignedint型組成的結構體),當線程數以及線程塊數配置完畢后,就可以通過內置變量threadIdx和blockIdx來唯一地表示每個線程。

1.2CUDA存儲器層次GPU包含多種類型的存儲器:寄存器(Register)、共享存儲器(SharedMemory)、本地存儲器(LocalMemory)、全局存儲器(GlobalMemory)、常量存儲器(ConstantMem-ory)、紋理存儲器(TextureMemory)[6]。其中寄存器最靠近流處理器,其存取速度最快。當寄存器的空間不足時,數據就會被存儲在本地存儲器中,但是其存取速度極慢,這兩種存儲器都是線程私有的。共享存儲器可以被一個塊內所有的線程共有,擁有著與寄存器相同的訪問速度,是實現同一線程塊內所有線程間通信的最好途徑。全局存儲器位于顯存中,整個網格內的所有線程均可以對其訪問,全局存儲器的空間雖然很大,但是具有較高的訪問延遲。常數存儲器是一種位于顯存的只讀的地址空間,擁有緩存機制,可以加快訪問速度。其空間相對比較小,多用來存儲頻繁使用的只讀類型參數。紋理存儲器作為只存儲器,常用來對大量數據隨機訪問以及非對齊訪問。具體存儲層次如圖2所示。

1.3CUDA執行模式一個完整的程序是由工作在GPU上的多個內核函數(kernel)以及CPU上的串行代碼共同組成的,一個內核函數并不是一個完整的程序,它只是一個CUDA程序(見圖3)中可以被并行執行的步驟。CPU作為主機(Host)來控制程序整體的邏輯和任務調度,包括設備初始化、準備數據、分配空間等工作。GPU作為協處理器(設備端De-vice),運行一些高度并行化的部分。理想狀態下,CPU主要是完成清理上一個內核函數和啟動下一個內核函數,數據部分全部由GPU來完成[7]。一般而言,CUDA程序的基本模式為:1)CPU端分配內存空間和顯存空間;2)CPU端初始化內存空間;3)CPU端將所需的數據從CPU的內存中復制到GPU的顯存;4)GPU端執行內核函數;5)CPU端將內核函數的執行結果從GPU的顯存中復制到CPU的內存;6)CPU端處理數據并釋放空間。

1.4JacketJacket是由AccelerEyes公司開發的,以MATLAB為基礎的基于GPU的計算引擎,針對的是NVIDIA公司的CUDA架構的GPU平臺。Jacket集成了特殊的數據類型和專門函數,可以將現有的MATLAB程序實現在GPU上的加速。與此同時,Jacket提供了透明的數據傳遞,避免了CUDA或OpenCL等底層庫的編程復雜性,在Jacket中可以自動完成MEX文件的編譯和調用。此外,Jacket利用GPU強大的計算能力,優化了GPU函數,對大數據量的操作尤其是矩陣運算,加速效果十分理想。

2基于GPU的并行重構

通過實驗統計得到,OMP重構算法的主要耗時模塊產生在上述三項操作中,它們分別占總時間的20%~40%,50%~70%,2%~3%。因此在設計并行優化算法時,主要考慮的是將這三項操作放到GPU上實現,其他操作依舊在CPU上完成,避免因數據在CPU與GPU之間的頻繁傳遞而造成時間的過度浪費。

2.1利用CUDA優化加速本文在MicrosoftVisualStudio2010環境下,在.cu文件中編寫CUDA內核函數,通過主機端調用。首先創建并初始化CPU上的變量,為GPU上的變量申請空間用來存放y(測量值,長度為m的采樣信號)、Zr(重構向量,長度為n,初始化為0)、idx(用來存放每次迭代找到的最匹配列的索引)以及迭代過程中用到的一些中間變量。然后,進行數據傳遞,將CPU上的y復制到GPU的全局存儲器中。接下來就是GPU端的操作,首先,在GPU端對(矩陣A的2范數)進行初始化,初始化的過程中,每個線程計算一列的2范數,與文獻[5]相比,不僅計算過程有了速度上的提升,而且還省略了一次數據傳遞。然后,用兩個內核函數分別計算上面所列的第一個主要步驟并找出最大值的位置。接下來進入循環迭代,由于第一次迭代較為簡單,僅用一個內核函數即完成了第二個主要步驟,在剩下的迭代中,增加兩個內核函數來實現矩陣求逆的過程。最后,用一個內核函數更新殘差。至此GPU上的優化操作已全部完成。將得到的結果從GPU中傳回CPU,CPU端做數據的整理以及空間釋放工作。具體算法流程如圖4所示。

2.2利用JACKET進行優化加速選擇利用JACKET進行并行程序的設計,應該充分考慮到GPU的工作效率,將更多的時間用在GPU執行計算上,而不是數據傳遞上。在做并行化重構時,需要將數據做一些改變,使用JACKET時,數據在CPU和GPU之間的傳遞是通過簡單的數據類型的封裝來完成的。JACKET給出的類型有:gs-ingle、gdouble、glogical、gint8、guint8、gint32、guint32。數據從CPU到GPU可以由語句:A=gsingle(B)完成,數據從GPU到CPU可以由語句:B=double(A)完成。一旦GPU的數據結構已經建立,該GPU矩陣的任何操作都只能在GPU上進行,而不能在CPU上,要返回CPU計算,必須轉換為CPU類型。首先,在OMP進入迭代之前,將測量值以及測量矩陣復制到GPU上得到gs和gT。另外,為了避免迭代過程中,反復在GPU上創建增量矩陣,在進入迭代之前定義好一個GPU變量gAugT用來存放增量矩陣。在迭代過程中,將殘差值復制到GPU上,得到grn,在GPU完成gT×grn操作,并將結果傳回CPU端。然后將矩陣擴充操作在GPU上完成,這樣一來,最小二乘以及更新殘差操作用到的所有變量就都已存在GPU中,在GPU上完成后將結果傳回。算法流程圖如圖5所示。

3測試結果

為了驗證并行算法的速度優勢,本文給出了在不同環境下得到的對照結果。硬件環境:CPU-Intel(R)Core(TM)2DuoCPU3.00GHz,GPU-NvidiaGeForceGT630。軟件環境1:MicrosoftVisualStudio2010,CUDA5.0。軟件環境2:MATLAB2012b,Jacket2.3。通過選用不用長度的原始信號以及不同的測量率,記錄兩種不同方法的執行效率。表1是在并行環境1下利用CUDA進行優化加速的結果。表2是在并行環境2下利用JACKET進行優化加速的結果。由結果對比可以看出,不論是在何種環境下,利用GPU進行重構都要比傳統串行重構快速得多。從表1來看,利用CUDA進行優化加速時,隨著原始信號的長度以及稀疏度的增加(表現在n,k的增加),測量矩陣也相應增加,CPU和GPU上的耗時都會越長,但是加速比也會隨之增加。從表2來看,利用JACKET進行優化加速時,隨著原始信號的長度以及測量率的增加(表現在X和M×N的增加),CPU和GPU上的耗時會隨之增加,但是加速效果也會隨之增加。這也說明了,GPU特別適合處理那些算術計算密度高的問題,這樣一來,數據訪存延遲就會被復雜的計算隱藏。

4總結

本文不僅對現有的算法進行了優化,同時在不同的并行環境下進行了實驗對比,結果驗證了基于GPU的并行圖像壓縮感知的可行性。同時也說明了,GPU對那些計算密集度高的問題會有很好的加速效果。本文針對迭代中最耗時的幾個操作進行了優化,如果能達到理想的狀態,進一步優化,使得GPU將可利用資源達到最高,每個線程都可以發揮最大效益,減少顯存的消耗,這些都是下一步的工作方向。

作者:郭睿冉宋建新單位:南京郵電大學圖像處理與圖像通信實驗室

主站蜘蛛池模板: 欧美精品九九99久久在免费线 | 国产成人久久综合二区 | 久久激情综合色丁香 | 婷婷综合激情五月中文字幕 | 日日综合 | 久久久久女人精品毛片 | 国产精品久久久久免费 | 婷婷六月久久综合丁香可观看 | 日本在线视频免费看 | 久久国产视频精品 | 国产亚洲一级精品久久 | 亚洲欧美国产精品 | 波多野结衣亚洲 | 欧美乱妇高清无乱码在线观看 | 亚洲国产午夜 | 伊人网99 | 四虎永久在线精品 | 亚洲爽视频 | 欧美一区亚洲 | 亚洲国产成人精品女人久久久 | 亚洲国产精品二区久久 | 伊人色在线观看 | 欧美日韩精品一区二区三区四区 | 国产私拍福利精品视频网站 | 欧美日韩在线精品成人综合网 | 色婷婷丁香| 日韩成人中文字幕 | 国产精品1234区 | 水蜜桃18| 小蝌蚪视频在线观看国语版 | 在线观看视频你懂的 | 两性视频网 | 就爱草| 黄色污网站在线观看 | 99在线在线视频免费视频观看 | 在线免费观看毛片网站 | 中文字幕精品1在线 | 香蕉视频网站在线播放 | 国产黄色网 | 久久久久国产成人精品亚洲午夜 | 精品国产一区二区三区成人 |