【摘? 要】線積分卷積是矢量場(chǎng)可視化的重要的方法之一,但是由于需要對(duì)每個(gè)矢量點(diǎn)進(jìn)行卷積積分計(jì)算,因而計(jì)算量較大。CPU多核環(huán)境下的并行實(shí)現(xiàn)是現(xiàn)在并行計(jì)算技術(shù)發(fā)展的方向之一。本文在OpenMP 環(huán)境下實(shí)現(xiàn)了線積分卷積的并行化。結(jié)果表明,隨著CPU核數(shù)的增加,并行線積分卷積的時(shí)間逐漸降低,加速比逐漸增加。
【關(guān)鍵詞】線積分卷積;OpenMP
Abstract:Line integral convolution is one of the most important methods for vector field visualization. However, it requires the convolution integral calculation for each vector point. Parallel implementation in CPU multi-core environment is one of the development directions of parallel computing technology. In this paper, the parallelization of line integral convolution is realized by OpenMP in a multi-core environment. The results show that the time of parallel line integral convolution decreases and the acceleration ratio increases with the increase of CPU cores.
KeyWords: Line integral convolution; OpenMP
引言
基于線積分卷積(Linear Integral Convolution, LIC)的矢量場(chǎng)可視化是目前矢量場(chǎng)可視化最常用的方法之一。其核心思想是白噪聲疊加矢量場(chǎng)數(shù)據(jù)對(duì)矢量場(chǎng)運(yùn)動(dòng)信息進(jìn)行可視化,能夠很好的表示矢量場(chǎng)運(yùn)動(dòng)方向特性,且易于實(shí)現(xiàn),因此對(duì)于矢量場(chǎng)的可視化具有重要意義。但同時(shí)該方法也存在不足:積分過(guò)程計(jì)算量大,需要對(duì)流線上的每一點(diǎn)進(jìn)行積分卷積。在積分過(guò)程中即使采用最簡(jiǎn)單的歐拉積分方法,計(jì)算量也不容小覷。針對(duì)LIC算法計(jì)算量大的問(wèn)題。文獻(xiàn)[1]實(shí)現(xiàn)了基于平行坐標(biāo)的LIC矢量場(chǎng)可視化,并根據(jù)netcdf格式數(shù)據(jù)的特點(diǎn),提出了基于netcdf數(shù)據(jù)生成流線的方法。
針對(duì)LIC算法積分過(guò)程計(jì)算量大,計(jì)算速度慢的問(wèn)題,文獻(xiàn)[2]中利用GPU的多線程技術(shù),基于cuda平臺(tái)對(duì)LIC算法的計(jì)算部分實(shí)現(xiàn)并行化,獲得了較高的加速比。此外,采用GPU實(shí)現(xiàn)LIC并行化的研究如文獻(xiàn)[3]。然而基于GPU的并行化通常情況下需要對(duì)串行LIC代碼進(jìn)行重構(gòu),工作量較大,此外,還需要在內(nèi)存與顯存之間頻繁拷貝數(shù)據(jù)。
文獻(xiàn)[4]通過(guò)LIC算法模擬高分辨率的矢量場(chǎng)數(shù)據(jù),在Windows集群環(huán)境下采用MPI實(shí)現(xiàn)了并行化,結(jié)果顯示并行化后的算法能夠大幅度縮短計(jì)算可視化時(shí)間,且與原來(lái)串行計(jì)算的圖像結(jié)果一致。基于MPI的LIC的并行化具有良好的擴(kuò)展性,能靈活的擴(kuò)充與減少節(jié)點(diǎn),但是該并行模式在通常情況下需要計(jì)算機(jī)集群,且并行加速比不僅依賴算法的優(yōu)化,更加依賴計(jì)算集群底層網(wǎng)絡(luò)的傳輸,即底層網(wǎng)絡(luò)的帶寬往往成為制約提高并行加速比的瓶頸。
隨著計(jì)算機(jī)多核CPU技術(shù)的不斷進(jìn)步,共享存儲(chǔ)器編程因其能充分發(fā)揮各個(gè)CPU核的潛力而成為最受青睞的編程模式之一。共享存儲(chǔ)器編程的優(yōu)點(diǎn)是通過(guò)共享內(nèi)存實(shí)現(xiàn)線程之間的數(shù)據(jù)通信,減少網(wǎng)絡(luò)之間的數(shù)據(jù)傳輸,各個(gè)線程通過(guò)加鎖的方式實(shí)現(xiàn)對(duì)共享內(nèi)存的讀寫。常用的共享存儲(chǔ)器編程方式包括OpenMP,及調(diào)用操作系統(tǒng)API實(shí)現(xiàn)多線程等方式。本文將采用OpenMP方式實(shí)現(xiàn)線積分卷積的并行化。
1.線積分卷積
線積分卷積是通過(guò)跟蹤矢量場(chǎng)數(shù)據(jù),形成矢量,然后在矢量方向性卷積高斯白噪聲從而達(dá)到矢量場(chǎng)數(shù)據(jù)的可視化,具體公式如下:
F(x)表示輸出像素點(diǎn)的灰度值,T(s)表示高斯白噪聲灰度圖像值,k(s)為卷積核函數(shù),積分長(zhǎng)度為2L。對(duì)于輸入的矢量場(chǎng)數(shù)據(jù)中的每一個(gè)點(diǎn)都需要計(jì)算流線,并依據(jù)上式輸出積分卷積值作為輸出結(jié)果。
2.OpenMP并行實(shí)現(xiàn)
本文主要對(duì)計(jì)算過(guò)程中的主要循環(huán)迭代加入OpenMP指令實(shí)現(xiàn)并行化。即對(duì)線積分卷積的迭代跟蹤流線和卷積的過(guò)程通過(guò)加入OpenMP的并行指令 #pragma omp parallel 的方式實(shí)現(xiàn)該過(guò)程的并行化。
LIC算法的積分過(guò)程需要對(duì)每一個(gè)點(diǎn)沿著矢量方法進(jìn)行積分計(jì)算,計(jì)算完成之后根據(jù)卷積核函數(shù)對(duì)高斯白噪聲進(jìn)行卷積計(jì)算,卷積完成之后更新圖形對(duì)應(yīng)位置的像素值。根據(jù)LIC算法的特點(diǎn),可以設(shè)置矢量場(chǎng)數(shù)據(jù)及高斯白噪聲數(shù)據(jù)為各個(gè)OpenMP線程所共享,這樣可以減少線程之間的數(shù)據(jù)通信,減少并行開(kāi)銷。在OpenMP編譯指令中加入“default(shared)”子句實(shí)現(xiàn)默認(rèn)數(shù)據(jù)的共享,共享數(shù)據(jù)包括矢量場(chǎng)數(shù)據(jù),高斯白噪聲及輸出圖像數(shù)據(jù)。在OpenMP編譯指令中加入“private”子句實(shí)現(xiàn)循環(huán)變量的私有。
3.結(jié)果分析
本文在一臺(tái)8核CPU機(jī)器上實(shí)現(xiàn)線積分卷積的并行化。為了較好的衡量并行結(jié)果,本文設(shè)置的線積分卷積的并行計(jì)算規(guī)模分別為1000*1000、2000*2000。線積分卷積并行計(jì)算規(guī)模為1000*1000、2000*2000時(shí)計(jì)算時(shí)間分別為表1、表2。對(duì)應(yīng)的加速比分別對(duì)應(yīng)圖1,、圖2。
由以上2個(gè)表格的計(jì)算時(shí)間可以得到,隨著CPU核數(shù)的增加,并行LIC算法的計(jì)算時(shí)間逐漸減少。加速比逐漸增加。在CPU核數(shù)較高(CPU核數(shù)為6、8時(shí))時(shí),兩個(gè)問(wèn)題規(guī)模計(jì)算時(shí)間大幅度減少,均能獲得較高的加速比。在CPU核數(shù)為8,兩種問(wèn)題規(guī)模的加速比達(dá)分別達(dá)到3.78、3.48。然而在CPU增加過(guò)程中,加速比并沒(méi)有線性增加,這主要是因?yàn)閮蓚€(gè)問(wèn)題規(guī)模并行開(kāi)銷增加。對(duì)于OpenMP來(lái)說(shuō),并行開(kāi)銷主要包括線程的私有資源的分配、同步等開(kāi)銷增加。
綜上,并行化后的LIC算法隨著CPU核數(shù)的增加,運(yùn)算時(shí)間逐漸降低,逐漸獲得較高的加速比。隨著并行開(kāi)銷的增加,并行化的效率逐漸降低。此外,負(fù)載均衡與否也是影響并行效率的一個(gè)重要因素。
參考文獻(xiàn)
[1] 宋揚(yáng)揚(yáng).基于平行坐標(biāo)的線積分卷積矢量場(chǎng)可視化方法研究[D].秦皇島:燕山大學(xué).2016
[2] 吳占斌.基于 GPU 的二維矢量場(chǎng)可視化線性積分卷積方法的研究與實(shí)現(xiàn)[D] 青島:中國(guó)海洋大學(xué). 2011
[3]詹芳芳.線積分卷積二維矢量場(chǎng)可視化方法的研究和改進(jìn)[D].北京:北京化工大學(xué)2013
[4]劉天佳.基Fast-LIC的矢量場(chǎng)并行可視化方法研究[D]. 哈爾濱:哈爾濱工程大學(xué) 2017
作者簡(jiǎn)介:符曉單(1985--),男,博士研究生,從事并行程序設(shè)計(jì)。