一種基于gpu的高能散裂反應(yīng)級(jí)聯(lián)模擬仿真方法
【技術(shù)領(lǐng)域】
[0001] 本公開(kāi)總體上涉及散裂過(guò)程中多種粒子的產(chǎn)生及多粒子輸運(yùn)仿真技術(shù)領(lǐng)域,更具 體地,涉及一種可應(yīng)用于中子、質(zhì)子和各種輕帶電粒子的產(chǎn)生及混合輸運(yùn)研究的基于GPU 的蒙特卡羅輸運(yùn)仿真方法。
【背景技術(shù)】
[0002] 除非本文中另行指出,否則在本節(jié)中描述的內(nèi)容不是本申請(qǐng)中權(quán)利要求的現(xiàn)有技 術(shù),且不由于在本節(jié)中包括這些內(nèi)容而承認(rèn)這些內(nèi)容是現(xiàn)有技術(shù)。
[0003] 基于 ADS (Accelerator Driven Sub-critical System)的發(fā)展的需求,對(duì)散裂物 理過(guò)程中粒子的產(chǎn)生及粒子輸運(yùn)過(guò)程的模擬具有重要的意義。對(duì)于輸運(yùn)過(guò)程的求解算法至 今主要有兩種:確定性方法和蒙特卡洛(Monte Carlo)方法。蒙特卡洛方法是以概率統(tǒng)計(jì) 理論為指導(dǎo)的一類非常重要的數(shù)值計(jì)算方法,主要使用隨機(jī)數(shù)(或更常見(jiàn)的偽隨機(jī)數(shù))來(lái) 解決很多計(jì)算問(wèn)題。蒙特卡洛方法具有收斂速度與問(wèn)題的維數(shù)無(wú)關(guān)、受問(wèn)題的條件限制影 響小且程序結(jié)構(gòu)簡(jiǎn)單等特點(diǎn)。在處理粒子輸運(yùn)相關(guān)時(shí),蒙特卡洛方法對(duì)于處理截面與能量、 散射各向異性、介質(zhì)非均勻、復(fù)雜幾何、事件相關(guān)等問(wèn)題時(shí)具有得天獨(dú)厚的優(yōu)勢(shì)。但其最大 的缺點(diǎn)在于收斂速度慢,誤差的概率性質(zhì)使得需要大量的抽樣才能保證準(zhǔn)確度。
[0004] 目前粒子輸運(yùn)模擬計(jì)算的實(shí)現(xiàn)以中央處理單元(CPU)為主。針對(duì)散裂物理過(guò)程的 蒙特卡洛模擬,要想滿足計(jì)算精度的需求,需要超大計(jì)算量。這時(shí)候CPU計(jì)算能力會(huì)顯得不 足,即使可以建設(shè)大規(guī)模甚至超大規(guī)模的CPU計(jì)算機(jī)集群,但這樣會(huì)出現(xiàn)耗電量過(guò)大、使用 和維護(hù)成本極高等問(wèn)題。
【發(fā)明內(nèi)容】
[0005] 為了解決上述問(wèn)題,提供了根據(jù)本公開(kāi)的在圖形處理單元"GPU"處執(zhí)行的用于對(duì) 散裂反應(yīng)進(jìn)行仿真的方法以及包括GPU在內(nèi)的電子設(shè)備。
[0006] 根據(jù)本公開(kāi)的第一方面,提供了一種在圖形處理單元"GPU"處執(zhí)行的用于對(duì)散裂 反應(yīng)進(jìn)行仿真的方法。該方法包括:(a)接收與所述散裂反應(yīng)有關(guān)的初始信息,所述初始信 息至少包括各粒子的粒子屬性和粒子能量;(b)根據(jù)所述粒子屬性和所述粒子能量來(lái)確定 可反應(yīng)粒子的數(shù)目;(c)如果所述數(shù)目等于零,則停止所述方法,否則根據(jù)所述粒子屬性和 所述粒子能量來(lái)確定相應(yīng)粒子的粒子狀態(tài);以及(d)針對(duì)具有相同粒子狀態(tài)的粒子并行執(zhí) 行與粒子狀態(tài)相對(duì)應(yīng)的處理或建模,并根據(jù)所述處理或所述建模的結(jié)果來(lái)更新相應(yīng)粒子的 粒子屬性、粒子能量和粒子狀態(tài),以及返回步驟(b)。
[0007] 根據(jù)一些實(shí)施例,所述初始信息還包括用于限定邊界條件的幾何體信息。
[0008] 根據(jù)一些實(shí)施例,所述粒子屬性包括以下至少一項(xiàng):質(zhì)子數(shù)、質(zhì)量數(shù)、三維位置、三 維速度。
[0009] 根據(jù)一些實(shí)施例,所述粒子能量包括以下至少一項(xiàng):動(dòng)能、動(dòng)量。
[0010] 根據(jù)一些實(shí)施例,步驟(b)具體包括:根據(jù)各粒子的質(zhì)子數(shù)、質(zhì)量數(shù)和動(dòng)能來(lái)確定 其是否是可反應(yīng)粒子,以及步驟(C)具體包括:如果是可反應(yīng)粒子,則將所述粒子置于第一 狀態(tài)下,否則將所述粒子置于計(jì)算終止?fàn)顟B(tài)下。
[0011] 根據(jù)一些實(shí)施例,步驟(d)具體包括:對(duì)于處于所述第一狀態(tài)下的粒子,根據(jù)其質(zhì) 子數(shù)、質(zhì)量數(shù)和動(dòng)能來(lái)確定所述粒子的自由程;以及根據(jù)其質(zhì)子數(shù)來(lái)確定所述粒子是否帶 電,如果所述粒子帶電,則將所述粒子置于第二狀態(tài)下,否則將所述粒子置于第三狀態(tài)。
[0012] 根據(jù)一些實(shí)施例,步驟(d)具體包括:對(duì)于處于所述第二狀態(tài)下的粒子,根據(jù)其質(zhì) 子數(shù)、質(zhì)量數(shù)和動(dòng)能來(lái)確定所述粒子的能損;以及如果所述粒子的能損使得所述粒子的動(dòng) 能不滿足反應(yīng)條件,則將所述粒子置于計(jì)算終止?fàn)顟B(tài),否則維持所述粒子的當(dāng)前狀態(tài)。
[0013] 根據(jù)一些實(shí)施例,步驟(d)具體包括:對(duì)于處于所述第二狀態(tài)下的粒子,根據(jù)其質(zhì) 子數(shù)、質(zhì)量數(shù)、三維位置、動(dòng)能以及所述幾何體信息來(lái)確定所述粒子是否出界;以及如果出 界,則將所述粒子置于計(jì)算終止?fàn)顟B(tài),否則維持所述粒子的當(dāng)前狀態(tài)。
[0014] 根據(jù)一些實(shí)施例,步驟(d)具體包括:對(duì)于處于所述第二狀態(tài)下的粒子,根據(jù)其質(zhì) 子數(shù)、三維位置、質(zhì)量數(shù)以及動(dòng)能來(lái)確定所述粒子是否走完自由程;以及如果走完,則維持 所述粒子的當(dāng)前狀態(tài),否則將所述粒子置于第一狀態(tài)。
[0015] 根據(jù)一些實(shí)施例,步驟(d)具體包括:對(duì)于處于所述第三狀態(tài)下的粒子,根據(jù)其質(zhì) 子數(shù)、質(zhì)量數(shù)、三維位置、動(dòng)能以及所述幾何體信息來(lái)確定所述粒子是否出界;以及如果出 界,則將所述粒子置于計(jì)算終止?fàn)顟B(tài),否則維持所述粒子的當(dāng)前狀態(tài)。
[0016] 根據(jù)一些實(shí)施例,步驟(d)具體包括:對(duì)于處于所述第二狀態(tài)或所述第三狀態(tài)下 的粒子,根據(jù)其質(zhì)子數(shù)、質(zhì)量數(shù)、三維位置以及動(dòng)能來(lái)確定所述粒子是否發(fā)生彈性散射;以 及如果發(fā)生彈性散射,則將所述粒子置于第四狀態(tài),否則將所述粒子置于第五狀態(tài)。
[0017] 根據(jù)一些實(shí)施例,步驟(d)具體包括:對(duì)于處于所述第五狀態(tài)下的粒子,根據(jù)其質(zhì) 子數(shù)、質(zhì)量數(shù)、三維位置以及動(dòng)能來(lái)確定所述粒子發(fā)生了彈性散射,并將所述粒子置于第一 狀態(tài)。
[0018] 根據(jù)一些實(shí)施例,步驟(d)具體包括:對(duì)于處于所述第四狀態(tài)下的粒子,根據(jù)其質(zhì) 子數(shù)、質(zhì)量數(shù)、三維位置以及動(dòng)能來(lái)確定所述粒子是否是低能中子;以及如果所述粒子是低 能中子,則將所述粒子置于第七狀態(tài),否則將所述粒子置于第六狀態(tài)。
[0019] 根據(jù)一些實(shí)施例,步驟(d)具體包括:對(duì)于處于所述第七狀態(tài)下的粒子,根據(jù)其 粒子屬性以及粒子能量,基于低能中子模型來(lái)確定新產(chǎn)生的粒子;以及向中央處理單元 "CPU"發(fā)送與所述新產(chǎn)生的粒子有關(guān)的信息,以由所述CPU將其添加到初始粒子列表的尾 部。
[0020] 根據(jù)一些實(shí)施例,步驟(d)具體包括:對(duì)于處于所述第六狀態(tài)下的粒子,根據(jù)其 粒子屬性以及粒子能量,基于散裂反應(yīng)模型來(lái)確定新產(chǎn)生的粒子;以及向中央處理單元 "CPU"發(fā)送與所述新產(chǎn)生的粒子有關(guān)的信息,以由所述CPU將其添加到初始粒子列表的尾 部。
[0021] 根據(jù)一些實(shí)施例,對(duì)粒子狀態(tài)的維護(hù)是通過(guò)所述GPU中的共享內(nèi)存中的數(shù)組來(lái)實(shí) 現(xiàn)的。
[0022] 根據(jù)一些實(shí)施例,所述方法在所述GPU處執(zhí)行時(shí)使用一個(gè)或多個(gè)由256個(gè)線程組 成的線程塊。
[0023] 根據(jù)一些實(shí)施例,每個(gè)線程負(fù)責(zé)對(duì)應(yīng)粒子的粒子狀態(tài)維護(hù)。
[0024] 根據(jù)本公開(kāi)的第二方面,提供了一種用于對(duì)散裂反應(yīng)進(jìn)行仿真的圖形處理單元 "GPU",包括:初始信息接收單元,用于接收與所述散裂反應(yīng)有關(guān)的初始信息,所述初始信息 至少包括各粒子的粒子屬性和粒子能量;可反應(yīng)粒子確定單元,用于根據(jù)所述粒子屬性和 所述粒子能量來(lái)確定可反應(yīng)粒子的數(shù)目;粒子狀態(tài)確定單元,用于在所述數(shù)目大于零的情 況下,根據(jù)所述粒子屬性和所述粒子能量來(lái)確定相應(yīng)粒子的粒子狀態(tài);以及處理建模執(zhí)行 單元,用于針對(duì)具有相同粒子狀態(tài)的粒子并行執(zhí)行與粒子狀態(tài)相對(duì)應(yīng)的處理或建模,并根 據(jù)所述處理或所述建模的結(jié)果來(lái)更新相應(yīng)粒子的粒子屬性、粒子能量和粒子狀態(tài)。
[0025] 根據(jù)一些實(shí)施例,所述初始信息還包括用于限定邊界條件的幾何體信息。
[0026] 根據(jù)一些實(shí)施例,所述粒子屬性包括以下至少一項(xiàng):質(zhì)子數(shù)、質(zhì)量數(shù)、三維位置、三 維速度。
[0027] 根據(jù)一些實(shí)施例,所述粒子能量包括以下至少一項(xiàng):動(dòng)能、動(dòng)量。
[0028] 根據(jù)一些實(shí)施例,可反應(yīng)粒子確定單元具體用于:根據(jù)各粒子的質(zhì)子數(shù)、質(zhì)量數(shù)和 動(dòng)能來(lái)確定其是否是可反應(yīng)粒子,以及粒子狀態(tài)確定單元具體用于:如果是可反應(yīng)粒子,則 將所述粒子置于第一狀態(tài)下,否則將所述粒子置于計(jì)算終止?fàn)顟B(tài)下。
[0029] 根據(jù)一些實(shí)施例,處理建模執(zhí)行單元具體用于:對(duì)于處于所述第一狀態(tài)下的粒子, 根據(jù)其質(zhì)子數(shù)、質(zhì)量數(shù)和動(dòng)能來(lái)確定所述粒子的自由程;以及根據(jù)其質(zhì)子數(shù)來(lái)確定所述粒 子是否帶電,如果所述粒子帶電,則將所述粒子置于第二狀態(tài)下,否則將所述粒子置于第三 狀態(tài)。
[0030] 根據(jù)一些實(shí)施例,處理建模執(zhí)行單元具體用于:對(duì)于處于所述第二狀態(tài)下的粒子, 根據(jù)其質(zhì)子數(shù)、質(zhì)量數(shù)和動(dòng)能來(lái)確定所述粒子的能損;以及如果所述粒子的能損使得所述 粒子的動(dòng)能不滿足反應(yīng)條件,則將所述粒子置于計(jì)算終止?fàn)顟B(tài),否則維持所述粒子的當(dāng)前 狀態(tài)。
[0031] 根據(jù)一些實(shí)施例,處理建模執(zhí)行單元具體用于:對(duì)于處于所述第二狀態(tài)下的粒子, 根據(jù)其質(zhì)子數(shù)、質(zhì)量數(shù)、三維位置、動(dòng)能以及所述幾何體信息來(lái)確定所述粒子是否出界;以 及如果出界,則將所述粒子置于計(jì)算終止?fàn)顟B(tài),否則維持所述粒子的當(dāng)前狀態(tài)。
[0032] 根據(jù)一些實(shí)施例,處理建模執(zhí)行單元具體用于:對(duì)于處于所述第二狀態(tài)下的粒子, 根據(jù)其質(zhì)子數(shù)、三維位置、質(zhì)量數(shù)以及動(dòng)能來(lái)確定所述粒子是否走完自由程;以及如果走 完,則維持所述粒子的當(dāng)前狀態(tài),否則將所述粒子置于第一狀態(tài)。
[0033] 根據(jù)一些實(shí)施例,處理建模執(zhí)行單元具體用于:對(duì)于處于所述第三狀態(tài)下的粒子, 根據(jù)其質(zhì)子數(shù)、質(zhì)量數(shù)、三維位置、動(dòng)能以及所述幾何體信息來(lái)確定所述粒子是否出界;以 及如果出界,則將所述粒子置于計(jì)算終止?fàn)顟B(tài),否則維持所述粒子的當(dāng)前狀態(tài)。
[0034] 根據(jù)一些實(shí)施例,處理建模執(zhí)行單元具體用于:對(duì)于處于所述第二狀態(tài)或所述第 三狀態(tài)下的粒子,根據(jù)其質(zhì)子數(shù)、質(zhì)量數(shù)、三維位置以及動(dòng)能來(lái)確定所述粒子是否發(fā)生彈性 散射;以及如果發(fā)生彈性散射,則將所述粒子置于第四狀態(tài),否則將所述粒子置于第五狀 ??τ O
[0035] 根據(jù)一些實(shí)施例,處理建模執(zhí)行單元具體用于:對(duì)于處于所述第五狀態(tài)下的粒子, 根據(jù)其質(zhì)子數(shù)、質(zhì)量數(shù)、三維位置以及動(dòng)能來(lái)確定所述粒子發(fā)生了彈性散射,并將所述粒子 置于第一狀態(tài)。
[0036] 根據(jù)一些實(shí)施例,處理建模執(zhí)行單元具體用于:對(duì)于處于所述第四狀態(tài)下的粒子, 根據(jù)其質(zhì)子數(shù)、質(zhì)量數(shù)、三維位置以及動(dòng)能來(lái)確定所述粒子是否是低能中子;以及如果所述 粒子是低能中子,則將所述粒子置于第七狀態(tài),否則將所述粒子置于第六狀態(tài)。
[0037] 根據(jù)一些實(shí)施例,處理建模執(zhí)行單元具體用于:對(duì)于處于所述第七狀態(tài)下的粒子, 根據(jù)其粒子屬性以及粒子能量,基于低能中子模型來(lái)確定新產(chǎn)生的粒子;以及向中央處理 單元"CPU"發(fā)送與所述新產(chǎn)生的粒子有關(guān)的信息,以由所述CPU將其添加到初始粒子列表 的尾部。
[0038] 根據(jù)一些實(shí)施例,處理建模執(zhí)行單元具體用于:對(duì)于處于所述第六狀態(tài)下的粒子, 根據(jù)其粒子屬性以及粒子能量,基于散裂反應(yīng)模型來(lái)確定新產(chǎn)生的粒子;以及向中央處理 單元"CPU"發(fā)送與所述新產(chǎn)生的粒子有關(guān)的信息,以由所述CPU將其添加到初始粒子列表 的尾部。
[0039] 根據(jù)一些實(shí)施例,對(duì)粒子狀態(tài)的維護(hù)是通過(guò)所述GPU中的共享內(nèi)存中的數(shù)組來(lái)實(shí) 現(xiàn)的。
[0040] 根據(jù)一些實(shí)施例,所述GPU執(zhí)行操作時(shí)使用一個(gè)或多個(gè)由256個(gè)線程組成的線程 塊。
[0041] 根據(jù)一些實(shí)施例,每個(gè)線程負(fù)責(zé)對(duì)應(yīng)粒子的粒子狀態(tài)維護(hù)。
[0042] 根據(jù)本公開(kāi)的第三方面,提供了一種包括根據(jù)上述第二方面的GPU在內(nèi)的電子設(shè) 備。
[0043] 根據(jù)本公開(kāi)的第四方面,提供了一種非瞬時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有 計(jì)算機(jī)可執(zhí)行指令,該計(jì)算機(jī)可執(zhí)行指令在由計(jì)算機(jī)的GPU執(zhí)行時(shí),使得所述GPU執(zhí)行根據(jù) 上述第一方面的方法。
[0044] 根據(jù)本公開(kāi)的第五方面,提供了一種包括CPU和GPU在內(nèi)的電子設(shè)備,該CPU在執(zhí) 行存儲(chǔ)器中存儲(chǔ)的指令時(shí),使得所述GPU執(zhí)行根據(jù)上述第一方面的方法。
[0045] 通過(guò)使用根據(jù)本公開(kāi)實(shí)施例的方法和/或電子設(shè)備,可以高效準(zhǔn)確地進(jìn)行散裂反 應(yīng)級(jí)聯(lián)模擬仿真,最大限度地提高粒子輸運(yùn)模型的計(jì)算速度。
[0046] 前述
【發(fā)明內(nèi)容】
僅是說(shuō)明性的,且不意在以任何方式進(jìn)行限制。除了上述說(shuō)明性方