?

GPU圖像并行處理設計模型研究*

2016-12-13 02:06全吉成王宏偉
艦船電子工程 2016年11期
關鍵詞:線程圖像處理程序

王 平 全吉成 王宏偉

(空軍航空大學航空航天情報系 長春 130022)

?

GPU圖像并行處理設計模型研究*

王 平 全吉成 王宏偉

(空軍航空大學航空航天情報系 長春 130022)

GPU通用計算的發展為圖像處理提供了新的技術手段,目前一些圖像處理算法已經移植到GPU中且得到了較好的加速效果,但是并沒有形成通用的并行設計模型,推廣性差。為此,論文在研究GPU結構特點以及已有的GPU圖像處理并行算法的基礎上,提出了單GPU和多GPU圖像并行處理設計模型,并通過圖像平滑并行算法在GPU中的執行驗證了該模型的有效性。試驗結果表明,該模型在GPU圖像處理中通用性較好,為更多算法的并行化處理提供了理論借鑒。

圖像算法; 并行化; GPU; 模型; 通用性

Class Number TN911

1 引言

隨著圖像獲取手段的發展,獲取圖像的效率逐漸加快以及圖像分辨率急劇增長,現有的圖像處理工具已經無法滿足海量圖像數據的快速處理,造成影像數據的大量堆積。因此如何快速、高效地進行海量圖像數據處理是圖像處理領域亟待解決的問題。

圖形處理器(Graphic Process Unit,GPU)在通用計算方面取得了快速發展,計算能力已經遠遠超過了CPU,成為實現高性能計算的重要部件[1]。近年來,不少專家學者將圖像處理算法移植到GPU中[2~5],并取得了很高的算法加速比,加快了圖像算法并行化處理的發展。這些映射到GPU中算法只是一些特定的算法,并沒有形成通用的GPU圖像處理并行設計模型,難以推廣到其他的圖像處理算法中。

本文根據GPU體系結構的特點以及對已有的GPU圖像處理并行算法的分析,提出了通用的GPU圖像并行處理設計模型,并通過圖像平滑算法進行GPU并行處理來驗證模型的有效性,進而可以將模型擴展到更多圖像處理算法中。

2 GPU圖像并行處理設計模型

GPU圖像處理并行設計模型主要描述圖像串行算法進行GPU并行處理的一般性的解決方案。 這樣可以讓我們復用已經建立的設計模型,為自己的算法并行化問題找到有效的解決方法。在大量圖像處理算法并行化分析的基礎上,本文提出的針對單個GPU的通用的GPU圖像處理并行設計模型包括以下四個步驟:串行算法的并行化分析,并行粒度劃分,映射到GPU中,程序的優化,如圖1所示。如果含有多個GPU,并行設計模型應該包括五個步驟:串行算法的并行化分析,任務劃分,并行粒度劃分,映射到GPU中,程序的優化,如圖2所示。

圖1 GPU圖像并行處理設計模型

圖2 GPUs圖像并行處理設計模型

1) 串行算法的并行化分析:串行算法的并行化分析就是找尋串行算法中計算量最大、處理時間最耗時、數據相關性小的部分,然后對其進行并行化分析。這主要以下三個方法[6]:

(1)根據算法中已有的并行性將算法改變成并行算法;

(2)從算法本身要處理的問題特征著手把傳統算法并行化;

(3)根據已有經典并行算法的設計思路,改造傳統圖像處理算法。

2) 任務劃分:在并行算法中,將整個任務分成若干個子任務,每個GPU對應一個子任務。在多核CPU上啟動多個線程,每個線程控制一個設備,實現設備間的并行計算。

3) 并行粒度劃分:GPU中執行的核函數Kernel可以看做一個線程網格,一個線程網格包含若干個線程塊,每個線程塊包含若干個線程,如圖3所示。在GPU具體執行中,線程塊和塊中線程被調度分別實現粗粒度和細粒度并行[7]。并行粒度劃分就是將圖像并行算法映射到線程塊和塊中的線程中,從而實現GPU內粗、細粒度并行執行。

圖3 GPU內部線程組織方式

4) 映射到GPU中:將并行算法映射到GPU眾核的架構上,通過多線程并行執行來實現算法的并行運行。具體步驟如下:

(1)分配顯存空間,將影像數據從主存傳輸到顯存中;

(2)設置執行配置即設置線程塊大小和數量,啟動核函數Kernel;

(3)將結果影像數據從顯存傳輸到主存。

5) 程序優化:在以上幾個步驟完成后,程序能夠正確運行,并且結果驗證準確,這是程序優化的前提,也是程序優化的起點。程序優化包括存儲器優化、指令優化和編碼優化。存儲器優化是指優化存儲器利用率和最大化全局存儲器吞吐量[8]。指令優化是指使用GPU提供的存儲器控制、線程控制等各種優化指令,能顯著提升程序的性能。編碼優化指程序編寫時,盡可能少用if分支語句;使用#unroll指令展開循環語句;在保證精度的情況下,盡可能的使用專用的算術指令等[9~10]??偠灾?,程序優化的核心思想是改進計算訪存比以及各存儲層次上的延遲隱藏[11]。

3 并行設計模型的驗證

3.1 算法并行化分析

圖像平滑算法是針對單個像素進行計算,各個像素之間的操作沒有相關性,而且計算量大,并行程度高,適合移植到GPU中進行并行處理。

3.2 并行粒度劃分

平滑后的圖像與GPU線程網格對應,將圖像進行分塊,使每個圖像塊與一個線程塊對應,每個圖像分塊中像素與線程塊中的線程相對應,保證線程塊中線程對每一個像素進行處理。這樣就實現了線程塊之間的在SM中粗粒度并行執行,以及線程塊內的線程在CUDA核心中細粒度并行執行。

3.3 映射到GPU中

根據圖像大小分配顯存大小,將圖像數據從主存傳輸到顯存。然后設置線程塊大小和數量,啟動核函數,最后將結果影像數據從顯存中傳輸到主存中合成結果影像。部分代碼如下所示:

cudaMalloc((void**)&ImageDevice , ImageSize); //在GPU上分配內存空間

cudaMemcpy(ImagedataDevice,ImagedataHost,ImageSize,cudaMemcpyHostToDevice);//將圖像數據由內存復制到顯存中

dim3 dimBlock(m,n)

dim3 dimGrid((width+dimBlock.x-1) /dimBlock.x) , (height+dimBlock.y-1) /dimBlock.y) //劃分線程塊大小和數量

Kernel<<>>(ImagedataDevice,width,height); //啟動GPU核函數

CopyDataFormDevice(ImagedataOut,ImagedataDevice); //將GPU上運算結果傳輸到主機內存

FreeDeviceAndHost();//釋放主機端和GPU端的內存

3.4 程序優化

經過將并行算法映射到GPU中能夠正確運行且結果驗證準確,才可以在此基礎對程序做進一步的優化,來提高程序的性能。平滑算法中每一個像素的計算都使用相同的平滑算子,而且共享存儲器讀寫速度非???,可以被同一線程塊的所有線程訪問。因此為降低對全局存儲器DRAM內存的存取,將平滑算子傳入共享存儲器中,從而提高數據的存取速度。

4 實驗結果與分析

實驗平臺使用GTX580顯卡,全局存儲器大小為1.5G,共享存儲器為48KB,有16個流多處理器,512個流處理器。CPU為AMD Athlon (tm) II X4 640,內存為10G。分別在CPU和單GPU上進行圖像平滑操作。

測試數據為256×256、512×512、1024×1024、2048×2048、4096×4096、8192×8192的灰度圖。將不同分辨率的圖像分別在CPU、原始GPU和程序優化后GPU進行平滑處理,對處理時間進行計時,取實驗10次的結果得到平均執行時間。實驗結果如表1所示。

表1 算法在不同環境下的運行時間

從表1可以看出,在GPU環境下不同分辨率的圖像進行平滑操作的時間明顯縮短,經過程序優化之后,執行時間又得到了進一步減小。不同分辨率圖像在GPU和優化后GPU上運行時間與在CPU上運行時間的加速比曲線如圖4所示。

圖4 GPU優化前后并行算法加速比

從圖4可以看出隨著圖像分辨率的增大,優化前GPU和優化后GPU的并行算法加速比曲線都呈上升趨勢,當圖像分辨率為8192×8192時,優化前GPU和優化后GPU的并行算法加速比都分別達到最大的34.3倍和37.3倍。

圖5 雙GPU并行處理流程圖

對圖像平滑算法進行雙GPU試驗時,需要按GPUs圖像并行處理設計模型的步驟2對任務進行劃分,將圖像數據拆分為兩部分,分別在兩個GPU上并行處理。在雙GPU環境下,CPU需創建兩個線程分別控制不同的GPU設備進行圖像處理,然后在CPU中合成最終結果,處理流程如圖5所示。

對雙GPU圖像平滑算法進行測試時,使用單GPU實驗圖像數據,結果如表2所示。

表2 單GPU和雙GPU的處理時間比較

從表2可以看出,當圖像分辨率較低時,雙GPU處理速度稍低于單GPU處理速度,隨著分辨率增加到一定程度,雙GPU處理速度優勢才越來越明顯。

從單GPU和雙GPU兩個實驗結果中表明,并行設計后的圖像平滑算法在GPU中取得了很好的加速效果,從而驗證了GPU圖像處理并行設計模型的有效性。

5 結語

本文在對大量圖像并行算法研究的基礎上,提出了GPU圖像處理并行設計模型,通過并行平滑算法在GPU中的執行從而驗證了模型的有效性。該模型簡單易懂,通用性強,為更多圖像處理算法并行化并移植到GPU中提供了理論基礎。

[1] 袁濤,馬艷,劉定生.GPU在遙感圖像處理中的應用綜述[J].遙感信息,2012,27(6):110-117.

[2] 方留楊,王密,李德仁.CPU和GPU協同處理的光學衛星遙感影像正射校正方法[J].測繪學報,2013,42(5):668-675.

[3] 李朋龍,鄧非,何江,等.GPU-CPU協同航空影像快速正射糾正方法[J].測繪地理信息,2016,41(2):44-47.

[4] 王化喆,魏先勇.基于GPU的遙感圖像前期處理算法研究與應用[J].現代電子技術,2016,39(3):47-50.

[5] D GRANATA, U AMATO, B ALFANO. MRI denoising by nonlocal means on multi-GPU[J]. Journal of Real-Time Image Processing,2016:1-11.

[6] 吳頎峰.基于GPU的數字圖像處理算法研究[D].贛州:江西理工大學,2011.

[7] 肖漢,張祖勛.基于GPGPU的并行影像匹配算法[J].測繪學報,2010,39(1):46-51.

[8] 肖漢.基于CPU_GPU的影像匹配高效能異構并行計算研究[D].武漢:武漢大學,2011.

[9] 張舒,褚艷利.GPU高性能運算之CUDA[M].北京:中國水利水電出版社,2009.

[10] NVIDIA Corporation. CUDA Programming Guide 1.0[EB/OL]. http://www.nvidia.com,2009(8):11.

[11] 馬安國,成玉,唐遇星,等.GPU異構系統中的存儲層次和負載均衡策略研究[J].國防科學技術大學學報,2009,31(5):38-43.

Parallel Design Model of GPU Image Processing

WANG Ping QUAN Jicheng WANG Hongwei

(Department of Aeronautic and Astromautic Intelligence, Aviation University of Air Force, Changchun 130022)

The development of GPU general computing provided a new technique for image processing, and some image processing algorithms had been transplanted to GPU and got a better acceleration effect. But it could not form a general parallel design model. Thus, based on the study of the characteristics of GPU structure and the existing parallel algorithms of GPU image processing, this paper proposed a parallel image processing design model of single GPU and multi GPU. And this paper took the algorithm design of parallel image smooth as an example to testify the effectiveness of this model. The experimental results showed that the proposed model had good generality, and it could provide a theoretical reference for the parallel processing of more algorithms in the GPU image processing.

image algorithms, parallel, GPU, model, generality

2016年5月6日,

2016年6月25日

王平,男,碩士研究生,研究方向:數字圖像處理和GPU并行計算。全吉成,男,博士,教授,博士生導師,研究方向:二維可視化技術。王宏偉,男,碩士,講師,研究方向:數字圖像處理和地理信息系統。

TN911

10.3969/j.issn.1672-9730.2016.11.021

猜你喜歡
線程圖像處理程序
海戰場偵察圖像處理技術圖譜及應用展望
人工智能輔助冠狀動脈CTA圖像處理和診斷的研究進展
實時操作系統mbedOS 互斥量調度機制剖析
給Windows添加程序快速切換欄
基于國產化環境的線程池模型研究與實現
基于ARM嵌入式的關于圖像處理的交通信號燈識別
試論我國未決羈押程序的立法完善
機器學習在圖像處理中的應用
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合