欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種用于計算流體力學(xué)仿真中的GPU計算方法

文檔序號:40620710發(fā)布日期:2025-01-10 18:26閱讀:2來源:國知局
一種用于計算流體力學(xué)仿真中的GPU計算方法

本發(fā)明涉及計算流體力學(xué)(cfd)的高性能計算領(lǐng)域,特別是針對大規(guī)模cpu/gpu異構(gòu)高性能計算系統(tǒng)上的cfd計算方法與結(jié)構(gòu)優(yōu)化。本發(fā)明主要聚焦于熱物理量的gpu加速計算、數(shù)據(jù)傳輸優(yōu)化以及數(shù)組結(jié)構(gòu)的適應(yīng)性改造,可應(yīng)用于寬域組合發(fā)動機內(nèi)流場的快速計算,以期達到更高的計算效率和資源利用率。


背景技術(shù):

1、在計算流體力學(xué)(cfd)的發(fā)展史上,隨著計算需求的日益增長,傳統(tǒng)的cpu中心的計算方法已逐漸顯得力不從心。寬域組合發(fā)動機是未來高速飛行器重要的動力來源。但較為嚴苛的工作性能使其在設(shè)計過程中需要進行大量的數(shù)值計算來滿足設(shè)計需求。對于百萬、千萬量級有限元網(wǎng)格的求解,目前的數(shù)值模擬需要通過上百塊的cpu并行計算來實現(xiàn),由于cpu之間的數(shù)據(jù)通信問題,并行效率并不高,這導(dǎo)致常規(guī)的數(shù)值模擬方法需要消耗大量的計算資源。特別是在熱物理量的計算領(lǐng)域,如溫度、壓力、熵等關(guān)鍵參數(shù)的精確模擬,對于預(yù)測流體行為和設(shè)計優(yōu)化至關(guān)重要。然而,這些計算任務(wù)往往需要處理大量的數(shù)據(jù)和復(fù)雜的數(shù)值方法,導(dǎo)致計算過程耗時且資源密集。

2、cpu作為計算機的運算控制核心,擅長復(fù)雜邏輯運算;而gpu作為圖形處理器,擁有大量流處理器(sp),擅長圖像數(shù)據(jù)并行處理。隨著gpu在并行處理方面的突出能力被廣泛認識,其在cfd領(lǐng)域的應(yīng)用潛力逐漸被挖掘。gpu不僅能夠提供比cpu更多的計算核心,而且其設(shè)計更適合執(zhí)行大規(guī)模并行計算任務(wù)。這使得gpu成為加速cfd仿真的理想選擇,尤其是在處理熱物理量計算這類高度并行化的任務(wù)時。

3、然而,將cfd計算從cpu遷移到gpu并非無障礙。一方面,需要解決的是數(shù)據(jù)結(jié)構(gòu)的適配問題。傳統(tǒng)的二維數(shù)組結(jié)構(gòu)在cpu上運行效率較高,但在gpu上卻可能導(dǎo)致內(nèi)存訪問的低效率和索引沖突。另一方面,cpu與gpu之間的數(shù)據(jù)交換頻繁,成為了影響計算性能的瓶頸。如何有效地管理這些數(shù)據(jù)交換,并減少通信成本,是提升cfd計算性能的關(guān)鍵。


技術(shù)實現(xiàn)思路

1、針對上述問題,本發(fā)明提供一種用于計算流體力學(xué)仿真中的gpu計算方法,解決了由于cpu與gpu之間的數(shù)據(jù)通信問題,并行效率不高,導(dǎo)致數(shù)值模擬方法需要消耗大量計算資源的問題,減少了cpu與gpu之間的通信次數(shù),降低了通信成本,提升了并行計算的效率和數(shù)據(jù)吞吐量。

2、本發(fā)明采用了以下技術(shù)方案來實現(xiàn)目的:一種用于計算流體力學(xué)仿真中的gpu計算方法,包括:

3、(1)搭建基于cpu/gpu異構(gòu)系統(tǒng)的混合編程框架;

4、(2)基于openfoam開源計算框架,建立openfoam-gpu數(shù)據(jù)結(jié)構(gòu);

5、(3)將化學(xué)計算遷移到gpu上;

6、(4)將熱物理量計算任務(wù)從cpu遷移到gpu執(zhí)行,并采用并行計算策略;

7、(5)改進內(nèi)存拷貝邏輯,減少在計算過程中g(shù)pu內(nèi)存與cpu之間的數(shù)據(jù)交換頻率;

8、(6)將原本在cpu上使用的二維數(shù)組結(jié)構(gòu)重構(gòu)為適合gpu并行計算的一維數(shù)組結(jié)構(gòu);

9、其中,所述步驟(1)中,所述搭建基于cpu/gpu異構(gòu)系統(tǒng)的混合編程框架,包括利用nvidia提供的cuda版本的基本線性代數(shù)子程序庫的cublas和cusparse函數(shù)庫對線性代數(shù)運算進行優(yōu)化,使用culatools和magma進行矩陣的分解,以及通過thrust并行算法庫進行編程,建立cpu/gpu異構(gòu)系統(tǒng)的混合編程框架;

10、所述步驟(2)中,所述基于openfoam開源計算框架,建立openfoam-gpu數(shù)據(jù)結(jié)構(gòu),包括基于openfoam原生的類進行針對gpu的重寫,結(jié)合步驟(1)搭建的cpu/gpu異構(gòu)系統(tǒng)的混合編程框架,使得gpu具備滿足openfoam計算要求的數(shù)據(jù)結(jié)構(gòu),并能對數(shù)據(jù)結(jié)構(gòu)進行編輯、計算操作;

11、所述步驟(3)中,化學(xué)計算包括以熱學(xué)相關(guān)為基礎(chǔ)的化學(xué)反應(yīng)相關(guān)類數(shù)據(jù)計算;具體地:所述將化學(xué)計算遷移到gpu上,包括在openfoam原有的chemistrymodel類上進行計算化學(xué)源項、反應(yīng)速率參數(shù)的優(yōu)化,對化學(xué)反應(yīng)源項的求解以及壓強p、溫度t、密度rho參數(shù)并行化重構(gòu);

12、所述步驟(4)中,將熱物理量計算任務(wù)從cpu遷移到gpu執(zhí)行,并采用并行計算策略包括:首先將相關(guān)物理量字段存儲于gpu內(nèi)存,然后利用thrust庫的并行算法,將計算任務(wù)分配至多個gpu線程,最后通過transform函數(shù)、make_zip_iterator和counting_iterator實現(xiàn)網(wǎng)格數(shù)據(jù)點的并行處理;

13、所述步驟(5)中,改進內(nèi)存拷貝邏輯包括:在計算前,將必要的數(shù)據(jù)統(tǒng)一拷貝到cpu內(nèi)存中,計算完成后再統(tǒng)一拷貝回gpu內(nèi)存;

14、所述步驟(6)中,所述將原本在cpu上使用的二維數(shù)組結(jié)構(gòu)轉(zhuǎn)換為適合gpu并行計算的一維數(shù)組結(jié)構(gòu),包括利用labelgpulist存儲轉(zhuǎn)換后的數(shù)據(jù),實現(xiàn)從單元格到點的字段插值的并行計算。

15、可選地,所述步驟(2)中建立openfoam-gpu數(shù)據(jù)結(jié)構(gòu)包括構(gòu)建的scalargpufield類型的數(shù)據(jù)字段,包括焓、壓力、溫度、比容、黏度和熱導(dǎo)率。

16、可選地,所述步驟(3)還具體包括定義了一個chemistrymodelcaculatefunctor<deltattype,thermotype>類的名為func的函數(shù)對象,為壓強p、溫度t、密度rho提供了相應(yīng)的處理方式,再通過thrust并行算法庫中的函數(shù)進行并行計算加速。

17、可選地,所述步驟(4)還具體包括熱物理量hepsithermo類的calculate()函數(shù)負責(zé)處理gpu內(nèi)存中的scalargpufield類型數(shù)據(jù)。

18、可選地,所述步驟(5)還具體包括首先將焓、壓力和溫度字段數(shù)據(jù)從cpu內(nèi)存?zhèn)鬏數(shù)絞pu內(nèi)存,然后,使用統(tǒng)一數(shù)據(jù)拷貝策略,將質(zhì)量、動量和焓源項數(shù)據(jù)從gpu內(nèi)存中拷貝回主機存儲??蛇x地,所述步驟(6)gpu并行計算時,還具體包括通過數(shù)據(jù)結(jié)構(gòu)重構(gòu),將二維數(shù)組展平為一維數(shù)組,利用labelgpulist存儲轉(zhuǎn)換后的數(shù)據(jù),在gpu上實現(xiàn)并行計算,通過thrust::for_each結(jié)合計數(shù)迭代器實現(xiàn)了從單元格到點的字段插值的并行計算。

19、可選地,所述步驟(5)中字段數(shù)據(jù)從cpu內(nèi)存?zhèn)鬏數(shù)絞pu內(nèi)存,利用cudamemcpyasync和cudamemcpysync函數(shù)進行數(shù)據(jù)傳輸。

20、相對于現(xiàn)有技術(shù),本發(fā)明具有如下有益效果:首先,通過將熱物理量計算遷移到gpu上,利用其并行計算能力,顯著提升了計算速度,其次,通過引入數(shù)據(jù)批量拷貝方法,減少了cpu與gpu之間的通信次數(shù),降低了通信成本,最后,通過將二維數(shù)組結(jié)構(gòu)重構(gòu)為一維數(shù)組結(jié)構(gòu),優(yōu)化了內(nèi)存訪問模式,提升了并行計算的效率和數(shù)據(jù)吞吐量。



技術(shù)特征:

1.一種用于計算流體力學(xué)仿真中的gpu計算方法,其特征在于,包括:

2.根據(jù)權(quán)利要求1所述的一種用于計算流體力學(xué)仿真中的gpu計算方法,其特征在于,所述步驟(2)中建立openfoam-gpu數(shù)據(jù)結(jié)構(gòu)包括構(gòu)建的scalargpufield類型的數(shù)據(jù)字段,包括焓、壓力、溫度、比容、黏度和熱導(dǎo)率。

3.根據(jù)權(quán)利要求1所述的一種用于計算流體力學(xué)仿真中的gpu計算方法,其特征在于,所述步驟(3)還具體包括定義了一個chemistrymodelcaculatefunctor<deltattype,thermotype>類的名為func的函數(shù)對象,為壓強p、溫度t、密度rho提供了相應(yīng)的處理方式,再通過thrust并行算法庫中的函數(shù)進行并行計算加速。

4.根據(jù)權(quán)利要求1所述的一種用于計算流體力學(xué)仿真中的gpu計算方法,其特征在于,所述步驟(4)還具體包括熱物理量hepsithermo類的calculate()函數(shù)負責(zé)處理gpu內(nèi)存中的scalargpufield類型數(shù)據(jù)。

5.根據(jù)權(quán)利要求1所述的一種用于計算流體力學(xué)仿真中的gpu計算方法,其特征在于,所述步驟(5)還具體包括首先將焓、壓力和溫度字段數(shù)據(jù)從cpu內(nèi)存?zhèn)鬏數(shù)絞pu內(nèi)存,然后,使用統(tǒng)一數(shù)據(jù)拷貝策略,將質(zhì)量、動量和焓源項數(shù)據(jù)從gpu內(nèi)存中拷貝回主機存儲。

6.根據(jù)權(quán)利要求1所述的一種用于計算流體力學(xué)仿真中的gpu計算方法,其特征在于,所述步驟(6)gpu并行計算時,還具體包括通過數(shù)據(jù)結(jié)構(gòu)重構(gòu),將二維數(shù)組展平為一維數(shù)組,利用labelgpulist存儲轉(zhuǎn)換后的數(shù)據(jù),在gpu上實現(xiàn)并行計算,通過thrust::for_each結(jié)合計數(shù)迭代器實現(xiàn)了從單元格到點的字段插值的并行計算。

7.根據(jù)權(quán)利要求5所述的一種用于計算流體力學(xué)仿真中的gpu計算方法,其特征在于,所述步驟(5)中字段數(shù)據(jù)從cpu內(nèi)存?zhèn)鬏數(shù)絞pu內(nèi)存,利用cudamemcpyasync和cudamemcpysync函數(shù)進行數(shù)據(jù)傳輸。


技術(shù)總結(jié)
本發(fā)明提供了一種用于計算流體力學(xué)仿真中的GPU計算方法,包括搭建基于CPU/GPU異構(gòu)系統(tǒng)的混合編程框架;建立OpenFOAM?GPU數(shù)據(jù)結(jié)構(gòu);將化學(xué)計算遷移到GPU上;將熱物理量計算任務(wù)從CPU遷移到GPU執(zhí)行;改進內(nèi)存拷貝邏輯,減少在計算過程中GPU內(nèi)存與CPU之間的數(shù)據(jù)交換頻率;將原本在CPU上使用的二維數(shù)組結(jié)構(gòu)重構(gòu)為適合GPU并行計算的一維數(shù)組結(jié)構(gòu);解決了由于CPU與GPU之間的數(shù)據(jù)通信問題,并行效率不高,導(dǎo)致數(shù)值模擬方法需要消耗大量計算資源的問題,減少了CPU與GPU之間的通信次數(shù),降低了通信成本,提升了并行計算的效率和數(shù)據(jù)吞吐量。

技術(shù)研發(fā)人員:劉冰,趙通,安健,朱韶華,何國強,秦飛
受保護的技術(shù)使用者:西北工業(yè)大學(xué)
技術(shù)研發(fā)日:
技術(shù)公布日:2025/1/9
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
三河市| 尖扎县| 景泰县| 阜新| 阳曲县| 冷水江市| 泸西县| 祁东县| 北碚区| 遵义县| 彭州市| 合肥市| 页游| 宜阳县| 南京市| 塘沽区| 吴川市| 互助| 天门市| 沁源县| 原平市| 蓬安县| 黑河市| 临城县| 永寿县| 南溪县| 镶黄旗| 罗平县| 宣恩县| 若羌县| 太康县| 佛教| 崇阳县| 左贡县| 绥化市| 中山市| 宁夏| 林州市| 黑龙江省| 宁城县| 尼木县|