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