閃電數(shù)值模式GPU并行化計算及其初步應用
發(fā)布時間:2021-11-13 07:09
閃電數(shù)值模式中的空間電場計算部分一直是模式中最為耗時的部分,迭代法求解空間電位無法同時滿足高空間分辨率與高計算精度,造成模擬結果與實際有所誤差。受計算時間的限制,全空間模擬域下的三維閃電模擬程序空間分辨率一直得不到提升,為了提升閃電數(shù)值模式的可靠性,本文基于已有的閃電數(shù)值模擬程序,通過修改其電場計算部分的迭代算法,去除迭代過程中數(shù)據(jù)依賴性并使用CUDA架構,將電場計算部分移植到GPU并行計算平臺中,使用CPU+GPU協(xié)同計算,提升了計算效率。此外,在優(yōu)化后的閃電數(shù)值模擬程序基礎上,建立固定的經(jīng)典電荷經(jīng)典電荷結構進行敏感性實驗,討論云中電荷結構(主要是離地最近電荷層)與自持型上行閃電傳播特征與空間電荷分布之間的關系。主要研究成果如下:(1)在已有閃電數(shù)值模式基礎上,采用CUDA架構,同時對其電場計算中迭代算法去除數(shù)據(jù)依賴性,使用PGI編譯器重新構寫編譯,使其計算方法得以在GPU中并行化計算,大大提升了閃電數(shù)值模擬程序的精確性與速度。此外,通過對比不同空間分辨率不同迭代精度下的算法的計算速度,發(fā)現(xiàn)同樣迭代精度下,空間分辨率越高,GPU并行化計算的加速比越高,同等空間分辨率情況下,不同迭代精...
【文章來源】:南京信息工程大學江蘇省
【文章頁數(shù)】:50 頁
【學位級別】:碩士
【部分圖文】:
建筑物高度與上行地閃啟動時環(huán)境電場之間的關系圖
南京信息工程大學碩士學位論文12圖2.2離散空間示意圖圖2.2中h是模擬域的空間分辨率,空間分辨率越高,電位分布計算越精確,模擬出的閃電通道形態(tài)與觀測越為相近,模擬結果可靠性更高,因此空間分辨率高低是衡量閃電數(shù)值模式好壞的一個重要標準。離散化后的泊松方程方程如下:(2φx2)i,j=φi,j12φi,j+φi,j1h2(2φy2)i,j=φi+1,j2φi,j+φi+1,jh2(2.5)綜合為:φ(i,j)=14(φ(i+1,j)+φ(i,j1)+φ(i+1,j)+φ(i,j1)+h2f)(2.6)其中f代表源項,在靜電場泊松方程中指的是-p/ε,h代表空間分辨率。離散空間中每一個點都近似滿足這個公式,當空間網(wǎng)格點過大時,直接求解算法復雜,適合采用迭代法求解,常見的方法有超松弛迭代和雅克比迭代。一般情況選取合適的松弛因子,超松弛迭代算發(fā)法比雅可比迭代要快。本文考慮到之后采用GPU并行計算,而超松弛迭代過程中數(shù)據(jù)依賴性較大,無法進行并行計算。而雅克比迭代也是一種常見的迭代求解大型線性方程的算法,本身具有較好的并行性,因此采用雅克比迭代進行計算,迭代公式如下。φ(i,j)k+1=14(φk(i+1,j)+φk(i,j1)+φk(i+1,j)+φk(i,j1)+h2f)(2.7)其中k是指迭代次數(shù),在每一次迭代中,一點更新后數(shù)值由四周四點的數(shù)值計算而成,每一次迭代后數(shù)值越趨近于正確值。使用迭代誤差衡量更新后的數(shù)值的精確度,誤差計算公式如下:Error=(+1)(+1)(2.8)
第三章閃電數(shù)值模擬并行化15Enddo!$endkernel!$kernellooppresent(u1,u2)collapse(2)Doi=1,mDoj=1,nu2(i,j)=(u1(i-1,j)+u1(i+1,j)+u1(i,j+1)+u1(i,j-1)+h2f(i,j))/4EnddoEnddo!$endkernel3.2.2CPU與GPU數(shù)據(jù)通信優(yōu)化閃電數(shù)值模擬程序中除了電場計算的主體計算部分外,還存在大量的邏輯判斷跳出循環(huán)等語句,這些語句GPU運行速度過慢,因此閃電數(shù)值模式程序的主體部分仍是放于CPU中進行串行執(zhí)行,整個閃電數(shù)值模式程序采用是GPU+CPU協(xié)同運行在計算模塊中將數(shù)據(jù)置入GPU中進行并行計算。CPU中數(shù)據(jù)執(zhí)行是通過主機中內(nèi)存進行存放數(shù)據(jù)數(shù)組,而GPU中數(shù)據(jù)的計算是則將數(shù)組存放于GPU顯存當中,二者存放位置不同,具體數(shù)據(jù)分布傳輸如下圖:圖3.1CPU與GPU內(nèi)存分布架構示意圖如圖3.1所示,CPU中數(shù)據(jù)存放于主機中的內(nèi)存設備,而GPU數(shù)據(jù)則存放于GPU中的顯存,兩者之間通過PCI接口進行數(shù)據(jù)通信傳輸[74-76]。一個三維高精度閃電的模擬域的空間電位分布數(shù)值大小通常高達1GB(4000*5000格點數(shù)下),在閃電向上發(fā)展的每一步時,計算機都需將主機中通道分布數(shù)組傳遞至GPU中作為泊松方程邊界條件進行并行計算,在重解了空間電位之后,位于GPU中的
本文編號:3492572
【文章來源】:南京信息工程大學江蘇省
【文章頁數(shù)】:50 頁
【學位級別】:碩士
【部分圖文】:
建筑物高度與上行地閃啟動時環(huán)境電場之間的關系圖
南京信息工程大學碩士學位論文12圖2.2離散空間示意圖圖2.2中h是模擬域的空間分辨率,空間分辨率越高,電位分布計算越精確,模擬出的閃電通道形態(tài)與觀測越為相近,模擬結果可靠性更高,因此空間分辨率高低是衡量閃電數(shù)值模式好壞的一個重要標準。離散化后的泊松方程方程如下:(2φx2)i,j=φi,j12φi,j+φi,j1h2(2φy2)i,j=φi+1,j2φi,j+φi+1,jh2(2.5)綜合為:φ(i,j)=14(φ(i+1,j)+φ(i,j1)+φ(i+1,j)+φ(i,j1)+h2f)(2.6)其中f代表源項,在靜電場泊松方程中指的是-p/ε,h代表空間分辨率。離散空間中每一個點都近似滿足這個公式,當空間網(wǎng)格點過大時,直接求解算法復雜,適合采用迭代法求解,常見的方法有超松弛迭代和雅克比迭代。一般情況選取合適的松弛因子,超松弛迭代算發(fā)法比雅可比迭代要快。本文考慮到之后采用GPU并行計算,而超松弛迭代過程中數(shù)據(jù)依賴性較大,無法進行并行計算。而雅克比迭代也是一種常見的迭代求解大型線性方程的算法,本身具有較好的并行性,因此采用雅克比迭代進行計算,迭代公式如下。φ(i,j)k+1=14(φk(i+1,j)+φk(i,j1)+φk(i+1,j)+φk(i,j1)+h2f)(2.7)其中k是指迭代次數(shù),在每一次迭代中,一點更新后數(shù)值由四周四點的數(shù)值計算而成,每一次迭代后數(shù)值越趨近于正確值。使用迭代誤差衡量更新后的數(shù)值的精確度,誤差計算公式如下:Error=(+1)(+1)(2.8)
第三章閃電數(shù)值模擬并行化15Enddo!$endkernel!$kernellooppresent(u1,u2)collapse(2)Doi=1,mDoj=1,nu2(i,j)=(u1(i-1,j)+u1(i+1,j)+u1(i,j+1)+u1(i,j-1)+h2f(i,j))/4EnddoEnddo!$endkernel3.2.2CPU與GPU數(shù)據(jù)通信優(yōu)化閃電數(shù)值模擬程序中除了電場計算的主體計算部分外,還存在大量的邏輯判斷跳出循環(huán)等語句,這些語句GPU運行速度過慢,因此閃電數(shù)值模式程序的主體部分仍是放于CPU中進行串行執(zhí)行,整個閃電數(shù)值模式程序采用是GPU+CPU協(xié)同運行在計算模塊中將數(shù)據(jù)置入GPU中進行并行計算。CPU中數(shù)據(jù)執(zhí)行是通過主機中內(nèi)存進行存放數(shù)據(jù)數(shù)組,而GPU中數(shù)據(jù)的計算是則將數(shù)組存放于GPU顯存當中,二者存放位置不同,具體數(shù)據(jù)分布傳輸如下圖:圖3.1CPU與GPU內(nèi)存分布架構示意圖如圖3.1所示,CPU中數(shù)據(jù)存放于主機中的內(nèi)存設備,而GPU數(shù)據(jù)則存放于GPU中的顯存,兩者之間通過PCI接口進行數(shù)據(jù)通信傳輸[74-76]。一個三維高精度閃電的模擬域的空間電位分布數(shù)值大小通常高達1GB(4000*5000格點數(shù)下),在閃電向上發(fā)展的每一步時,計算機都需將主機中通道分布數(shù)組傳遞至GPU中作為泊松方程邊界條件進行并行計算,在重解了空間電位之后,位于GPU中的
本文編號:3492572
本文鏈接:http://sikaile.net/projectlw/qxxlw/3492572.html
最近更新
教材專著