?

基于異構平臺的圖像中值濾波的OpenCL加速算法

2024-03-15 06:47肖詩洋王鐳杜瑩肖漢
關鍵詞:并行算法中值工作組

肖詩洋,王鐳,杜瑩,肖漢

(1.東南大學 土木工程學院,江蘇 南京 211189;2.鄭州師范學院 信息科學與技術學院,河南 鄭州 450044;3.鄭州師范學院 地理與旅游學院,河南 鄭州 450044)

外界環境、傳感器件的質量等各種因素會對圖像在采集、傳輸和存儲的過程中產生干擾.引入的噪聲致使圖像質量下降,會嚴重影響圖像后續處理的效果.因此,為抑制圖像的噪聲,在圖像預處理中需要對圖像去噪.噪聲消除是蜂窩移動通信、圖像處理、雷達、聲納及其他應用中需要解決的主要問題之一[1].

目前圖像去噪方法有很多種,圖像的噪聲可根據噪聲類型選用空間域方法或變換域方法進行去噪,如中值濾波器、形態濾波器、高斯濾波器等.基于排序統計理論的中值濾波器是一種非線性數字濾波器,常用于消除圖像中的脈沖噪聲或椒鹽噪聲.語音、圖像和數字信號處理中的平滑操作可用中值濾波實現.非線性中值濾波器既可以有效地消除脈沖干擾和隨機噪聲,又可實現對圖像的邊緣信息的充分保留.在大數據技術的推動下,數字圖像分辨率快速提高,對圖像處理算法的實時性和處理效率都提出了較高的要求.因此,探索高效快速的圖像處理方法和理論,是提高應用系統能力的重要需求,也是對圖像處理技術發展提出的科學難題之一[2].

利用現場可編程門陣列(field programmable gate array,FPGA)或數字信號處理器(digital signal processor,DSP)實現實時圖像中值濾波處理,要求增添額外的硬件,系統的復雜度和費用會增加.隨著將多核CPU處理單元引入到并行系統,需要對多核CPU中的每個CPU內核進行編程.該方法操作繁瑣,編程量大.近年來,在科學計算和工程計算領域中的加速已廣泛運用圖形處理器(graphics processing unit, GPU),較于CPU,GPU提供了更強勁的計算能力和更大的數據讀寫帶寬.統一計算設備架構(compute unified device architecture,CUDA)使研究人員可以對GPU進行更高效的編程,GPU的軟件生態環境得到了質的提升.但CUDA系統只適用于NVIDIA系列的GPU.面向異構系統結構的開放、免費的并行編程標準開放式計算語言(open computing language,OpenCL)則可適用于任意一種并行處理器.OpenCL支持CPU、GPU、FPGA等并行處理器,擁有獨特的任務并行執行模型,特別有利于支持異構計算[3].

圖像中值濾波算法是一種計算密集型算法,算法的中值濾波處理對算法的性能造成很大的影響.隨著圖像像素數據量的增大,算法的計算量迅速增長,進而大幅增加了算法處理時間,算法性能成為亟待解決的問題.而異構計算成為改善算法性能的一種很好的解決方案.本研究將采用OpenCL編程模型,圍繞單GPU對中值濾波算法的并行化、算法的深度優化和多種并行計算方案的比對研究等問題展開.

1) 提出了一種基于OpenCL的圖像中值濾波并行算法.該算法既具有29.74倍加速比的高速去噪功能,又能夠很好地在不同GPU平臺中實現可移植性.

2) 采用了多元化的性能對比標準.本文在多種并行計算平臺上實現了對圖像中值濾波的處理,測試了3種并行方式對算法性能的影響.將基于OpenCL的中值濾波(OpenCL-based median filtering, OCL_MF)并行算法、基于OpenMP的中值濾波(OpenMP-based median filtering, OMP_MF)并行算法、基于CUDA的中值濾波(CUDA-based median filtering, CUDA_MF)并行算法以及相關文獻的算法進行性能比較,從橫縱2個方向的性能比較看出,OCL_MF并行算法均取得了較好的性能提升.

1 相關研究

經過多年的不懈努力,圖像中值濾波算法在算法優化上取得了不少的成果.Zhao等[4]通過改進的加權中值濾波器,在GPU上實現了快速的紋理過濾.PANG等[5]提出了一種自適應中值濾波器去除圖像中的隨機值脈沖噪聲,易于并行處理的實現.Liu等[6]通過并行隨機電路的硬件實現了大量隨機數排列,提高了中值濾波處理效率.Cadenas等[7]研究了一種快速尋找中位數的方法,用于中值濾波算法,提高了降噪效率.Oded[8]設計了基于GPU直方圖運算的中值濾波軟件并行可擴展算法,提高速度60倍.李余錢等[9]通過基于FPGA的中值濾波算法確定自適應閾值來實現Sobel邊緣檢測的方法,提高了系統的實時性.Sachin等[10]提出了一種基于single rogram multiple data (SPMD)的分時處理的中值濾波算法,相比基于remote method invocation (RMI)方式的分布系統性能更佳.劉佳等[11]提出了一種多處理器NoC結構的中值濾波算法,處理速度提高了3.6倍.陳思潤等[12]使用ARM硬件架構的Cortex-A處理器,運用SIMD數據級并行計算技術NEON實現了中值濾波并行算法,速度提高了17倍.Zhao等[13]提出了一種基于GPU的實時加權中值濾波器,提高了算法的執行效率.Mao等[14]設計了基于GPU的加權中值濾波算法,應用于油氣勘探數據處理平臺,獲得了4倍加速比.廖文獻等[15]在Cortex嵌入式多處理器系統上進行了圖像中值濾波算法的并行化,速度提高了近4倍.Mursaev等[16]設計了一種基于FPGA的二維中值濾波器,提高了處理速度.張怡卓等[17]設計了基于FPGA硬件的并行中值濾波算法,獲得了3.68倍加速比.Vivek等[18]提出了基于具有深度流水線的FPGA的中值濾波算法,提高了去噪速度.

總之,上述研究工作在中值濾波算法方面取得了很多進展.有些通過改進中值濾波算法來提高去噪速度,有些提出了基于FPGA、ARM和GPU等計算平臺的并行算法,應用于實際系統中提高處理速度,有些是在特定硬件平臺上加速中值濾波算法的處理效率.然而,各種加速算法的性能提高效果不理想,特別是這些加速算法都不具有平臺獨立性特點,只能在特定的硬件平臺或應用中實現性能提升.本文擬分析圖像去噪中經典的中值濾波算法,利用熱點分析法將耗時最長的功能模塊從中值濾波算法中找出.從而使用OpenCL對這些功能模塊進行GPU并行化.借助GPU在大規模并行運算上的優勢,實現對中值濾波算法的CPU+GPU協同計算,有效縮短算法執行時間和實現算法在不同GPU計算平臺上的性能移植.

2 算法的研究與分析

2.1 算法基本過程

中值濾波器作為一種非線性濾波器,是一種基于排序統計理論的有效抑制噪聲的非線性信號處理技術[19].1970年Tukey提出了中值濾波器并在一維信號處理技術中應用,后又被二維圖像信號處理技術采用.在一定條件下,它可較好地克服平均值濾波、最小均方濾波等線性濾波器所產生的圖像細節模糊問題,對降低脈沖干擾及圖像掃描噪聲非常有效[20].

中值濾波算法是指用像素點鄰域內的所有像素點的灰度值的中位數代替像素點的灰度值,為了保證取中位數的便利性,鄰域內的像素點的數目必須是正奇數,可用式(1)來表示.

(1)

圖1 3×3濾波窗口Fig.1 3×3 filtering window

中值濾波的具體實現步驟如下:

1)在圖像中遍歷所有像素點,并以每個像素點為中心形成一系列中值濾波窗口;

2)將濾波窗口內的各個像素的灰度值讀取出來;

3)把這些灰度值進行大小排序;

4)將這些灰度值的中位數賦給對應濾波窗口中心位置的像素,作為最終的輸出結果.

2.2 算法熱點分析

對于像幅大小為height×width的圖像進行的中值濾波算法主要包括以下模塊:1) 擴充圖像功能.拓展過程要求在左右方向進行原圖像拓展和上下方向拓展原圖像.該過程的時間復雜度為O(height×width+height×MODELDIM/2+width×MODELDIM/2.2)圖像中值濾波功能.需要將圖像中所有像素點的鄰域進行中值濾波處理,需要執行height×width次,其時間復雜度為O(height×width).同時提取濾波窗口覆蓋下圖像子塊中像素點的灰度值,其時間復雜度為O(MODELDIM2/4).在圖像子塊中的灰度值進行排序,時間復雜度為O(MODELDIM4).由此可得,圖像中值濾波算法的時間復雜度為O(height×width×MODELDIM4),模塊2)是該算法的核心環節.

為實現圖像中值濾波算法的并行化,首先針對基于CPU的中值濾波(CPU-based median filtering, CPU_MF)算法進行熱點分析,定位算法的耗時步驟.CPU_MF算法在進行熱點分析時,是在像幅大小為5 471×5 682的圖像上進行測試,采用bmp圖像格式.將clock()函數插入到CPU_MF算法各主要步驟之間進行時間測試,獲得各主要步驟運算前后的時間點值,通過計算得到CPU_MF算法主要步驟的時間統計和整個算法的運行時間.

從表1中可以看出,圖像中值濾波算法耗時主要集中在第2步.該步驟運行時間占串行算法總執行時間的百分比為90.47%,其他函數處理時間只占據了不到1 s的時間,說明圖像中值濾波步驟是串行算法的性能瓶頸所在.如果采取一定并行措施大幅降低中值濾波模塊的處理時間,算法就可以獲得良好的加速效果.

表1 圖像中值濾波算法各步驟運行時間及占比

2.3 算法可并行化

算法自身存在的任務依賴性影響著算法的可并行性.關聯性越低的任務,其并行效果越好,反之則效果越差.中值濾波計算過程需要改進,以適合GPU的并行計算架構的特點,并能夠充分利用GPU的各種具有各自優勢的存儲器.本文在圖像邊界處理時,將待處理的原圖像矩陣行和列各補MODELDIM/2行和MODELDIM/2列.擴展處理圖像后,所有待處理像素矩陣均處于擴展圖像像素矩陣的內部.此時對于每個像素點的處理均可采用一致的算法實現,避免了分支處理,實現過程的高度統一得以保證,算法的并行潛力進一步提高.因此,可以分析得出圖像中值濾波功能具有三級并行性:

1)像素級并行:椒鹽噪聲是以黑白點的形式疊加在圖像上,去噪則要對圖像中每個像素點的灰度值進行變換處理,這種任務具有相互獨立適于并行的特點.

2)圖像區域中值排序級并行:像素點鄰域中圖像數據排序和計算中值任務相互獨立,適于并行執行.

3)窗口級并行:對每個濾波窗口覆蓋下的圖像域處理任務相互獨立,適于并行處理.

中值濾波算法的并行性如圖2所示.圖2a中綠色區域為原始圖像待處理區域,局部處理時鄰域大小為3×3,白色區域為擴充圖像區域.像素點用方塊代表.在中值圖像濾波處理中,若對像素點A進行處理,即將子圖像塊1中的數據提取出來,進行數據排序和A像素點的灰度值處理等操作.然后依次對像素點B、C…X、Y進行處理.由于一系列子圖像區域之間沒有相互依賴性,所以,中值圖像濾波算法適于并行化處理.

a.擴充圖像;b.像素點鄰域

由此可見,圖像中值濾波算法的計算量非常大并且又具備很強的并行性.因此,算法適合利用GPU計算平臺進行大規模并行計算.針對以上分析,本文設計實現了圖像中值濾波算法在OpenCL計算平臺上的naive版本.采用OpenCL的多工作項對圖像中值濾波功能部分進行并行計算,一個工作項負責計算一個像素點鄰域的中值,如果系統啟動w個工作項,則算法的計算時間復雜度降為O((height×width×MODELDIM4)/w).

3 圖像中值濾波算法的OpenCL實現

3.1 算法的加速策略

3.1.1 GPU核函數的設計與實現

設計內核的索引空間,將工作組和工作項的大小確定下來,即設定處理單元和計算單元的大小進行并行計算.主要實現提取像素點鄰域灰度值,濾波窗口內像素值的冒泡排序和計算鄰域中位數并更新至像素點.詳細設計如下:

2) 在采用OpenCL并行設計時,采用2層并行模式.將整幅圖像在邏輯上劃分成個子圖像塊,網格中的一個工作組對應處理圖像中的某個子圖像塊,即為粗粒度并行.NDRange索引空間中的工作項依據索引地址和濾波窗口大小,提取位于全局存儲器中相應像素點鄰域的灰度值.鄰域像素值用冒泡法進行排序,計算得到鄰域像素點的中位數,并將相應更新的灰度值數據寫入主存空間的像素點,即為細粒度并行.圖像中值濾波并行設計如圖3所示.

圖3 計算空間并行化劃分Fig.3 Parallel partition of computational space

3) 粗粒度的工作組并行和細粒度的工作項并行組成了OCL_MF并行算法計算架構.粗粒度并行存在于同一N-NDRange索引空間內眾多工作組之間,工作組之間無需進行數據交換和通信.這樣,系統獲得了可擴展性:由于在任意一個計算單元上都可以執行工作組子任務,所以,在核心數量不同的GPU上都能正常運行OCL_MF并行系統.細粒度并行存在于同一工作組內的工作項之間,同一工作組內的工作項之間可以進行數據交換和通信.因此,工作組中的不同工作項可通過(work_group_barrier)進行同步處理.

在OpenCL的執行模型中,需要滿足以下3個方面的限制:1)一個計算單元能夠支持并行運行工作項總量的限制;2)一個計算單元能夠支持并行運行工作組總量的限制;3)一個工作組能夠支持并行運行工作項總量的限制.一個計算單元所能并行運行的工作項總數是確定的,為了獲得OCL_MF算法的最大并行計算效率,工作組中所包含的工作項數目的設計至關重要.在對OCL_MF并行算法進行GPU實現的過程中,采用計算能力為5.0的GPU.其每個計算單元最多可以激活的工作項數目為2 048.在warp中1次可調度32個工作項,因此,為了提高并行效率,1個工作組容納工作項數應是32的倍數.同時鑒于工作組中寄存器等資源的限制,設計工作組的大小為16×16=256.256小于工作組中對最大工作項數1 024的限制.每個計算單元將執行2 048/256=8個工作組,小于在計算單元上至多激活工作組數32的限制.因此,GPU中的所有工作項和工作組都同時處于并行計算狀態.

公民性缺失抑或制度供給不足?—對我國社區參與困境的微觀解讀……………………………徐 林 徐 暢(32)

3.1.2 工作項坐標的索引機制

圖像中值濾波器是用待處理像素相鄰范圍內的幾個像素的中位數來代替該點的像素值.對一個子圖像塊數據進行中值濾波處理時,對圖像塊中每個像素數據的處理是無任何數據相關的.因此,可以將對每個像素數據的處理映射到工作組的相應工作項中.每個工作組中的工作項均可獲得二維ID索引位置,將相應像素點的鄰域數據調度到處理單元中處理.像素點和工作項之間的位置映射關系,如下所示:

workItemx=get_local_id(0)+get_group_id(0)*get_local_size(0),

(2)

workItemx=get_local_id(1)+get_group_id(1)*get_local_size(1),

(3)

其中,get_local_id(0)和get_local_local_id(1)分別為工作項在工作組中在x和y方向上的索引號.get_group_id(0)和get_group_id(1)分別為工作組在索引空間中在x和y方向上的索引號.get_local_size(0)和get_local_size(1)分別為工作組在x和y方向上的維度.

3.2 優化設計

3.2.1 設備與主機間的通信優化

減少在設備和主機之間的數據傳輸是OCL_MF并行濾波算法的設計關鍵.由于設備與主機間的數據傳輸帶寬遠低于設備之間的數據傳輸帶寬,若設備和主機之間數據傳過于頻繁,系統將陷入傳輸瓶頸而不能充分發揮GPU的并行計算能力,計算效率降低.為了降低傳輸數據頻度,OCL_MF把中值濾波功能中的全部計算任務全部映射到GPU中.一方面減少了中間數據在設備和主機之間的傳入傳出操作,另一方面一次性在設備和主機之間進行圖像數據傳輸.這種設計大大縮減了傳輸次數,GPU的計算能力得到充分利用,計算密集度提高.

3.2.2 工作組資源配置優化

在OpenCL框架中,系統定期在不同warp間進行切換以進行工作項調度,以滿足對計算單元中計算資源的充分利用.同一指令是在同一warp中的32個工作項間一同執行,因此,每個工作組中工作項數量應是32的整數倍,每個維度上的大小將根據任務量的情況確定.表2顯示了像幅大小為3 241×3 753時,系統中設置不同數量工作項時的運行時間.由表2可見,采用16×16的工作組維度時,系統性能最佳.

表2 工作組維度對運算速度的影響

4 實驗環境與實驗設計

4.1 實驗環境

1)硬件平臺.選取2個不同計算平臺的目的是驗證性能可移植性.CPU系統均為具有六核心的Intel Core i7 8700,主頻為3.2 GHz,系統存儲器為16.0 GB.2種GPU計算平臺的性能參數如表3所示.

表3 GPU計算平臺性能參數

4.2 實驗結果

開展多組數據的對比實驗,需要對圖像數據進行預處理,通過剪裁取得了圖像大小分別為640×480、561×762、1 354×1 785、2 265×2 746、3 241×3 753、5 471×5 682、7 215×7 634和8 146×8 357共8組實驗數據.

圖4a是原始圖像,圖4b-e分別為用CPU_MF、OMP_MF、CUDA_MF和OCL_MF系統進行處理后的圖像.

a.原始噪聲圖像;b.CPU_MF效果圖;c.OMP_MF效果圖;d.CUDA_MF效果圖;e.OCL_MF效果圖

為檢驗圖像中值濾波算法的性能本文共設計4組實驗:第1組運行CPU_MF串行中值濾波算法,第2組運行OMP_MF并行中值濾波算法,第3組運行CUDA_MF的并行中值濾波算法,第4組運行OCL_MF并行中值濾波算法.針對測試圖像,4組中值濾波系統被多次運行,計算出各組中值濾波算法的平均耗時,數值結果保留小數點后2位,串/并行中值濾波算法執行時間對比如表4所示.

表4 不同計算平臺下圖像中值濾波算法執行時間

定義加速比

(4)

其中,s為加速比,Ts是CPU_MF串行算法執行耗時,Tp是并行算法執行耗時.

定義相對加速比1 OMP_MF算法運算耗時與基于NVIDIA GPU的OCL_MF算法運算耗時的比值.

定義相對加速比2 CUDA_MF算法運算耗時與基于NVIDIA GPU的OCL_MF算法運算耗時的比值.

為了客觀評估系統的性能,采用了加速比以反映并行算法相比CPU串行算法整體速度改善情況.為了測評不同并行算法的性能,采用了相對加速比1以反映基于NVIDIA GPU的OCL_MF算法相比OMP_MF算法的性能改善情況,相對加速比2以反映基于NVIDIA GPU的OCL_MF算法相比CUDA_MF算法的性能改善情況.具體如表5所示.

表5 不同計算平臺下圖像中值濾波并行算法性能對比

4.3 CPU與GPU結果一致性實驗

縮短圖像處理時間是中值濾波并行處理的目的,以求得更高圖像降噪速度.但是,若以損失圖像質量為代價,并行化處理就沒有了意義.下面進行圖像中值濾波效果分析.

4.3.1 宏觀層面結果一致性

如圖4可見,原始圖像是一組被椒鹽噪聲污染的圖像,圖像中均疊加有許多黑白噪聲點.原始圖像經過串行/并行圖像中值濾波處理后,去掉了大部分的黑白噪聲點,各幅圖像均變得更加平滑,對于去除脈沖型加性噪聲效果很好.同時,圖像中值濾波算法采用CPU串行實現,OpenMP多線程并行實現,CUDA架構下GPU實現和OpenCL異構平臺實現,四者的濾波變換效果一樣.

4.3.2 微觀層面結果一致性

采用圖像灰度值直方圖來表示經過串行系統和并行系統處理后的圖像數據,如圖5所示.對比分析可見,從微觀層面上看,中值圖像濾波經過串行和并行處理后的圖像直方圖均一樣.

a.串行處理結果;b.OpenMP處理結果;c.CUDA處理結果;d.OpenCL處理結果

因此,從宏觀和微觀2個層面來看,中值圖像濾波串行算法和并行算法雖然在設計方法和執行時間上不同,然而在圖像處理的結果仍保持一致,算法的正確性和可行性得到驗證.

4.4 實驗結果分析

4.4.1 不同計算平臺上中值濾波算法運算時間分析

通過對圖6的分析可見,當計算規模較小時,中值濾波算法采用GPU并行計算加速效果較為明顯,獲得了29.74倍的最大加速比.如像幅大小為561×762時,CPU_MF算法計算時間為149.00 ms,OMP_MF算法計算時間為86.61 ms,CUDA_MF并行算法計算時間為5.21 ms,OCL_MF并行算法計算時間為5.01 ms,傳統串行方式和多核并行方式的耗時遠高于OpenCL并行加速計算耗時.當像幅較大時,CPU_MF算法計算時間呈現近乎直線的上升趨勢,耗時急劇增加.OMP_MF算法的計算時間表現出緩慢上升,而GPU并行算法的計算時間則表現出更為平緩的上升.同時,像幅大小超過5471×5682時,GPU并行算法耗時出現了較快的增長趨勢.

圖6 中值濾波算法運算時間對比Fig.6 Comparison of operation time of median filtering algorithm

GPU設備和CPU主機相互協作完成算法的處理過程,期間大量的數據需要交換.這種數據交換均由PCI-E總線負責完成.但是GPU內部帶寬要遠高于PCI-E總線帶寬.因此,當通過PCI-E總線進行大量的圖像數據交換時,受限其速度,算法執行時間變長,GPU加速的效果出現了減緩的趨勢.

下面將文獻[17]與OCL_MF并行算法的加速效果進行比對.由于多數文獻是利用中值濾波算法進行各種應用研究,很少專門針對中值濾波算法進行加速效果的研究.因此,無法直接進行加速效果的對比.根據文獻[17]中提供的測試數據,當圖像大小為640×480時,文獻[17]中基于FPGA加速的中值濾波并行算法的運算時間為6.144 ms,獲得了3.68倍性能提高.而由表4和表5的測試結果可知,本文基于OpenCL加速的中值濾波并行算法的運算時間為3.77 ms,獲得了5.04倍加速比.因此,本文并行算法的運算時間比文獻[17]中的算法短,并取得了更好的加速性能.

4.4.2 并行計算平臺上中值濾波算法加速比分析

從圖7可以看出,當圖像像幅大小在3 241×3 753以內時,OpenMP并行方式的加速比曲線斜率變化不大,而GPU并行方式的加速比曲線斜率也較小;當像幅大小從3 241×3 753擴展到5 471×5 682時,OpenMP加速方式的曲線斜率仍沒有明顯變化,而GPU加速方式的曲線則出現一個較陡峭的下降;當像幅大小超過5 471×5 682時,OpenMP加速方式的曲線斜率依然是平穩的上升態勢,而GPU加速方式的曲線則呈現了緩慢下降的趨勢.因此,從圖7中可見,隨著像幅規模的增加,在像幅大小的各個區間內GPU曲線斜率的變化都較OpenMP方式曲線斜率有明顯變化.

圖7 中值濾波并行算法加速比趨勢Fig.7 Speedup trend diagram of median filtering parallel algorithm

曲線斜率的大小,在一定程度上反映出數據規模與運算時間的關系,即數據規模相同時,曲線斜率越大,說明該計算方式的耗時變化越劇烈.當曲線負斜率較大時,數據規模稍微增加,就導致運算時間的急劇增加.這時數據規模與時間消耗的性價比較低,形成計算效率的低峰期,并且擴展性也較差.

據上可知,基于GPU的中值濾波算法的擴展性不如OMP_MF并行算法,GPU加速方式表現的更容易形成計算瓶頸.然而,GPU擁有的更加豐富的并行計算資源帶來了巨大的加速優勢.在圖像規模增大時,仍然具有遠高于OpenMP多核并行計算產生的加速效果.所以,GPU的中值濾波算法的性能更有優勢.

由圖7可見,OCL_MF并行算法的運算速度遠高于OMP_MF并行算法,且隨著圖像規模的不斷增大,速度差距有縮小的趨勢.這是由于CPU核心數較少所致,當CPU處于滿載情況下,性能提升空間有限.同時線程創建和調度也存在時間開銷.而在一定的計算量范圍內,OpenCL中每個工作項有大致相同的計算時間,運算時間的增加僅由于更多的工作項和工作組與硬件之間交互造成的必要時間消耗.

圖8中相對加速比2表明,像幅較小時,OCL_MF并行算法與CUDA_MF并行算法性能接近.隨著圖像規模的增大,OCL_MF并行算法性能相比CUDA_MF并行算法稍快,最高獲得了1.15倍性能提升.因此,當像幅較大時,OpenCL并行算法有更大性能優勢.相對加速比1顯示出OCL_MF并行算法與OMP_MF并行算法性能相比有較大提高,最高獲得了17.29倍性能提升.同時,隨著像幅的增大,兩類并行算法的性能差距有逐漸縮小的趨勢.當像幅較小時,OpenCL并行算法有更大性能優勢.

圖8 相對加速比趨勢Fig.8 Relative acceleration ratio trend graph

4.4.3 基于OpenCL的中值濾波并行算法可移植性分析

Radeon RX 470采用的AMD 2012年提出的GCN架構,GTX 1070為NVIDIA 2016年提出的Pascal架構.GTX 1070的基礎頻率是Radeon RX 470的1.63倍,而且前者使用的存儲器帶寬也比后者更寬,寄存器數量也更多.因此,本文采用的AMD GPU卡性能不如NVIDIA GPU卡,并行算法的性能受到了一定的影響,如圖7所示.然而,OpenCL加速的圖像中值濾波并行算法在2種GPU平臺上均獲得了近30倍加速效果.因此,并行算法在異質GPU計算平臺上獲得了較好的性能可移植性,符合軟硬件實際情況.

5 結束語

利用數字圖像數據呈規則格網分布和易于并行處理的特點,針對圖像中值濾波處理算法核心部分進行了并行方案的設計與實現.算法索引空間的維度能夠自適應于圖像的規模,對工作組的資源配置和不同設備間的數據傳輸進行了優化.通過為并行計算任務合理地分配計算單元和處理單元,充分挖掘了GPU的并行計算能力,圖像處理的效率得以提高.實驗結果顯示,在NVIDIA GTX 1070平臺上實現的OCL_MF并行算法與CPU_MF串行算法,OMP_MF和CUDA_MF兩種并行算法性能相比,加速比分別獲得了29.74倍、17.29倍和1.15倍,算法性能得到極大提升.同時,該OpenCL加速的并行算法在AMD Radeon RX 470和NVIDIA GTX 1070平臺上均獲得了相近的加速比,實現了在異質GPU計算平臺間的性能移植.本文提出的基于OpenCL的圖像中值濾波并行處理方法能夠有效縮短系統運算時間,實時地完成較大像幅的圖像中值濾波處理,對其他圖像處理應用也具有一定的借鑒意義.

本文研究還有進一步優化的空間,有待做更加深入的探索:擬在GPU集群上將MPI和OpenCL技術相結合,更大圖像塊之間的并行由MPI完成,圖像塊內的并行由每個節點上的GPU完成.通過GPU集群將使系統的處理速度更快,以爭取在更加短的時間內完成對更大尺寸圖像的處理工作.

猜你喜歡
并行算法中值工作組
地圖線要素綜合化的簡遞歸并行算法
肖幼率工作組赴戴家湖涵指導搶險
Lagrange中值定理的巧妙應用
32個工作組印跡 >
微分中值定理教法研討
基于GPU的GaBP并行算法研究
后中值波電流脈沖MIG焊工藝
磁縣政協專題聽取委員工作組2015年工作匯報
百項能效標準推進工程聯合工作組會議在京召開
基于GPU的分類并行算法的研究與實現
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合