亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        非結(jié)構(gòu)有限體積CFD計算的網(wǎng)格重排序優(yōu)化*

        2022-10-28 01:21:58萬云博何先耀盧宇彤
        計算機工程與科學 2022年10期
        關(guān)鍵詞:排序結(jié)構(gòu)方法

        張 勇,張 曦,萬云博,何先耀,趙 鐘,盧宇彤

        (1.中國空氣動力研究與發(fā)展中心計算空氣動力研究所,四川 綿陽 621000;2.中山大學計算機學院,廣東 廣州 510006)

        1 引言

        計算流體力學CFD(Computational Fluid Dynamics)通過計算機數(shù)值求解流體力學控制方程以獲得流動信息。隨著高性能計算HPC(High Performance Computing)硬件的快速發(fā)展,CFD在工業(yè)裝備建設(shè)中得到了越來越多的應用。

        CFD通過計算網(wǎng)格離散空間,早期主要采用結(jié)構(gòu)網(wǎng)格。隨著幾何外形復雜性和保真度的增加,結(jié)構(gòu)網(wǎng)格生成在整個模擬周期中占據(jù)了絕大部分時間。非結(jié)構(gòu)網(wǎng)格具有自動化程度高的優(yōu)點,能夠更好地適應諸如飛行器、旋轉(zhuǎn)機械等復雜幾何外形,在大氣海洋、航空航天等許多科學計算領(lǐng)域運用廣泛。由此發(fā)展了眾多數(shù)值模擬軟件,例如,基于有限體積方法的 OpenFOAM(Open Field Operation And Manipulation)[1]、FUN3D(Fully Unstructured Navier-stokes three-Dimensional)[2]、SU2(Stanford University Unstructured code)[3],基于有限元方法的Fludity[4]和MOOSE(Multiphysics Object Oriented Simulation Environment)[5],基于通量修正方法的pyFR(Python based Flux Reconstruction)[6]等。然而,由于非結(jié)構(gòu)網(wǎng)格數(shù)據(jù)存儲不規(guī)則,數(shù)據(jù)只能間接訪問[7],增大了訪存延遲,對非結(jié)構(gòu)網(wǎng)格計算效率造成了不利影響。隨著高性能計算技術(shù)的發(fā)展,科學計算進入“E級”時代,通用圖形加速器GPGPU(General Purpose Graphics Processing Unit)憑借其計算能力強、功耗低的優(yōu)點,在科學計算中得到了越來越多的應用。GPU的訪存模式[8]放大了非結(jié)構(gòu)網(wǎng)格不規(guī)則訪存帶來的延遲,如何提高非結(jié)構(gòu)網(wǎng)格的數(shù)據(jù)局部性,充分利用CPU和GPU的計算性能,提高非結(jié)構(gòu)網(wǎng)格有限體積數(shù)值模擬的計算性能,已經(jīng)成為高性能計算領(lǐng)域的重要課題之一。

        提高非結(jié)構(gòu)網(wǎng)格的數(shù)據(jù)局部性有許多方法。一些研究人員對非結(jié)構(gòu)網(wǎng)格的數(shù)據(jù)存儲布局進行了研究[9],但無論是AOS(Array Of Structure)還是SOA(Structure Of Array)的存儲布局都避免不了數(shù)據(jù)的間接訪存。Weng等[10]通過調(diào)整循環(huán)模式改進數(shù)據(jù)局部性,但是該方法只優(yōu)化了部分計算熱點,無法實現(xiàn)全局性優(yōu)化。

        網(wǎng)格重排序是一類能有效提高數(shù)據(jù)局部性的方法,通過對網(wǎng)格幾何拓撲如體、面、點的編號重排,改變數(shù)據(jù)訪問順序,減少訪存延遲。Lohner[11]針對有限元方法提出了若干重排序的方法。Andrew等[12]通過一種線排序方法,重排體和面編號,提升了高階DG(Discontinuous Galerkin)方法計算Euler方程的性能。Lani等[13]在有限體積方法中使用了RCM(Reverse Cuthill-Mckee)方法,但是性能改善有限。目前,大多數(shù)文獻都是對網(wǎng)格重排序在CPU或GPU等單一類型硬件上的性能影響展開研究,缺乏對CPU、GPU等不同硬件類型的統(tǒng)一性研究。

        本文根據(jù)非結(jié)構(gòu)網(wǎng)格有限體積CFD計算的特點,基于風雷軟件提出了一種網(wǎng)格重排序策略,以優(yōu)化數(shù)據(jù)局部性。首先,簡述了非結(jié)構(gòu)有限體積CFD的理論方法和所采用的計算程序;然后,給出了本文所提出的網(wǎng)格重排序方法,并采用典型算例分析了該方法在CPU和GPU上的數(shù)值計算結(jié)果。

        2 理論基礎(chǔ)與計算程序

        本文研究基于開源CFD軟件“風雷(PHengLEI)”[14-18]。風雷軟件是中國空氣動力研究與發(fā)展中心研發(fā)的面向流體工程的混合CFD平臺,面向全國開源(https://osredm.com/)。風雷軟件是全球首款能同時支持結(jié)構(gòu)網(wǎng)格(算法)和非結(jié)構(gòu)網(wǎng)格(算法)的CFD軟件,也是同時支持有限體積和有限差分方法的“混合”計算平臺。本節(jié)簡要介紹本文研究涉及到的理論基礎(chǔ),包括控制方程與數(shù)值方法、網(wǎng)格幾何拓撲。

        2.1 控制方程與數(shù)值方法

        NS(Navier-Stokes)流動控制方程積分形式可以表示如式(1)所示:

        (1)

        其中,Fc和Fv分別表示對流通量和粘性通量(下標c代表對流相關(guān)項,下標v代表粘性相關(guān)項);Q表示包含守恒形式的流動矢量,可以表示如式(2)所示:

        (2)

        其中,ρ、u、v、w和E分別表示流體密度、速度在x、y、z這3個方向的分量及單位質(zhì)量總能量。采用格心式有限體積方法,將這些流場變量定義在控制體(Control Volume)單元Ω中心上。

        有限體積方法將物理空間劃分為許多小的控制體(Volume);體的邊界稱為面(Face)。相應地,NS方程可以表示如式(3)所示:

        (3)

        其中,Ωvol表示控制體的體積;控制體擁有NF個面,第m個面的面積為|Sm|;對流通量Fc采用Roe格式計算,通過采用限制器抑制流場間斷產(chǎn)生的數(shù)值振蕩;粘性通量Fv采用中心格式計算;湍流模型采用Splart-Allmaras一方程模型;時間推進采用Runge-Kutta顯式和LU-SGS(Lower Upper-Symmetric Gauss Seidel)隱式方法。程序的具體算法參見文獻[14-18],在一個時間步的流程如圖 1所示。

        Figure 1 Flow chart of program in one time step

        2.2 網(wǎng)格幾何拓撲

        非結(jié)構(gòu)網(wǎng)格存儲沒有結(jié)構(gòu)網(wǎng)格那樣規(guī)律,其點、面、體(單元)編號都是無規(guī)律存儲。在非結(jié)構(gòu)網(wǎng)格幾何拓撲關(guān)系中,面和體之間的連接關(guān)系尤為重要,廣泛應用于各類通量計算中,其具體關(guān)系通過面編號和體編號來表示。對于格心型有限體積方法,體(Volume)即是計算單元本身,下同。

        對于面編號,在風雷軟件中,每個面兩側(cè)有且僅有2個體,分別為左、右單元。左和右的定義是相對的,軟件中規(guī)定面法向所指向的體為右側(cè)體,另一側(cè)為左側(cè)體,即面法向從左體指向右體。為編程方便,將面分為邊界面和內(nèi)部面2種類型,數(shù)組中先存儲邊界面,再存儲內(nèi)部面。對于內(nèi)部面,其左、右單元都是內(nèi)部單元;對于邊界面,左單元為內(nèi)部單元,右單元是左單元以邊界面為對稱的鏡像虛擬單元。

        面法向采用叉乘計算得到。如圖 2所示,A=P3-P1、B=P2-P1分別是2個矢量,二者構(gòu)成一個平面。根據(jù)線性代數(shù),其單位法向的計算表達式如式(4)所示:

        (4)

        對于任意凸多邊形的法向量,可以將每條邊與面心連接形成若干子三角形,將各子三角形的法向量以各自面積加權(quán)得到多邊形的法向量。

        Figure 2 Diagram of plane normal vector calculation

        采用2個數(shù)組存儲左、右體編號。如圖 3所示,編號為O和P的2個體都包含編號為f2的面,若規(guī)定面的右單元體編號存儲在cellRight數(shù)組中,且面的另一側(cè)體編號存儲在cellLeft數(shù)組中,則可通過數(shù)組直接得到左、右體編號,即cellRight[f2]=P,cellLeft[f2]=O。

        Figure 3 Geometry topology: volume and face

        變量ρ、u、v、w、p等存儲在體中心,稱為體數(shù)據(jù)(Volume Data);對流通量Fc和粘性通量Fv等變量存儲在面中心,稱為面數(shù)據(jù)(Face Data)。體數(shù)據(jù)和面數(shù)據(jù)由各自的編號索引,并以SOA方式存儲。體數(shù)據(jù)可以由體編號直接索引,也可以由面編號間接索引。例如,表示殘差的體數(shù)據(jù)Res,其體編號為O,可以通過體索引Res[O]或者面索引Res[cellLeft[f2]]2種方式得到。風雷軟件中面、體在數(shù)組中存儲的順序分別如圖4和圖5所示。

        Figure 4 Numbering order of face

        Figure 5 Numbering order of volume

        圖4和圖5中,nCell是內(nèi)部體總數(shù),nTotalCell表示內(nèi)部體和虛擬體數(shù)量之和,nBoundFace表示邊界面的數(shù)量或者虛擬體的數(shù)量,nTotalFace表示內(nèi)場面和邊界面數(shù)量之和。體編號在[0,nCell),虛擬體編號在[nCell,nCell+nBoundFace),從內(nèi)部體編號尾部開始逐一編號,定義第iFace個邊界面所對應的虛擬體編號為iFace+nCell。

        3 網(wǎng)格重排序方法

        網(wǎng)格重排序分為兩部分:體網(wǎng)格按照RCM(Reverse Cuthill-Mckee)方法進行重排,面網(wǎng)格以網(wǎng)格體為單位重新排列。下面分別說明。

        3.1 RCM體重排序

        RCM方法[19]采用近鄰排序的方法,以保證網(wǎng)格編號在空間中相對集中分布,從而使得體數(shù)據(jù)存儲時在內(nèi)場空間更緊密。通過RCM方法,反映網(wǎng)格鄰接關(guān)系的矩陣帶寬會減小。如圖 6所示,比較了29萬網(wǎng)格規(guī)模下體網(wǎng)格排序前、后的矩陣結(jié)構(gòu),可以發(fā)現(xiàn)體編號重排序使得鄰接矩陣非零項更加緊湊。

        Figure 6 Comparison of matrix structures with and without volume reordering

        3.2 面重排序

        本文設(shè)計了一種面重排序算法,針對風雷程序的內(nèi)部面,以體網(wǎng)格擁有的面為基本單位,按照體網(wǎng)格內(nèi)原始的編號順序,為內(nèi)部面重新排序。這樣可以緩解邊界面編號造成的內(nèi)部面編號不連續(xù)問題,提高邊界數(shù)據(jù)訪存效率。具體算法如算法1所述。

        算法1面編號排序算法

        輸入:體-面拓撲關(guān)系offsetCellFace、numFaceOfCell和cellFace。

        輸出:排序前、后面編號映射關(guān)系mapFace,排序后的幾何拓撲關(guān)系。

        第1步升序排列cellFace中每個體網(wǎng)格對應的面編號;

        第2步初始化數(shù)組mapFace={-1};

        第3步初始化面編號計數(shù)器labelFace=nBoundFace-1;

        第4步遍歷體網(wǎng)格,重排面編號:

        FORcellID=0 TOnTotalCell-1

        獲取體網(wǎng)格cellID在cellFace的偏移量offset=offsetCellFace[cellID];

        獲取體網(wǎng)格cellID在cellFace中存儲的面編號數(shù)量numFaces=numFaceOfCell[cellID];

        遍歷組成體網(wǎng)格cellID的全部面:

        FORfaceInCell=0 TOnumFaces-1

        獲取面編號faceID=cellFace[offset+faceInCell];

        IF(面faceID是內(nèi)部面)&&(面faceID映射關(guān)系仍未改變)THEN

        編號計數(shù)器labelFace累加1;

        更新faceID的映射關(guān)系:

        mapFace[faceID]=labelFace;

        ENDIF

        ENDFOR

        ENDFOR

        第5步采用mapFace更新網(wǎng)格幾何拓撲關(guān)系。

        該算法首先將cellFace中以體網(wǎng)格為單位存儲的面編號按照升序排列(第1步);然后初始化映射數(shù)組mapFace和編號計數(shù)器labelFace(第2、3步),編號計數(shù)器從nBoundFace-1開始,只對內(nèi)部面編號;以網(wǎng)格體為單位,通過2層嵌套循環(huán)遍歷cellFace中的所有面編號(第4步);對于內(nèi)部面,更新編號計數(shù)器,并將該值賦給映射數(shù)組(第2層循環(huán));網(wǎng)格拓撲相關(guān)的變量,例如cellFace等,根據(jù)映射數(shù)組更新(第5步)。

        4 算例測試與分析

        4.1 算例、計算環(huán)境和測試方法

        為分析網(wǎng)格重排序?qū)Ψ墙Y(jié)構(gòu)網(wǎng)格有限體積CFD計算的結(jié)果影響和優(yōu)化效果,采用5套不同規(guī)模的ONERA M6機翼外流場三維非結(jié)構(gòu)網(wǎng)格作為測試集。如圖 7所示,ONERA M6機翼三維非結(jié)構(gòu)網(wǎng)格由三棱柱和四面體組成,其中,三棱柱分布在物面附近的邊界層區(qū)域,四面體用于填充剩余計算域。5套網(wǎng)格的單元數(shù)如表 1所示。

        Figure 7 ONERA M6 Mesh

        Table 1 5 different meshes

        測試采用風雷軟件非結(jié)構(gòu)求解器GPU并行開源版本,該版本程序可在紅山開源平臺申請下載(https://forge.osredm.com/projects/p68217053/PHengLEI/tree/Branch_TH)。采用的硬件環(huán)境為:基于CUDA 10.0[20]驅(qū)動的NVIDIA Tesla V100 GPU,Intel Xeon E5-2692 CPU。

        本文的GPU并行優(yōu)化的前提是網(wǎng)格重排序,理論上網(wǎng)格重排序只影響計算效率,不影響計算的收斂結(jié)果。對此,首先對比分析網(wǎng)格重排序?qū)︼@式計算和隱式計算的影響。

        4.2 網(wǎng)格重排序?qū)τ嬎憬Y(jié)果的影響

        4.2.1 對隱式LU-SGS方法的影響

        LU-SGS方法數(shù)據(jù)依賴性強,對計算順序較敏感,本節(jié)討論網(wǎng)格重排序?qū)﹄[式計算LU-SGS方法的影響。

        圖 8給出了400萬網(wǎng)格規(guī)模(網(wǎng)格3)下平均殘差averageRes(NS方程未知數(shù)在相鄰時間步二階范數(shù)的平均值)隨迭代步變化的曲線??梢钥吹?,網(wǎng)格編號排序前后殘差收斂值趨于一致,且重排序的收斂效果優(yōu)于未排序時的。

        Figure 8 Variantion curves of residual error before and after mesh reordering under 4 million grid scale

        不同網(wǎng)格規(guī)模下1萬步處的平均殘差比較如表 2所示??梢?,隨著網(wǎng)格規(guī)模的不斷增大,重排序的計算平均殘差逐漸減小。與未排序相比,其加速收斂的效果更加明顯。

        不同網(wǎng)格規(guī)模下,網(wǎng)格重排序?qū)諝鈩恿W系數(shù)的影響如表3所示。由表3可知,網(wǎng)格重排序?qū)ιο禂?shù)的影響在0.24%之內(nèi),對阻力系數(shù)的影響在0.5%之內(nèi),二者均在氣動計算可接受的誤差之內(nèi),可認為重排序不影響計算結(jié)果。

        Table 3 Relative error of aerodynamic coefficients at 10 000 steps for reordering and unordering

        綜上,由于LU-SGS方法數(shù)據(jù)依賴性較強,體網(wǎng)格編號重排改變了計算順序,提高了數(shù)據(jù)局部性,在一定程度上改善了求解過程的收斂效果,但對隱式方法的計算結(jié)果無明顯影響。

        4.2.2 對顯式Runge-Kutta方法的影響

        本節(jié)討論網(wǎng)格重排序?qū)︼@式計算Multi-Stage Runge-Kutta方法的影響。

        圖 9給出了40萬網(wǎng)格規(guī)模下平均殘差隨迭代步變化的曲線??梢钥闯觯?萬步后殘差曲線收斂,未排序和重排序的平均殘差收斂曲線沒有明顯差異。從圖 10中未排序與重排序平均殘差的插值可以看出二者平均殘差是相同的。

        Table 2 Comparison of residual values at 10 000 steps for reordering and unordering

        Figure 9 Variantion curves of residual error before and after mesh reordering under 400 000 gride scale

        Figure 10 Difference of average residual values before and after mesh reordering

        可見,網(wǎng)格重排序?qū)︼@式計算的結(jié)果完全沒有影響,這是因為:顯式方法計算時,每個網(wǎng)格只和局部幾何拓撲有關(guān),網(wǎng)格重排序雖然改變了體網(wǎng)格、面網(wǎng)格的編號順序,但是并沒有改變幾何拓撲結(jié)構(gòu),不會影響計算結(jié)果。

        4.3 CFD程序性能分析

        從4.2節(jié)分析可見,網(wǎng)格重排序不會影響計算結(jié)果,說明針對GPU并行算法改造是可行的。本節(jié)分別就CPU和GPU上的計算來分析影響計算效率的熱點。

        對于顯式計算,在CPU計算時,發(fā)現(xiàn)耗時較大的前8個熱點F0~F7函數(shù)占據(jù)了總計算時間的近70%,如圖 11a所示。在GPU計算時,發(fā)現(xiàn)耗時較大的前8個熱點K0~K7也占據(jù)了總計算時間的70%。

        對于隱式計算,在CPU計算時,前8個熱點函數(shù)FI0~FI7占據(jù)了運行總時間的一半以上。

        4.3.1 網(wǎng)格重排序?qū)τ贑PU計算性能的影響

        在CPU上,網(wǎng)格重排序?qū)︼@式計算和隱式計算的運行時間都會產(chǎn)生影響。本節(jié)分別討論網(wǎng)格重排序?qū)︼@式計算和隱式計算在不同網(wǎng)格規(guī)模下運行時間的影響。在Intel Xeon E5-2692上記錄的運行時間。

        Figure 11 Hot spot functions and kernels of explicit computing and implicit computing on CPU and GPU

        表4是網(wǎng)格3(400萬網(wǎng)格)規(guī)模下網(wǎng)格排序前、后熱點函數(shù)的運行時間。以未排序的函數(shù)運行時間作為分母,對運行時間無因次化,結(jié)果如圖 12所示??梢姡蟛糠趾瘮?shù)的運行時間在重排序的網(wǎng)格下縮短了10%~40%。

        Table 4 Comparison of hot functions’ explicit executing time before and after mesh reordering

        Figure 12 Comparison of hot spot functions’ explicit executing time before and after mesh reordering

        針對不同網(wǎng)格規(guī)模下的顯式計算,記錄了24進程并行計算的運行時間,結(jié)果如表 5所示。

        Table 5 Executing time of explicit computing before and after mesh reordering

        對未排序運行時間作無因次化處理,重排序、未排序顯式計算的運行時間如圖 13所示。網(wǎng)格重排序縮短了顯式計算在所有網(wǎng)格規(guī)模下的運行時間,隨著網(wǎng)格規(guī)模擴大,重排序能夠節(jié)省15%~20%的運行時間。

        重排序改變了數(shù)據(jù)在內(nèi)存中的分布,增強了局部性,提高了Cache命中率,減小了訪存延遲。特別是在網(wǎng)格規(guī)模較大的時候,內(nèi)存讀取次數(shù)增多,能夠節(jié)省更多的運行時間。

        Figure 13 Comparison of explicit parallel computing’s executing time before and after mesh reordering on CPU

        表6統(tǒng)計了CPU隱式計算在網(wǎng)格3上的熱點函數(shù)網(wǎng)格重排序前、后的運行時間。通過圖 14可知,網(wǎng)格重排序可以使部分熱點函數(shù)的CPU運行時間縮短。FI0梯度計算的最明顯,運行時間縮短了大約17%;LU-SGS部分相關(guān)的FI3和FI4運行時間縮短了10%以上。

        Table 6 Comparison of hot spot functions’ implicit executing time before and after mesh reordering on CPU

        Figure 14 Comparison of hot spot functions’ implicit executing time before and after mesh reordering on CPU

        本文也對網(wǎng)格重排序?qū)﹄[式計算的影響進行了評估。針對隱式計算,開展了不同規(guī)模的并行計算。記錄時間如表 7所示。

        對未排序運行時間作無因次化處理,重排序、未排序隱式計算的運行時間如圖 15所示。對于隱式計算,網(wǎng)格重排序仍然能夠使縮短運行時間。

        Table 7 Comparison of implicit parallel computing’s executing time before and after mesh reordering on CPU

        對于規(guī)模較小的網(wǎng)格1(100萬體網(wǎng)格),運行時間縮短接近10%,比顯式計算的優(yōu)化效果更明顯。這可能是由于體網(wǎng)格排序?qū)τ诰仃嚽蠼獾膬?yōu)化即使在網(wǎng)格規(guī)模較小的時候仍然起作用。隨著網(wǎng)格規(guī)模增大,重排序效果也更加明顯,在網(wǎng)格4規(guī)模下,重排序減少了將近20%的運行時間。

        Figure 15 Comparison of implicit parallel computing’s executing time before and after mesh reordering on CPU

        4.3.2 網(wǎng)格重排序?qū)τ贕PU計算性能的影響

        GPU的SIMT(Single Instruction Multiple Threads)能夠使多個線程同時訪問GPU全局內(nèi)存,提高了數(shù)據(jù)吞吐能力。GPU的計算部件SM訪問片上內(nèi)存的帶寬通常高于CPU的訪存帶寬,因此,有必要研究網(wǎng)格重排序?qū)PU計算的影響。本節(jié)只討論顯式計算在GPU上的性能。

        顯式計算在單GPU上400萬網(wǎng)格規(guī)模下8個熱點kernel的運行時間如表 8所示。無因次化(未排序kernel計算時間為標準)的kernel運行時間比較如圖 16所示。由圖16可知,網(wǎng)格重排序使得主要熱點kernel的運行時間縮短了35%~60%。

        Table 8 Executing time of kernels for reordering and unordering

        Figure 16 Comparison of hot spot kernels’ executing time before and after mesh reordering on GPU

        網(wǎng)格重排序優(yōu)化了數(shù)據(jù)在GPU全局內(nèi)存中的分布,減少了數(shù)據(jù)間接訪問帶來的訪存延遲,能夠縮短大部分熱點kernel的運行時間。

        本文還記錄了重排序前、后CFD程序在單GPU上的整體運行時間,如表 9所示。無因次化的運行時間如圖 17所示。網(wǎng)格重排序使得顯式求解CFD程序在GPU上的整體性能得到了提升,運行時間平均縮短了約40%。

        Table 9 Comparison of explicit parallel computing’s executing time before and after grid reordering on GPU

        Figure 17 Comparison of explicit parallel computing’s executing time before and after mesh reordering on GPU

        大部分熱點kernel的運行時間縮短最終使得CFD程序的整體性能得到了提升。因此,網(wǎng)格編號重排序是一種全局性的優(yōu)化策略。

        網(wǎng)格重排序在GPU上的加速效果相比在CPU上的更加明顯。這是GPU的訪存模式造成的:GPU以32個線程組成1個warp,作為基本單位連續(xù)訪問全局內(nèi)存,直到訪問完所需數(shù)據(jù);GPU的L1 Cache只能保證空間局部性,不能保證時間局部性。因此,數(shù)據(jù)局部性的提高減少了GPU內(nèi)存的訪問頻率,降低了訪存延遲。對于CPU,數(shù)據(jù)局部性的優(yōu)化只是提升了L1 Cache的空間局部性,對于時間局部性改善不大,訪存延遲減少也有限。

        5 結(jié)束語

        本文采用網(wǎng)格重排序的方法優(yōu)化了數(shù)據(jù)在內(nèi)存中的分布。針對空氣動力學中典型的三維機翼網(wǎng)格,分別在CPU和GPU上展開了多種規(guī)模的計算,發(fā)現(xiàn)網(wǎng)格重排序能提升數(shù)據(jù)局部性,減少訪存延遲,提高計算效率。具體來說:

        (1)網(wǎng)格重排序?qū)τ嬎憔鹊挠绊戄^?。号判蚯啊⒑箅[式計算的差異在0.5%以內(nèi),可以認為對顯式計算的結(jié)果幾乎沒有影響。

        (2)網(wǎng)格重排序能縮短計算時間。在CPU上,當體網(wǎng)格規(guī)模大于100萬時,網(wǎng)格重排序能夠縮短15%~20%的計算時間;在GPU上,主要計算熱點在網(wǎng)格重排序后計算時間縮短了35%~60%,程序的整體運行時間也相應縮短了40%左右。

        (3)網(wǎng)格重排序?qū)PU顯式計算的優(yōu)化效果更明顯。

        經(jīng)過重排序后,部分函數(shù)的性能下降,這表明排序算法和具體函數(shù)的數(shù)據(jù)使用密切相關(guān)。未來會結(jié)合具體函數(shù)的數(shù)據(jù)使用特點開發(fā)、評估更多的排序算法。

        致謝:感謝風雷軟件團隊和國家超級計算廣州中心。

        猜你喜歡
        排序結(jié)構(gòu)方法
        排序不等式
        《形而上學》△卷的結(jié)構(gòu)和位置
        哲學評論(2021年2期)2021-08-22 01:53:34
        恐怖排序
        論結(jié)構(gòu)
        中華詩詞(2019年7期)2019-11-25 01:43:04
        節(jié)日排序
        刻舟求劍
        兒童繪本(2018年5期)2018-04-12 16:45:32
        可能是方法不對
        論《日出》的結(jié)構(gòu)
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        亚州少妇无套内射激情视频| 亚洲理论电影在线观看| 深夜放纵内射少妇| 亚洲av无码无限在线观看| 国产精品99久久久久久猫咪 | 国产99r视频精品免费观看| 特黄做受又硬又粗又大视频小说| 私人毛片免费高清影视院| 丰满少妇被猛烈进入| 国产成人亚洲不卡在线观看| 97在线视频免费| 极品人妻少妇一区二区| 视频一区视频二区亚洲| 日本久久精品福利视频| 97成人精品国语自产拍| 国模冰莲自慰肥美胞极品人体图| 日韩人妻无码一区二区三区久久99| 精品一区二区三区四区少妇| 亚洲国产精品第一区二区三区| 久久亚洲av熟女国产| 免费看黄色亚洲一区久久| 公与淑婷厨房猛烈进出| 丰满人妻一区二区三区视频53| 18禁免费无码无遮挡网站| 男女上床视频在线观看| 精品一区中文字幕在线观看 | 婷婷开心五月亚洲综合| 偷拍一区二区三区四区| 久久精品成人无码观看不卡| 国产乱子伦精品免费无码专区| 国产精品美女久久久久久大全| 国产无遮挡又黄又爽无VIP| 日韩亚洲国产中文字幕| 视频一区视频二区制服丝袜| 亚洲xxxx做受欧美| 色哟哟av网站在线观看| 日韩一级精品亚洲一区二区精品| 色欲av永久无码精品无码蜜桃 | 理论片午午伦夜理片影院| 综合网在线视频| 中文字幕亚洲精品人妻|