亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種顆粒流動(dòng)仿真方法與流程

文檔序號(hào):11620760閱讀:553來(lái)源:國(guó)知局
一種顆粒流動(dòng)仿真方法與流程

本發(fā)明涉及顆粒流動(dòng)仿真技術(shù)領(lǐng)域,尤其涉及一種顆粒流動(dòng)仿真方法。



背景技術(shù):

顆粒系統(tǒng)一直是人們關(guān)注的研究?jī)?nèi)容。在工業(yè)領(lǐng)域如:食品控制、化學(xué)、土木工程、油氣、采礦、制藥、粉末冶金、能源等領(lǐng)域都有大量應(yīng)用;在理論研究方面,如何堆積能達(dá)到最密集堆積、沙堆在什么情況下坍塌以研究雪崩等問(wèn)題。為研究相關(guān)顆粒系統(tǒng),人們需要搭建大型實(shí)驗(yàn)用顆粒系統(tǒng),費(fèi)時(shí)費(fèi)力。并且某些顆粒系統(tǒng)由于成本高,需要在極端的條件下運(yùn)行,不可能通過(guò)實(shí)驗(yàn)搭建完成,而基于虛擬實(shí)驗(yàn)的仿真系統(tǒng)則不存在類(lèi)似的問(wèn)題。

目前顆粒系統(tǒng)模擬的計(jì)算方法主要以dem(離散單元算法)方法為主。dem方法是繼有限元法、計(jì)算流體力學(xué)(cfd)之后,用于分析物質(zhì)系統(tǒng)問(wèn)題的又一種數(shù)值計(jì)算方法。dem方法通過(guò)建立微元體系的參數(shù)化模型,進(jìn)行顆粒行為模擬和分析,為解決眾多涉及顆粒、結(jié)構(gòu)、流體與電磁及其耦合等綜合問(wèn)題提供了一個(gè)平臺(tái),已成為科學(xué)過(guò)程分析、產(chǎn)品設(shè)計(jì)優(yōu)化和研發(fā)的一種強(qiáng)有力的工具。目前dem方法除了在科學(xué)研究中運(yùn)用,也在科技應(yīng)用和工業(yè)領(lǐng)域逐漸成熟,并已從顆粒物質(zhì)研究、巖土工程和地質(zhì)工程等科學(xué)及應(yīng)用拓展至工業(yè)過(guò)程與工業(yè)產(chǎn)品的設(shè)計(jì)、研發(fā)領(lǐng)域,在諸多工業(yè)領(lǐng)域取得了重要成果。

dem方法的特點(diǎn)是仿真精度高,但計(jì)算量大。當(dāng)前,dem方法的實(shí)現(xiàn)以cpu為主,這些方法由于cpu計(jì)算能力不足導(dǎo)致計(jì)算規(guī)模不足,在可以接受的機(jī)時(shí)內(nèi)只能計(jì)算很小的空間尺寸和時(shí)間尺寸;或者因建設(shè)成本高,需要建設(shè)大規(guī)模甚至超大規(guī)模的cpu計(jì)算機(jī)集群,而且耗電量過(guò)大,使用和維護(hù)成本極高。此外,目前用cpu實(shí)現(xiàn)的dem方法要么顆粒數(shù)較少,要么是低密集顆粒碰撞,無(wú)法完全實(shí)現(xiàn)高密度大量顆粒碰撞模擬。

使用gpu(圖形處理器,graphicsprocessingunit)進(jìn)行通用計(jì)算的技術(shù)越來(lái)越成熟,如當(dāng)今兩大顯卡制造商nvidia和amd均支持gpu通用計(jì)算。鑒于上述問(wèn)題,本申請(qǐng)發(fā)明人提出了一種顆粒流動(dòng)仿真方法和方法。



技術(shù)實(shí)現(xiàn)要素:

根據(jù)本發(fā)明,提出一種顆粒流動(dòng)仿真方法,能夠?qū)崿F(xiàn)高密度顆粒虛擬實(shí)驗(yàn)仿真,并降低能耗的同時(shí)提高運(yùn)算效率。

根據(jù)本發(fā)明一方面,提出了一種顆粒流動(dòng)仿真方法,其在并行的多個(gè)gpu上執(zhí)行離散單元算法(dem)方法來(lái)進(jìn)行顆粒流動(dòng)仿真,該方法包括以下步驟:

a、使用dem方法對(duì)顆粒建模,并將建立的dem模型分配為多個(gè)粒子,將該多個(gè)粒子分配給多個(gè)計(jì)算節(jié)點(diǎn)進(jìn)行處理,每個(gè)計(jì)算節(jié)點(diǎn)的cpu和gpu分別分配有內(nèi)存空間,并在cpu中進(jìn)行初始化數(shù)據(jù),將初始化后的數(shù)據(jù)從cpu內(nèi)存空間拷貝入所述gpu的內(nèi)存空間中;

b、上述每個(gè)計(jì)算節(jié)點(diǎn)的gpu對(duì)每個(gè)粒子進(jìn)行處理,其中每個(gè)計(jì)算節(jié)點(diǎn)的gpu的每個(gè)流處理器負(fù)責(zé)處理一個(gè)粒子,并更新粒子存儲(chǔ)在gpu內(nèi)存空間中的坐標(biāo)及粒子速度;

c、在步驟b的處理過(guò)程中,確定每個(gè)計(jì)算節(jié)點(diǎn)控制的粒子,將每個(gè)計(jì)算節(jié)點(diǎn)控制的粒子個(gè)數(shù)拷貝至cpu內(nèi)存空間中,并根據(jù)gpu內(nèi)存空間中的粒子數(shù)進(jìn)行動(dòng)態(tài)劃分,以按照均衡負(fù)載原則動(dòng)態(tài)地確定出每個(gè)計(jì)算節(jié)點(diǎn)計(jì)算哪些粒子;

d、利用mpi(messagepassinginterface)接口協(xié)議把上述進(jìn)行數(shù)據(jù)動(dòng)態(tài)劃分后的粒子在每個(gè)計(jì)算節(jié)點(diǎn)間遷移;

e、根據(jù)步驟c得到的每個(gè)計(jì)算節(jié)點(diǎn)控制的粒子,在gpu中計(jì)算重疊區(qū)域,并將數(shù)據(jù)拷入cpu內(nèi)存,而后通過(guò)mpi接口協(xié)議進(jìn)行數(shù)據(jù)交換;

f、每個(gè)計(jì)算節(jié)點(diǎn)的gpu中的每個(gè)流處理器根據(jù)每個(gè)粒子的坐標(biāo),計(jì)算每個(gè)粒子所在gpu內(nèi)存空間中網(wǎng)格的編號(hào);

g、每個(gè)計(jì)算節(jié)點(diǎn)的gpu中的每個(gè)流處理器處理計(jì)算每個(gè)粒子運(yùn)動(dòng)中的受力和加速度;

h、每個(gè)計(jì)算節(jié)點(diǎn)的gpu中的每個(gè)流處理器處理每個(gè)粒子速度;

i、回到步驟b直至達(dá)到指定步數(shù);

j、釋放主控節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)的內(nèi)存空間。

在一個(gè)實(shí)施例中,步驟b、步驟f、步驟g和步驟h利用gpu對(duì)每個(gè)粒子進(jìn)行并行數(shù)據(jù)處理,即每個(gè)gpu對(duì)粒子的處理是同步進(jìn)行的。

在一個(gè)實(shí)施例中,步驟d中所述粒子在各節(jié)點(diǎn)間遷移利用粒子在節(jié)點(diǎn)間傳輸遷移的方法,即用mpi接口發(fā)送和接收函數(shù),實(shí)現(xiàn)粒子各物理量的發(fā)送和接收,進(jìn)而實(shí)現(xiàn)了粒子在節(jié)點(diǎn)間的傳輸遷移。

在一個(gè)實(shí)施例中,在步驟e中,所述在gpu中計(jì)算重疊區(qū)域(overlap區(qū))包括:利用在gpu計(jì)算overlap區(qū),gpu的一個(gè)流處理器處理一個(gè)網(wǎng)格。在三維情況下,每個(gè)網(wǎng)格有26個(gè)網(wǎng)格與之相鄰,判斷相鄰網(wǎng)格是否在當(dāng)前計(jì)算節(jié)點(diǎn)中,如果不是,則算作overlap區(qū),從其他節(jié)點(diǎn)遷移獲得。

根據(jù)本發(fā)明另一方面,提出了一種基于gpu的顆粒流動(dòng)仿真方法,包括:

建模步驟,確定顆粒材料、顆粒參數(shù)、邊界條件和幾何體形狀,以及顆粒初始分布的區(qū)域,并根據(jù)預(yù)定的顆粒分布區(qū)域和數(shù)量生成顆粒;

任務(wù)管理步驟,根據(jù)顆??倲?shù)和多個(gè)計(jì)算節(jié)點(diǎn)上空閑gpu的數(shù)目,確定最優(yōu)gpu數(shù)目,并結(jié)合最優(yōu)gpu數(shù)目和當(dāng)前空閑gpu數(shù)目確定參與計(jì)算的gpu,并將參與計(jì)算的gpu狀態(tài)設(shè)置為非空閑;以及

計(jì)算步驟,包括

初始化各計(jì)算節(jié)點(diǎn)的參與計(jì)算的gpu,并向各gpu發(fā)送計(jì)算所需的顆粒信息,

各gpu并行更新預(yù)定速度,對(duì)接收的顆粒信息排序以生成各自的排序元胞列表,

各gpu并行計(jì)算當(dāng)前各自進(jìn)程中非零網(wǎng)格編號(hào)及網(wǎng)格中顆粒數(shù)目,并發(fā)送至所述多個(gè)計(jì)算節(jié)點(diǎn)之中的主控節(jié)點(diǎn),由主控節(jié)點(diǎn)依照每個(gè)gpu最優(yōu)顆粒數(shù)目進(jìn)行動(dòng)態(tài)劃分網(wǎng)格,確定每個(gè)gpu并行計(jì)算的網(wǎng)格數(shù)目和編號(hào),

根據(jù)主控節(jié)點(diǎn)的確定結(jié)果,各gpu并行發(fā)送和接收顆粒信息,并在各gpu中重新生成各自的排序元胞列表,

在各gpu中生成當(dāng)前時(shí)刻的碰撞列表,

根據(jù)當(dāng)前時(shí)刻的碰撞列表以及前一時(shí)刻的碰撞列表和切向相對(duì)位移,在各gpu中并行調(diào)整切向相對(duì)位移的位置,使其與當(dāng)前碰撞列表保持一致,

根據(jù)hm(hertz-mindlin)接觸力學(xué)模型,在各gpu中并行計(jì)算每個(gè)顆粒的受力和加速度,存儲(chǔ)當(dāng)前計(jì)算結(jié)果;

如果計(jì)算沒(méi)有完成,就返回至各gpu并行更新預(yù)定速度的步驟,否則計(jì)算步驟結(jié)束。

在一個(gè)實(shí)施例中,所述方法還包括展示步驟,包括:確定邊界條件,將幾何體邊界用透明曲面做出;根據(jù)顆粒位置和顆粒直徑,將顆粒用同色或不同色的小球畫(huà)出;以及用灰度圖顯示標(biāo)量場(chǎng),并通過(guò)將顆粒信息加權(quán)映射到網(wǎng)格上,用流線(xiàn)繪制方法畫(huà)出向量場(chǎng)。

在一個(gè)實(shí)施例中,保存所有的顆粒的物理信息至外部存儲(chǔ)裝置。

在一個(gè)實(shí)施例中,各gpu并行計(jì)算相關(guān)物理統(tǒng)計(jì)量。

在一個(gè)實(shí)施例中,各gpu并行計(jì)算相關(guān)物理統(tǒng)計(jì)量。

在一個(gè)實(shí)施例中,根據(jù)預(yù)定的顆粒分布區(qū)域和數(shù)量生成顆粒包括:在較小的空間內(nèi)生成若干顆粒,再將這些顆粒平移復(fù)制填充至其它空間,直至滿(mǎn)足顆粒數(shù)量要求。

在一個(gè)實(shí)施例中,排序元胞列表對(duì)所有顆粒按照顆粒所在網(wǎng)格進(jìn)行排序。

在一個(gè)實(shí)施例中,采用動(dòng)態(tài)劃分方法,由gpu并行計(jì)算非零網(wǎng)格編號(hào)及網(wǎng)格中粒子數(shù)目。

在一個(gè)實(shí)施例中,在每個(gè)gpu中采用一個(gè)線(xiàn)程對(duì)應(yīng)一個(gè)顆粒的方式來(lái)進(jìn)行計(jì)算。

在一個(gè)實(shí)施例中,計(jì)算切向相對(duì)位移包括:記錄上一時(shí)刻的切向相對(duì)位移,并根據(jù)當(dāng)前時(shí)刻的碰撞列表對(duì)其進(jìn)行更新。

在一個(gè)實(shí)施例中,使用拷貝或指針交換技術(shù)將當(dāng)前計(jì)算結(jié)果存儲(chǔ)至數(shù)組中。

根據(jù)本發(fā)明又一方面,提出了一種顆粒流動(dòng)仿真方法,包括:

建模模塊,配置為確定顆粒材料、顆粒參數(shù)、邊界條件和幾何體形狀,以及顆粒初始分布的區(qū)域,并根據(jù)預(yù)定的顆粒分布區(qū)域和數(shù)量生成顆粒;

任務(wù)管理模塊,配置為根據(jù)顆??倲?shù)和多個(gè)計(jì)算節(jié)點(diǎn)上空閑gpu的數(shù)目,確定最優(yōu)gpu數(shù)目,并結(jié)合最優(yōu)gpu數(shù)目和當(dāng)前空閑gpu數(shù)目確定參與計(jì)算的gpu,并將參與計(jì)算的gpu狀態(tài)設(shè)置為非空閑;以及

計(jì)算模塊,配置為

初始化各計(jì)算節(jié)點(diǎn)的參與計(jì)算的gpu,并向各gpu發(fā)送計(jì)算所需的顆粒信息,

各gpu并行更新預(yù)定的速度和坐標(biāo),對(duì)接收的顆粒信息排序以生成各自的排序元胞列表,

各gpu并行更新預(yù)定的速度和坐標(biāo),對(duì)接收的顆粒信息排序以生成各自的排序元胞列表,

各gpu并行計(jì)算當(dāng)前各自進(jìn)程中非零網(wǎng)格編號(hào)及網(wǎng)格中顆粒數(shù)目,并發(fā)送至主控節(jié)點(diǎn),由主控節(jié)點(diǎn)依照每個(gè)gpu最優(yōu)顆粒數(shù)目進(jìn)行動(dòng)態(tài)劃分網(wǎng)格,確定每個(gè)gpu并行計(jì)算的網(wǎng)格數(shù)目和編號(hào),

根據(jù)主控節(jié)點(diǎn)的確定結(jié)果,各gpu并行發(fā)送和接收顆粒信息,并在各gpu中重新生成各自的排序元胞列表,

在各gpu中生成當(dāng)前時(shí)刻的碰撞列表,根據(jù)當(dāng)前時(shí)刻的碰撞列表以及前一時(shí)刻的碰撞列表和切向相對(duì)位移,在各gpu中并行調(diào)整切向相對(duì)位移的位置,

根據(jù)接觸力學(xué)模型,在各gpu中并行計(jì)算每個(gè)顆粒的受力和加速度,存儲(chǔ)當(dāng)前計(jì)算結(jié)果;

如果計(jì)算沒(méi)有完成,就返回至各gpu并行更新預(yù)定速度和坐標(biāo)的步驟,否則計(jì)算結(jié)束。

在一個(gè)實(shí)施例中,所述系統(tǒng)還包括展示模塊,配置為:確定邊界條件,將幾何體邊界用透明曲面做出;根據(jù)顆粒位置和顆粒直徑,將顆粒用同色或不同色的小球畫(huà)出;以及用灰度圖顯示標(biāo)量場(chǎng),并通過(guò)將顆粒信息加權(quán)映射到網(wǎng)格上,用流線(xiàn)繪制方法畫(huà)出向量場(chǎng)。

根據(jù)本發(fā)明再一方面,提出了一種顆粒流動(dòng)仿真方法,包括:

前端服務(wù)器,配置為根據(jù)客戶(hù)端輸入的顆粒建模信息生成顆粒信息,并且生成幾何體信息;

管理節(jié)點(diǎn),配置為從前端服務(wù)器接收顆粒信息和幾何體信息,根據(jù)顆粒的數(shù)目及各個(gè)計(jì)算節(jié)點(diǎn)中空閑的gpu數(shù)目,確定使用哪些計(jì)算節(jié)點(diǎn)中的哪些gpu,然后根據(jù)確定的gpu的數(shù)目及顆粒在空間中的分布情況確定哪些顆粒由哪個(gè)計(jì)算節(jié)點(diǎn)的哪個(gè)gpu進(jìn)行計(jì)算,并根據(jù)確定結(jié)果進(jìn)行分配;

多個(gè)計(jì)算節(jié)點(diǎn),各自包括多個(gè)gpu,配置為在多個(gè)gpu中并行計(jì)算顆粒碰撞導(dǎo)致的每個(gè)顆粒的受力,進(jìn)而計(jì)算出加速度,以仿真顆粒流動(dòng);

后端服務(wù)器,配置為展示仿真結(jié)果。

后端服務(wù)器,配置為展示仿真結(jié)果。

在一個(gè)實(shí)施例中,前端服務(wù)器通過(guò)將幾何體分解成有限的曲面,并對(duì)這些曲面編號(hào),來(lái)生成幾何體信息。

在一個(gè)實(shí)施例中,后端服務(wù)器在展示的仿真結(jié)果中將幾何體邊界用透明曲面做出,根據(jù)顆粒位置和顆粒直徑,將顆粒用同色或不同色的小球畫(huà)出,以及用灰度圖顯示標(biāo)量場(chǎng),并通過(guò)將顆粒信息加權(quán)映射到網(wǎng)格上,用流線(xiàn)繪制方法畫(huà)出向量場(chǎng)。

在一個(gè)實(shí)施例中,前端服務(wù)器、管理節(jié)點(diǎn)、計(jì)算節(jié)點(diǎn)和后端服務(wù)器通過(guò)ib(infiniband)網(wǎng)路通信。

根據(jù)本發(fā)明,實(shí)現(xiàn)了基于多個(gè)gpu的從建模到結(jié)果展示的仿真系統(tǒng),并結(jié)合多gpu的硬件特點(diǎn),實(shí)現(xiàn)了多gpu的顆粒流動(dòng)仿真方法。根據(jù)本發(fā)明實(shí)施例,利用gpu的超強(qiáng)浮點(diǎn)運(yùn)算能力、高帶寬及多輕量計(jì)算核心的特點(diǎn),充分利用gpu內(nèi)眾多流處理器,將分子動(dòng)力學(xué)中的加速算法合理引入dem算法,使得dem算法更適合gpu硬件架構(gòu)。在多gpu實(shí)現(xiàn)時(shí),該算法采用動(dòng)態(tài)劃分?jǐn)?shù)據(jù)以實(shí)現(xiàn)負(fù)載均衡的方法,減小了overlap區(qū)及通訊量,極大地提高了gpu和cpu的利用率及運(yùn)算效率。在可以接受的能耗和時(shí)間條件下,取得了非常好的計(jì)算效果,達(dá)到了在能耗小、維修成本低的同時(shí)提高運(yùn)算效率的效果。

附圖說(shuō)明

下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。附圖中:

圖1是根據(jù)本發(fā)明實(shí)施例的一種顆粒流動(dòng)仿真方法的結(jié)構(gòu)示意圖;

圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的一種顆粒流動(dòng)仿真方法的流程圖;

圖3是根據(jù)本發(fā)明另一個(gè)實(shí)施例的一種顆粒流動(dòng)仿真方法的模塊結(jié)構(gòu)示意圖;

圖4是根據(jù)本發(fā)明實(shí)施例的計(jì)算模塊的操作流程圖。

具體實(shí)施方式

以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說(shuō)明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明。

圖1是根據(jù)本發(fā)明實(shí)施例的一種顆粒流動(dòng)仿真方法的結(jié)構(gòu)示意圖。如圖1所示,該系統(tǒng)包括前端服務(wù)器10、后端服務(wù)器20、管理節(jié)點(diǎn)30、多個(gè)計(jì)算節(jié)點(diǎn)40-1,...,40n(n是大于1的整數(shù))、ib交換機(jī)50和以太網(wǎng)交換機(jī)60。此外,圖1還示出了該系統(tǒng)包括客戶(hù)端和存儲(chǔ)設(shè)備。客戶(hù)端可以經(jīng)由互聯(lián)網(wǎng)與前端服務(wù)器10通信,這使得現(xiàn)場(chǎng)實(shí)驗(yàn)人員能夠遠(yuǎn)程進(jìn)行顆粒流動(dòng)仿真實(shí)驗(yàn)。例如,用戶(hù)可以在客戶(hù)端上輸入建模所需信息或參數(shù),例如顆粒的數(shù)目、大小、材料等信息(楊氏模量、泊松(poisson)比、密度、恢復(fù)系數(shù)等)及顆粒的分布范圍、摩擦系數(shù)、邊界條件等參數(shù),并給出與顆粒球接觸的幾何體的材料信息,將這些信息或參數(shù)傳入前端服務(wù)器中。該外部的存儲(chǔ)設(shè)備可以存儲(chǔ)例如各個(gè)計(jì)算節(jié)點(diǎn)的計(jì)算結(jié)果,以防止死機(jī)、斷電等意外情況發(fā)生導(dǎo)致數(shù)據(jù)丟失。這里,客戶(hù)端和外部存儲(chǔ)設(shè)備是可選的,例如用戶(hù)可以直接在前端服務(wù)器上進(jìn)行輸入,或者計(jì)算節(jié)點(diǎn)的計(jì)算結(jié)果可以存儲(chǔ)到前端或后端服務(wù)器等中。

在圖1中,前端服務(wù)器10、后端服務(wù)器20和計(jì)算節(jié)點(diǎn)40之間經(jīng)由ib交換機(jī)50連接,并且前端服務(wù)器10、管理節(jié)點(diǎn)30和計(jì)算節(jié)點(diǎn)40之間經(jīng)由以太網(wǎng)交換機(jī)60連接。然而,本發(fā)明實(shí)施例也可以采用其他任何適當(dāng)?shù)倪B接方式。在一個(gè)實(shí)施例中,計(jì)算節(jié)點(diǎn)40可以是有g(shù)pu加速卡的高性能集群。在一個(gè)實(shí)施例中,每個(gè)計(jì)算節(jié)點(diǎn)都具有g(shù)f110核心以上的nvidia通用計(jì)算卡。在一個(gè)實(shí)施例中,計(jì)算節(jié)點(diǎn)使用40gb的ib(infiniband)網(wǎng)路連接。在一個(gè)實(shí)施例中,前后端服務(wù)器各自為一臺(tái)具有quadrio6000顯卡的圖形工作站。例如,工作站內(nèi)存大于32g,并具有ib網(wǎng)卡。

在圖1中,前端服務(wù)器10、后端服務(wù)器20和計(jì)算節(jié)點(diǎn)40之間經(jīng)由ib交換機(jī)50連接,并且前端服務(wù)器10、管理節(jié)點(diǎn)30和計(jì)算節(jié)點(diǎn)40之間經(jīng)由以太網(wǎng)交換機(jī)60連接。然而,本發(fā)明實(shí)施例也可以采用其他任何適當(dāng)?shù)倪B接方式。在一個(gè)實(shí)施例中,計(jì)算節(jié)點(diǎn)40可以是有g(shù)pu加速卡的高性能集群。在一個(gè)實(shí)施例中,每個(gè)計(jì)算節(jié)點(diǎn)都具有g(shù)f110核心以上的nvidia通用計(jì)算卡。在一個(gè)實(shí)施例中,計(jì)算節(jié)點(diǎn)使用40gb的ib(infiniband)網(wǎng)路連接。在一個(gè)實(shí)施例中,前后端服務(wù)器各自為一臺(tái)具有quadrio6000顯卡的圖形工作站。例如,工作站內(nèi)存大于32g,并具有ib網(wǎng)卡。

在本發(fā)明實(shí)施例的一種顆粒流動(dòng)仿真方法中,前端服務(wù)器10根據(jù)客戶(hù)端輸入的顆粒建模信息生成顆粒信息,并且生成幾何體信息。例如,前端服務(wù)器10可以接收有關(guān)顆粒的尺寸、材料及幾何構(gòu)型的輸入,也可通過(guò)交互方式增、刪顆粒,并移動(dòng)顆粒的位置。前端服務(wù)器10可以通過(guò)將幾何體分解成有限的曲面,并對(duì)這些曲面編號(hào),來(lái)生成幾何體信息。管理節(jié)點(diǎn)30可以任意查看當(dāng)前各計(jì)算節(jié)點(diǎn)的運(yùn)行狀態(tài)、gpu的工作狀態(tài)、存儲(chǔ)情況等,并可中止提交的任務(wù),保證各任務(wù)之間不產(chǎn)生沖突。例如,管理節(jié)點(diǎn)30從前端服務(wù)器10接收顆粒信息和幾何體信息,根據(jù)顆粒的數(shù)目及各個(gè)計(jì)算節(jié)點(diǎn)中空閑的gpu數(shù)目,確定使用哪些計(jì)算節(jié)點(diǎn)中的哪些gpu,然后根據(jù)確定的gpu的數(shù)目及顆粒在空間中的分布情況確定哪些顆粒由哪個(gè)計(jì)算節(jié)點(diǎn)的哪個(gè)gpu進(jìn)行計(jì)算,并根據(jù)確定結(jié)果進(jìn)行分配。各個(gè)計(jì)算節(jié)點(diǎn)40構(gòu)成整個(gè)計(jì)算模塊,能夠處理復(fù)雜的邊界問(wèn)題,并行運(yùn)行多個(gè)gpu,具有中斷功能(如斷電),可接著中斷前狀態(tài)繼續(xù)運(yùn)算,該計(jì)算模塊使用數(shù)據(jù)的動(dòng)態(tài)劃分方法及指針交換技術(shù),以保證數(shù)據(jù)的動(dòng)態(tài)平衡。例如,各個(gè)計(jì)算節(jié)點(diǎn)40在各自gpu中并行計(jì)算顆粒碰撞導(dǎo)致的每個(gè)顆粒的受力,進(jìn)而計(jì)算出加速度,以仿真顆粒流動(dòng)。后端服務(wù)器20展示仿真結(jié)果,例如動(dòng)態(tài)展示顆粒當(dāng)前的構(gòu)型、溫度場(chǎng)、流場(chǎng)、壓強(qiáng)場(chǎng)等參數(shù),也可通過(guò)交互方式調(diào)整觀察角度,任意縮放顆粒群組。例如,后端服務(wù)器20可以包括顯示器等輸出設(shè)備。后端服務(wù)器20可以將幾何體邊界用透明曲面做出,根據(jù)顆粒位置和顆粒直徑,將顆粒用同色或不同色的小球畫(huà)出,以及用灰度圖顯示溫度場(chǎng)等標(biāo)量場(chǎng),并通過(guò)將顆粒信息加權(quán)映射到網(wǎng)格上,用流線(xiàn)繪制方法畫(huà)出流場(chǎng)、壓強(qiáng)場(chǎng)等向量場(chǎng)。

以上系統(tǒng)僅僅是本發(fā)明基本構(gòu)思的一種實(shí)現(xiàn)。本領(lǐng)域技術(shù)人員可以理解,上述各個(gè)部件的功能可以進(jìn)行再分配或組合,以形成其他的系統(tǒng)構(gòu)架。此外,如果功能足夠強(qiáng)大,上述各個(gè)部件的功能可以集成到單個(gè)計(jì)算機(jī)或工作站中。

圖2是可以在本發(fā)明實(shí)施例的仿真系統(tǒng)上執(zhí)行的基于gpu的顆粒流動(dòng)仿真方法的流程圖。如圖2所示,該仿真方法包括如下步驟。

201、使用dem方法對(duì)顆粒建模,并將建立的dem模型分配為多個(gè)粒子,將該多個(gè)粒子分配給多個(gè)計(jì)算節(jié)點(diǎn)進(jìn)行處理,每個(gè)計(jì)算節(jié)點(diǎn)的cpu和gpu分別分配有內(nèi)存空間,并在cpu中進(jìn)行初始化數(shù)據(jù),將初始化后的數(shù)據(jù)從cpu內(nèi)存空間拷貝入所述gpu的內(nèi)存空間中。

202、上述每個(gè)計(jì)算節(jié)點(diǎn)的gpu對(duì)每個(gè)粒子進(jìn)行處理,其中每個(gè)計(jì)算節(jié)點(diǎn)的gpu的每個(gè)流處理器負(fù)責(zé)處理一個(gè)粒子,并更新粒子存儲(chǔ)在gpu內(nèi)存空間中的坐標(biāo)及粒子速度。

203、由于存儲(chǔ)在gpu內(nèi)存空間中的粒子的坐標(biāo)會(huì)發(fā)生改變,為保證負(fù)載均衡,因此每次計(jì)算中各個(gè)節(jié)點(diǎn)計(jì)算的粒子不相同,首先,每個(gè)計(jì)算節(jié)點(diǎn)的gpu計(jì)算出該節(jié)點(diǎn)控制的粒子,并將每個(gè)gpu控制的粒子個(gè)數(shù)拷貝至cpu內(nèi)存空間中,并根據(jù)gpu內(nèi)存空間中的網(wǎng)格中粒子數(shù)進(jìn)行數(shù)據(jù)的動(dòng)態(tài)劃分,即按照均衡負(fù)載的原則,計(jì)算出每個(gè)節(jié)點(diǎn)計(jì)算哪些粒子。

204、利用mpi接口協(xié)議把上述進(jìn)行數(shù)據(jù)動(dòng)態(tài)劃分后的粒子在每個(gè)計(jì)算節(jié)點(diǎn)間遷移。

205、根據(jù)步驟203得到的每個(gè)計(jì)算節(jié)點(diǎn)控制的粒子,在gpu中計(jì)算重疊區(qū)域,并將數(shù)據(jù)拷入cpu內(nèi)存,而后通過(guò)mpi接口協(xié)議進(jìn)行數(shù)據(jù)交換。

206、每個(gè)計(jì)算節(jié)點(diǎn)的gpu中的每個(gè)流處理器根據(jù)每個(gè)粒子的坐標(biāo),計(jì)算出每個(gè)粒子所在gpu內(nèi)存空間中網(wǎng)格的編號(hào)。

207、每個(gè)計(jì)算節(jié)點(diǎn)的gpu中的每個(gè)流處理器處理計(jì)算每個(gè)粒子運(yùn)動(dòng)中的受力和加速度。

上述只是本發(fā)明的較佳實(shí)施例,并非對(duì)本發(fā)明作任何形式上的限制。雖然本發(fā)明已以較佳實(shí)施例揭露如上,然而并非用以限定本發(fā)明。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所做的任何簡(jiǎn)單修改、等同變化及修飾,均應(yīng)落在本發(fā)明技術(shù)方案保護(hù)的范圍內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1