摘要:為保障GPU加速方案的可行性,提升GPU的計算效率。本文結合FTM算法的應用參數,提出將FIM算法應用在GPU加速中的運行試驗方案。借此在CUDA程序支撐下,控制FIM算法的計算時限,優化GPU的加速設計,為我國數值模擬技術的創新發展奠定基礎。
本文源自科學與技術【2020年第23期】《科學與技術》雜志是經國家新聞出版總署批準,中國科學技術協會、新疆阿勒泰地區科協主管,新疆阿勒泰地區科協主辦的學術性期刊。
關鍵詞:FTM算法;GPU加速;計算;CUDA
引言:FIM算法在實際運用中,存在較為突出的計算耗時、并行性能薄弱等問題,而GPU運算能力的開發為FIM算法帶來更多可能性。因此,文章以GPU加速為思路,對FTM算法提升GPU計算效率的可行性展開分析,旨在通過GPU加速目標的實現,驗證FTM算法與圖像處理器運算功能的融合價值。
一、FTM算法的應用參數
現代社會中,圖像處理器GPU在各領域的實踐價值不斷凸顯,其運算能力在浮點運算技術開發中明顯增強。在GPU利用過程中,CUDA是支撐GPU的核心軟件,能夠簡化GPU運算流程,增強GPU計算能力[1]。FTM算法與GPU聯合運用,是利用該算法的數學方程特性,高精度的捕捉GPU運動界面的數據,優化計算資源配置,其在GPU加速中的應用參數,主要體現在FTM算法中的N-S控制方程中。在將N-S控制方程滲透在GPU加速計算中時,運動界面的表面張力可集中在同一界面中,需要將其作為體積力乘δ函數,并給出GPU加速界面中的動量方程(1)。
(1)
公式(1)中,Xf表示GPU界面的實際位置,ρ為圖像數據運算中的密度場,μ為粘度場,k為計算界面的平均曲率。在利用該公式,計算出界面上的“表面張力”后,可對應的完善FTM算法應用中的函數迭代精度、擴散項、流項的最小值,為GPU加速打好基礎。
二、GPU加速中的CUDA架構
GPU中含有的CUDA組分為該程序的主機、核心設備。當CUDA主機通過內核函數,將CPU轉換為GPU時,程序中的CPU的主要功能在于輔助GPU的海量運算任務,比如建立計算邏輯模型、支撐數據串行計算與并行計算等[2]。另外,GPU加速中的CUDA程序,其在內核函數運行期間,其任務執行的最小單位通常為線程,可在GPU計算中讀取共享內存。但是由于CUDA架構中緩存器的存儲空間有限,使得該程序中常量、共享、紋理等存儲器儲存大小無法滿足GPU加速要求,所以在應用FTM算法時,需要結合各類存儲器的功能優勢,靈活的完善GPU的運行性能。
三、基于FTM算法的GPU加速方法
(一)引入共享內存,劃分計算區域
FIM算法在將N-S控制方程中的表面張力單項提取后,可利用差分將擴散項、計算臨時速度、對流項等數值引入GPU加速運算中[3]。具體來說,首先,運用速度離散方程,緩解海量數據的計算壓力,并將該方程中的數據量轉移至計算網格內完成計算工作。在此期間,為實現GPU的并行加速計算目標,需將CUDA架構中的最小單位線程作為計算節點。從而在計算網格過大后,以線程為節點對計算區域進行劃分。相關人員在CUDA程序運行中,利用線程將FIM算法中的計算區域構建為線程塊,分解GPU計算數據,有效改善著GPU的計算性能。
比如在使用“五點差分”時,GPU加速過程中計算節點(x,y)時,需要同時訪問該節點周邊計算區域的各個元素(x,y-1)、(x,y+1)、(x+1y),且節點中的數據訪問次數要求較高,平均訪問次數為5次。但是利用五點差分直接訪問全局內存中的計算數據時,GPU的整體計算效率較低,原因在于全局內存中數據讀寫速度受限,使得GPU計算速度難以提升,制約著FIM算法的合并訪存。若引入共享內存,GPU運算時的訪問速度明顯加快,其在FIM算法的作用下,可一次性讀取計算節點中的各個元素,并以多個線程為單位,同步訪問各節點的共享內存,提升GPU計算效率。
在此期間,若計算區域中,共享內存內所存儲的節點數據僅與CUDA程序中的線程塊相對應,GPU加速計算時,同樣需要方位線程周邊數據。然而由于各線程塊未能建立通信渠道,其數據共享功能不足時,GPU加速時依然需要訪問“全局內存”,并根據FIM算法中的邏輯語句,評估各節點與線程塊的位置關系,明確計算區域的分支[4]。但是在GPU具體運算時,線程為執行單位時,FIM算法中計算區域多由線程束組成,而線程束是由程序中的32個最小單位線程構成。之后,GPU可利用線程束控制對應的線程,計算各節點的實際數據。通常情況下,FIM算法應用中,線程束、線程接收到同一執行指令后,CUDA程序在完成各分支的計算工作時,各節點數據計算效率不佳,需要在線程設定時,提前利用共享內存劃分計算區域,從而提高該程序運行效率,為FIM算法、GPU運算速度的有效提升創造條件。
(二)應用迭代處理,提升訪存效率
在利用FIM算法,對GPU進行加速處理時,該算法在數據加速計算中所用的壓力泊松方程,以及粘度場、密度場分析中,均需利用SOR迭代處理完成求解工作。然而FIM算法中,其迭代處理并行性不佳,需要將原有的SOR迭代法轉變為紅黑迭代法,提升FIM算法在GPU加速中的并行性。
具體來說,實現CPU加速時,紅黑迭代法可在計算區域中,直接將運算數據劃分為紅黑兩組。計算過程中,紅黑兩組數據會在計算網格中處于相互環繞的狀態,并且在黑色組中的數據Q1更新后,周圍紅色組在計算中其物理參數可逐漸修正?;诖朔N迭代處理模式,計算Q1、Q2等數據時,紅色組、黑色組的數據計算可并行完成,便于GPU在FIM算法的壓力數值求解中快速完成計算任務。
另外,在GPU加速中提升FIM算法訪存效率時,同樣可通過迭代處理將數據分組,從而使紅色組、黑色組的數據存儲地址具有連續性,并在提升GPU訪存效率的基礎上,避免CUDA程序的存儲空間增大[5]。同時在GPU利用FIM算法完成黑色組、紅色組的數據計算后,可根據數據運算精確度分析迭代處理需求。在迭代處理后評估迭代處理需求時,GPU、CPU在數據處理中的通信頻次會逐漸減少,GPU計算效率相應提升。但是在GPU、CPU通信次數設定值較大時,其通信頻次的改變對計算效率的影響較弱,會導致FIM算法的數據計算時間延長,改變GPU的加速效果。因此,為實現GPU加速目標,提升訪存效率,應根據圖像處理中的數據計算要求,準確分析數據節點的迭代處理次數,避免因迭代次數過多而影響GPU加速效果。
四、結語
綜上所述,計算機在各領域中的滲透,數值模擬、運算技術優勢愈發突出。GPU在實際運行中所涉方程數量較多,利用FIM算法實現GPU的加速,是為進一步提升GPU運行速度,保證GPU在串行、并聯計算中的數據計算精度。因此,相關人員在GPU的加速處理中,應深度挖掘FIM算法在計算密集場景中對數據的并行處理價值,提升GPU的計算效率。
作者簡介:李登科,男,漢族,河南駐馬店,在讀碩士,華北水利水電大學
研究方向:GPU并行加速
參考文獻:
[1]李貝貝,李志華,班曉征.GPU加速卷積反投影算法的濾波并行化方法[J].傳感器與微系統,2019(05):75-78.
[2]任衍青,逯志宇,王大鳴.基于GPU加速遺傳算法的直接定位研究[J].計算機應用研究,2019(005):1084-1087.
[3]李國昌.基于LoRa技術和GPU加速的臺區拓撲辨識方法[J].電測與儀表,2019(21):96-103.
[4]叢敏章.可視化算法的GPU加速研究[D].2018(01):1-6.
[5]李聰,郭大波,劉小文.基于GPU加速的一種新圖像特征匹配算法[J].計算機科學與應用,2019(1):9-18.
論文指導 >
SCI期刊推薦 >
論文常見問題 >
SCI常見問題 >