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