基于集群式gpu加速的多源全路徑蒙特卡羅模擬方法
【專利摘要】本發(fā)明涉及一種基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,包括:步驟1:Host節(jié)點(diǎn)向各Client節(jié)點(diǎn)進(jìn)行計(jì)算任務(wù)的一次分配;步驟2:基于被分配的計(jì)算任務(wù),各Client節(jié)點(diǎn)向本節(jié)點(diǎn)內(nèi)的各GPU設(shè)備進(jìn)行計(jì)算任務(wù)的二次分配;步驟3:基于被分配的計(jì)算任務(wù),各GPU設(shè)備向其各block進(jìn)行計(jì)算任務(wù)的三次分配;步驟4:各Client節(jié)點(diǎn)對被分配的相應(yīng)光子的傳輸過程進(jìn)行追蹤。本方法通過采用集群式GPU實(shí)現(xiàn)了加速的三級并行高速運(yùn)算,并能夠?qū)崿F(xiàn)對光子在組織中傳播時(shí)所經(jīng)各體素的路徑信息進(jìn)行保存,從而獲取豐富的光子路徑信息。
【專利說明】基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)科學(xué),數(shù)學(xué)仿真和生物醫(yī)學(xué)工程領(lǐng)域,具體涉及一種基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法。
【背景技術(shù)】
[0002]蒙特卡羅方法的基本特征是對隨機(jī)性問題進(jìn)行仿真,用于有效地解決隨機(jī)性問題,甚至對許多確定性方法所難以解決的隨機(jī)性問題都能夠進(jìn)行較為方便的解決。在生物組織中的光子傳輸問題的研究中,蒙特卡羅方法也顯示出其相對于其它方法(如擴(kuò)散近似)的優(yōu)勢:嚴(yán)密且靈活,不受組織的光學(xué)特性的限制,易于使用,模擬精度高,因此,其被該領(lǐng)域研究者奉為金標(biāo)準(zhǔn)。
[0003]自Wilson和Adam于1983年首次將蒙特卡羅方法引入到激光與生物組織之間相互作用的研究領(lǐng)域以來,越來越多的研究者投入到該研究中。絕大多數(shù)生物組織具有復(fù)雜的解剖結(jié)構(gòu),屬于三維非均勻介質(zhì)。通過蒙特卡羅方法模擬光在生物組織中傳輸特性,是為了重建組織體某一個(gè)橫截面甚至整個(gè)三維空間的光學(xué)參數(shù)圖像而服務(wù)的,以便于對生物組織光學(xué)檢測成像系統(tǒng)進(jìn)行設(shè)計(jì)和優(yōu)化,進(jìn)而實(shí)現(xiàn)對疾病的診斷、監(jiān)測及光學(xué)臨床治療。為了實(shí)現(xiàn)對組織體三維空間的光學(xué)參數(shù)圖像的重建,必須獲取光子在該組織體中傳播時(shí),所經(jīng)各體素的路徑信息。
[0004]到目前為止,被報(bào)道的光子傳輸三維蒙特卡羅代碼有三份,一份是Boas小組于2002年研發(fā)的,名為“tMCimg”,可應(yīng)用于基于MRI和CT獲取的數(shù)字影像數(shù)據(jù)搭建的體素介質(zhì)模型。一份是Margall0-Baldas等人于2007年研發(fā)的“trMC”程序,該程序可應(yīng)用于基于mic1CT獲取的三角面片介質(zhì)模型。另一份是駱清銘小組于2010年研發(fā)的MCVM程序,該程序可同樣應(yīng)用于MRI和CT獲取的數(shù)字影像數(shù)據(jù)搭建的體素介質(zhì)模型。
[0005]但是,以上的三份代碼均不能獲取光子在組織體中傳播時(shí)所經(jīng)各體素的路徑信息。并且,隨著模擬光子數(shù)目的不斷增加,模擬源數(shù)目的不斷增加,以及組織越來越復(fù)雜的結(jié)構(gòu),導(dǎo)致計(jì)算機(jī)運(yùn)算時(shí)間也在成倍地增加。
[0006]有鑒于此,本發(fā)明提出了一種優(yōu)化的程序結(jié)構(gòu):基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,該方法通過采用集群式GPU實(shí)現(xiàn)對加速的三級并行高速運(yùn)算,并能夠?qū)崿F(xiàn)對光子在組織中傳播時(shí)所經(jīng)各體素的路徑信息進(jìn)行保存。
【發(fā)明內(nèi)容】
[0007]本發(fā)明提供的一種基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,通過采用集群式GPU實(shí)現(xiàn)加速的三級并行高速運(yùn)算。
[0008]本發(fā)明提供的一種基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,包括:
[0009]步驟1:基于MPI消息傳遞通信協(xié)議,Host節(jié)點(diǎn)向各Client節(jié)點(diǎn)進(jìn)行計(jì)算任務(wù)的一次分配,并完成相應(yīng)的數(shù)據(jù)交互;
[0010]步驟2:基于被分配的計(jì)算任務(wù),各Client節(jié)點(diǎn)向本節(jié)點(diǎn)內(nèi)的各GPU設(shè)備進(jìn)行計(jì)算任務(wù)的二次分配,并完成相應(yīng)的數(shù)據(jù)交互;
[0011]步驟3:基于被分配的計(jì)算任務(wù),各GPU設(shè)備向其各block進(jìn)行計(jì)算任務(wù)的三次分配,并完成相應(yīng)的數(shù)據(jù)交互;
[0012]步驟4:各Client節(jié)點(diǎn)對被分配的相應(yīng)光子的傳輸過程進(jìn)行追蹤。
[0013]所述步驟I為:
[0014]步驟1.1:各Client節(jié)點(diǎn)獲取本節(jié)點(diǎn)的GPU設(shè)備的數(shù)量信息;
[0015]步驟1.2:各Client節(jié)點(diǎn)向其他節(jié)點(diǎn)廣播本節(jié)點(diǎn)GPU設(shè)備的數(shù)量信息;
[0016]步驟1.3 =Host節(jié)點(diǎn)接收各Client節(jié)點(diǎn)的廣播信息,并獲得各節(jié)點(diǎn)GPU設(shè)備的數(shù)量信息;
[0017]步驟1.4 =Host節(jié)點(diǎn)根據(jù)各Client節(jié)點(diǎn)的GPU設(shè)備的數(shù)量以及與光源的光子數(shù)量相關(guān)的計(jì)算任務(wù)量,向各Client節(jié)點(diǎn)分配平均到每個(gè)GPU的計(jì)算任務(wù)。
[0018]所述步驟2為:
[0019]步驟2.1:各Client節(jié)點(diǎn)CPU的主進(jìn)程根據(jù)本節(jié)點(diǎn)GPU設(shè)備的數(shù)目開辟相應(yīng)數(shù)目的子進(jìn)程,每個(gè)子進(jìn)程對應(yīng)一個(gè)本節(jié)點(diǎn)的GPU設(shè)備;
[0020]步驟2.2:各Client節(jié)點(diǎn)CPU的主進(jìn)程將計(jì)算任務(wù)分配給子線程進(jìn)行執(zhí)行。
[0021]在所述步驟2.2中,各Client節(jié)點(diǎn)的子進(jìn)程在本節(jié)點(diǎn)多核CPU的不同的核上并行運(yùn)行。
[0022]在所述步驟2.2中,各Client節(jié)點(diǎn)的子進(jìn)程在本節(jié)點(diǎn)單核CPU的單核上串行運(yùn)行。
[0023]所述步驟3為:
[0024]步驟3.1:各Client節(jié)點(diǎn)確定本節(jié)點(diǎn)各GPU設(shè)備SM上的可用資源;
[0025]步驟3.2:各Client節(jié)點(diǎn)根據(jù)本節(jié)點(diǎn)GPU設(shè)備中各block使用資源,確定activeblock 數(shù)量和 active warp 數(shù)量;
[0026]步驟3.3:各Client節(jié)點(diǎn)根據(jù)本節(jié)點(diǎn)GPU設(shè)備中各block使用資源,確定各block的尺寸和維度;
[0027]步驟3.4:按照計(jì)算任務(wù)的規(guī)模,各Client節(jié)點(diǎn)確定本節(jié)點(diǎn)各GPU設(shè)備grid中的block數(shù)量;
[0028]步驟3.5:各Client節(jié)點(diǎn)中的各GPU設(shè)備將計(jì)算任務(wù)分配給本設(shè)備的每個(gè)block。
[0029]所述步驟4為:
[0030]步驟4.1:啟動cuda,各Client節(jié)點(diǎn)CPU對內(nèi)存空間、顯存空間進(jìn)行分配,并將要計(jì)算的數(shù)據(jù)從內(nèi)存復(fù)制到顯存上;
[0031]步驟4.2:將入射光源表征為設(shè)定數(shù)目光子的集合,將入射光源位置和入射光方向賦給每個(gè)光子作為其初始位置和方向;
[0032]步驟4.3:追蹤每個(gè)光子的傳輸過程;
[0033]步驟4.4:CPU分配內(nèi)存,用于存放GPU輸出數(shù)據(jù),并將計(jì)算后顯存上的數(shù)據(jù)復(fù)制到內(nèi)存上,并將本節(jié)點(diǎn)的運(yùn)行信息返回給host節(jié)點(diǎn)。
[0034]所述步驟4.3追蹤每個(gè)光子的傳輸過程,包括以下情況:
[0035]當(dāng)光子移動至生物組織邊界時(shí),發(fā)生反射或折射;
[0036]當(dāng)光子折射到生物組織外時(shí),停止追蹤;
[0037]當(dāng)光子因散射而改變移動方向時(shí),繼續(xù)追蹤光子下一步的移動直到光子能量衰減至闕值以下。
[0038]所述步驟4.3可以與步驟4.1中的CPU將要計(jì)算的數(shù)據(jù)從內(nèi)存復(fù)制到顯存上的操作同時(shí)進(jìn)行。
[0039]光子的移動步長由隨機(jī)數(shù)確定。
[0040]在步驟4.3中,采用俄羅斯輪回盤算法對光子進(jìn)行追蹤:如果光子在輪回盤中復(fù)活,則繼續(xù)追蹤光子下一步的移動;如果光子在輪回盤中死亡,則停止對光子的追蹤。
[0041]對光吸收量數(shù)據(jù)的訪問采用原子操作,當(dāng)多個(gè)線程同時(shí)訪問全局存儲器的同一位置時(shí),保證每個(gè)線程能夠?qū)崿F(xiàn)對共享可寫數(shù)據(jù)的互斥操作:在一個(gè)操作完成之前,其它任何線程都無法訪問此地址,從而保證記錄的光吸收量數(shù)據(jù)的絕對正確性。
[0042]在顯存不足的情況下,Client節(jié)點(diǎn)將部分?jǐn)?shù)據(jù)從顯存復(fù)制到內(nèi)存,在GPU并行執(zhí)行程序的同時(shí),CPU串行執(zhí)行程序。
[0043]所述方法還包括:
[0044]步驟5:光子追蹤結(jié)束后,Host節(jié)點(diǎn)輸出光吸收矩陣和所有逸出光子信息及光子傳播所經(jīng)各體素的路徑信息。
[0045]所述光子傳播所經(jīng)各體素的路徑信息,由追蹤每個(gè)光子傳輸過程中記錄的每個(gè)光子所經(jīng)體素的索引值及經(jīng)過該體素光子所走的路徑長度得到。
[0046]所述方法還包括:
[0047]步驟6:對步驟5的結(jié)果進(jìn)行統(tǒng)計(jì),轉(zhuǎn)換為其它所需獲取的傳輸特性,包括:將光吸收量矩陣中各元素除以其對應(yīng)體素的吸收系數(shù),得到通量分布;將光吸收量矩陣所有元素的值相加,然后除以光子數(shù)目得到光吸收量;將所有在光源同側(cè)逸出的光子當(dāng)前能量相加,然后除以光子數(shù)目得到總透射量。
[0048]綜上所述,本發(fā)明提出了一種基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,該方法通過采用集群式GPU實(shí)現(xiàn)了加速的三級并行高速運(yùn)算,并能夠?qū)崿F(xiàn)對光子在組織中傳播時(shí)所經(jīng)各體素的路徑信息進(jìn)行保存,從而獲取豐富的光子路徑信息,為生物組織光學(xué)檢測成像系統(tǒng)設(shè)計(jì)的優(yōu)化提供了方便,并為光治療方法提供了精確的指導(dǎo)信息。
【專利附圖】
【附圖說明】
[0049]參照如下附圖將更加易于理解本發(fā)明:
[0050]圖1為本發(fā)明提供的一種基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法的整體系統(tǒng)框架圖。
[0051]圖2為本發(fā)明提供的一種基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法的基本流程圖。
【具體實(shí)施方式】
[0052]首先,將目標(biāo)生物組織的空間結(jié)構(gòu)描述為一個(gè)三維數(shù)字矩陣,即組織模型。矩陣中的元素對應(yīng)目標(biāo)生物組織的體素,每個(gè)體素的數(shù)值為標(biāo)識組織類型的數(shù)字。體素越小,描述組織結(jié)構(gòu)的組織模型越逼近于真實(shí)生物組織結(jié)構(gòu),模擬得到的光子傳輸特性精度就越高。
[0053]然后,設(shè)定一個(gè)與組織模型大小相同的三維空矩陣,其中每個(gè)元素用來記錄其對應(yīng)生物組織中的一個(gè)體素對光的吸收量。并設(shè)定目標(biāo)生物組織的各類組織特性參數(shù),包括吸收系數(shù),散射系數(shù),折射系數(shù)和各向異性因子。這些參數(shù)值的精度也會影響模擬精度,可查閱相應(yīng)文獻(xiàn)來獲取這些參數(shù)。值得注意是,這些參數(shù)的選定要求與目標(biāo)光源波長一致。
[0054]獲得上述編程模型后即可采用本發(fā)明方法進(jìn)行計(jì)算。
[0055]如圖1所示,本方法的整體系統(tǒng)框架為Host-client結(jié)構(gòu),包括用以分配和控制計(jì)算任務(wù)的Host端和至少兩個(gè)用以接收計(jì)算任務(wù)進(jìn)行運(yùn)算的Client節(jié)點(diǎn),每個(gè)Client節(jié)點(diǎn)可將運(yùn)算結(jié)果上傳給所述的Host端,相互間能進(jìn)行通信。該模擬方法實(shí)現(xiàn)了三層次并行,分別是集群分布式并行,多核并行和GPU內(nèi)多線程并行。
[0056]如圖2所示,本發(fā)明的基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,包括:
[0057]步驟1:基于MPI消息傳遞通信協(xié)議,Host節(jié)點(diǎn)向各Client節(jié)點(diǎn)進(jìn)行計(jì)算任務(wù)的一次分配,并完成相應(yīng)的數(shù)據(jù)交互;
[0058]可選地,所述步驟I可以包括:
[0059]步驟1.1:各Client節(jié)點(diǎn)獲取本節(jié)點(diǎn)的GPU設(shè)備的數(shù)量信息;
[0060]步驟1.2:各Client節(jié)點(diǎn)向其他節(jié)點(diǎn)廣播本節(jié)點(diǎn)GPU設(shè)備的數(shù)量信息;
[0061]步驟1.3 =Host節(jié)點(diǎn)接收各Client節(jié)點(diǎn)的廣播信息,并獲得各節(jié)點(diǎn)GPU設(shè)備的數(shù)量信息;
[0062]步驟1.4 =Host節(jié)點(diǎn)根據(jù)各Client節(jié)點(diǎn)的GPU設(shè)備的數(shù)量以及與光源的光子數(shù)量相關(guān)的計(jì)算任務(wù)量,向各Client節(jié)點(diǎn)分配平均到每個(gè)GPU的計(jì)算任務(wù)。
[0063]步驟2:基于被分配的計(jì)算任務(wù),各Client節(jié)點(diǎn)向本節(jié)點(diǎn)內(nèi)的各GPU設(shè)備進(jìn)行計(jì)算任務(wù)的二次分配,并完成相應(yīng)的數(shù)據(jù)交互;
[0064]可選地,所述步驟2為:
[0065]步驟2.1:各Client節(jié)點(diǎn)CPU的主進(jìn)程根據(jù)本節(jié)點(diǎn)GPU設(shè)備的數(shù)目開辟相應(yīng)數(shù)目的子進(jìn)程,每個(gè)子進(jìn)程對應(yīng)一個(gè)本節(jié)點(diǎn)的GPU設(shè)備;
[0066]步驟2.2:各Client節(jié)點(diǎn)CPU的主進(jìn)程將計(jì)算任務(wù)分配給子線程進(jìn)行執(zhí)行??蛇x地,各Cl ient節(jié)點(diǎn)的CPU可以是多核CPU或者單核CPU,其中,在多核CPU情況下,各Cl ient節(jié)點(diǎn)的子進(jìn)程在本節(jié)點(diǎn)多核CPU的不同的核上并行運(yùn)行;在單核CPU情況下,各Client節(jié)點(diǎn)的子進(jìn)程在本節(jié)點(diǎn)單核CPU的單核上串行運(yùn)行。
[0067]步驟3:基于被分配的計(jì)算任務(wù),各GPU設(shè)備向其各block進(jìn)行計(jì)算任務(wù)的三次分配,并完成相應(yīng)的數(shù)據(jù)交互;
[0068]可選地,所述步驟3為:
[0069]步驟3.1:各Client節(jié)點(diǎn)確定本節(jié)點(diǎn)各GPU設(shè)備SM上的可用資源;
[0070]步驟3.2:各Client節(jié)點(diǎn)根據(jù)本節(jié)點(diǎn)GPU設(shè)備中各block使用資源,確定activeblock 數(shù)量和 active warp 數(shù)量;
[0071]步驟3.3:各Client節(jié)點(diǎn)根據(jù)本節(jié)點(diǎn)GPU設(shè)備中各block使用資源,確定各block的尺寸和維度;
[0072]步驟3.4:按照計(jì)算任務(wù)的規(guī)模,各Client節(jié)點(diǎn)確定本節(jié)點(diǎn)各GPU設(shè)備grid中的block數(shù)量;
[0073]步驟3.5:各Client節(jié)點(diǎn)中的各GPU設(shè)備將計(jì)算任務(wù)分配給本設(shè)備的每個(gè)block。
[0074]步驟4:各Client節(jié)點(diǎn)對被分配的相應(yīng)光子的傳輸過程進(jìn)行追蹤。
[0075]可選地,所述步驟4為:
[0076]步驟4.1:啟動cuda,各Client節(jié)點(diǎn)CPU對內(nèi)存空間、顯存空間進(jìn)行分配:將x,y,z方向體素的索引值使用紋理存儲器存儲,先對其進(jìn)行紋理參考聲明,再對其進(jìn)行三維紋理綁定;將組織模型在X,y, Z方向的尺寸以及及組織的光學(xué)特性參數(shù)用常量存儲器存儲;將光子傳播所經(jīng)各體素的路徑信息用頁鎖定內(nèi)存存儲;其他變量則用全局存儲器存儲。然后將要計(jì)算的數(shù)據(jù)從內(nèi)存復(fù)制到顯存上;
[0077]步驟4.2:將入射光源表征為設(shè)定數(shù)目光子的集合,將入射光源位置和入射光方向賦給每個(gè)光子作為其初始位置和方向;
[0078]步驟4.3:追蹤每個(gè)光子的傳輸過程:當(dāng)光子移動至生物組織邊界時(shí),發(fā)生反射或折射;當(dāng)光子折射到生物組織外時(shí),停止追蹤;當(dāng)光子因散射而改變移動方向時(shí),繼續(xù)追蹤光子下一步的移動直到光子能量衰減至闕值以下。其中,光子的移動步長可以由隨機(jī)數(shù)確定??蛇x地,在本步驟中,可以將其中耗費(fèi)時(shí)間長的大規(guī)模數(shù)據(jù)并行、高計(jì)算密度的步驟安排在GPU上并行執(zhí)行,其余步驟安排在CPU上串行執(zhí)行。
[0079]可選地,在步驟4.3中可以采用俄羅斯輪回盤算法對光子進(jìn)行追蹤:如果光子在輪回盤中復(fù)活,則繼續(xù)追蹤光子下一步的移動;如果光子在輪回盤中死亡,則停止對光子的追蹤。
[0080]步驟4.4:CPU分配內(nèi)存,用于存放GPU輸出數(shù)據(jù),并將計(jì)算后顯存上的數(shù)據(jù)復(fù)制到內(nèi)存上,并將本節(jié)點(diǎn)的運(yùn)行信息返回給host節(jié)點(diǎn)。
[0081]可選地,所述步驟4.3可以與步驟4.1中的CPU將要計(jì)算的數(shù)據(jù)從內(nèi)存復(fù)制到顯存上的操作同時(shí)進(jìn)行。
[0082]可選地,對光吸收量數(shù)據(jù)的訪問可以采用原子操作,當(dāng)多個(gè)線程同時(shí)訪問全局存儲器的同一位置時(shí),保證每個(gè)線程能夠?qū)崿F(xiàn)對共享可寫數(shù)據(jù)的互斥操作:在一個(gè)操作完成之前,其它任何線程都無法訪問此地址,從而保證記錄的光吸收量數(shù)據(jù)的絕對正確性。
[0083]可選地,在顯存不足的情況下,Client節(jié)點(diǎn)將部分?jǐn)?shù)據(jù)從顯存復(fù)制到內(nèi)存,在GPU并行執(zhí)行程序的同時(shí),CPU串行執(zhí)行程序。
[0084]可選地,所述方法還可以包括:
[0085]步驟5:光子追蹤結(jié)束后,Host節(jié)點(diǎn)輸出光吸收矩陣和所有逸出光子信息及光子傳播所經(jīng)各體素的路徑信息。其中,所述光子傳播所經(jīng)各體素的路徑信息,由追蹤每個(gè)光子傳輸過程中記錄的每個(gè)光子所經(jīng)體素的索引值及經(jīng)過該體素光子所走的路徑長度得到。
[0086]可選地,所述方法還可以包括:
[0087]步驟6:對步驟5的結(jié)果進(jìn)行統(tǒng)計(jì),轉(zhuǎn)換為其它所需獲取的傳輸特性,包括:將光吸收量矩陣中各元素除以其對應(yīng)體素的吸收系數(shù),得到光通量分布;將光吸收量矩陣所有元素的值相加,然后除以光子數(shù)目得到光吸收量;將所有在光源同側(cè)逸出的光子當(dāng)前能量相力口,然后除以光子數(shù)目得到總透射量。
【權(quán)利要求】
1.一種基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,其特征在于,所述方法包括: 步驟1:基于MPI消息傳遞通信協(xié)議,Host節(jié)點(diǎn)向各Client節(jié)點(diǎn)進(jìn)行計(jì)算任務(wù)的一次分配,并完成相應(yīng)的數(shù)據(jù)交互; 步驟2:基于被分配的計(jì)算任務(wù),各Client節(jié)點(diǎn)向本節(jié)點(diǎn)內(nèi)的各GPU設(shè)備進(jìn)行計(jì)算任務(wù)的二次分配,并完成相應(yīng)的數(shù)據(jù)交互; 步驟3:基于被分配的計(jì)算任務(wù),各GPU設(shè)備向其各block進(jìn)行計(jì)算任務(wù)的三次分配,并完成相應(yīng)的數(shù)據(jù)交互; 步驟4:各Client節(jié)點(diǎn)對被分配的相應(yīng)光子的傳輸過程進(jìn)行追蹤。
2.根據(jù)權(quán)利要求1所述的基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,其特征在于,所述步驟I為: 步驟1.1:各Client節(jié)點(diǎn)獲取本節(jié)點(diǎn)的GPU設(shè)備的數(shù)量信息; 步驟1.2:各Client節(jié)點(diǎn)向其他節(jié)點(diǎn)廣播本節(jié)點(diǎn)GPU設(shè)備的數(shù)量信息; 步驟1.3 =Host節(jié)點(diǎn)接收各Client節(jié)點(diǎn)的廣播信息,并獲得各節(jié)點(diǎn)GPU設(shè)備的數(shù)量信息; 步驟1.4 =Host節(jié)點(diǎn)根據(jù)各Client節(jié)點(diǎn)的GPU設(shè)備的數(shù)量以及與光源的光子數(shù)量相關(guān)的計(jì)算任務(wù)量,向各Client節(jié)點(diǎn)分配平均到每個(gè)GPU的計(jì)算任務(wù)。
3.根據(jù)權(quán)利要求2所述的基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,其特征在于,所述步驟2為: 步驟2.1:各Client節(jié)點(diǎn)CPU的主進(jìn)程根據(jù)本節(jié)點(diǎn)GPU設(shè)備的數(shù)目開辟相應(yīng)數(shù)目的子進(jìn)程,每個(gè)子進(jìn)程對應(yīng)一個(gè)本節(jié)點(diǎn)的GPU設(shè)備; 步驟2.2:各Client節(jié)點(diǎn)CPU的主進(jìn)程將計(jì)算任務(wù)分配給子線程進(jìn)行執(zhí)行。
4.根據(jù)權(quán)利要求3所述的基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,其特征在于,在所述步驟2.2中,各Client節(jié)點(diǎn)的子進(jìn)程在本節(jié)點(diǎn)多核CPU的不同的核上并行運(yùn)行。
5.根據(jù)權(quán)利要求3所述的基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,其特征在于,在所述步驟2.2中,各Client節(jié)點(diǎn)的子進(jìn)程在本節(jié)點(diǎn)單核CPU的單核上串行運(yùn)行。
6.根據(jù)權(quán)利要求3所述的基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,其特征在于,所述步驟3為: 步驟3.1:各Client節(jié)點(diǎn)確定本節(jié)點(diǎn)各GPU設(shè)備SM上的可用資源; 步驟3.2:各Client節(jié)點(diǎn)根據(jù)本節(jié)點(diǎn)GPU設(shè)備中各block使用資源,確定active block數(shù)量和active warp數(shù)量; 步驟3.3:各Client節(jié)點(diǎn)根據(jù)本節(jié)點(diǎn)GPU設(shè)備中各block使用資源,確定各block的尺寸和維度; 步驟3.4:按照計(jì)算任務(wù)的規(guī)模,各Client節(jié)點(diǎn)確定本節(jié)點(diǎn)各GPU設(shè)備grid中的block數(shù)量; 步驟3.5:各Client節(jié)點(diǎn)中的各GPU設(shè)備將計(jì)算任務(wù)分配給本設(shè)備的每個(gè)block。
7.根據(jù)權(quán)利要求6所述的基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,其特征在于,所述步驟4為: 步驟4.1:啟動cuda,各Client節(jié)點(diǎn)CPU對內(nèi)存空間、顯存空間進(jìn)行分配,并將要計(jì)算的數(shù)據(jù)從內(nèi)存復(fù)制到顯存上; 步驟4.2:將入射光源表征為設(shè)定數(shù)目光子的集合,將入射光源位置和入射光方向賦給每個(gè)光子作為其初始位置和方向; 步驟4.3:追蹤每個(gè)光子的傳輸過程; 步驟4.4:CPU分配內(nèi)存,用于存放GPU輸出數(shù)據(jù),并將計(jì)算后顯存上的數(shù)據(jù)復(fù)制到內(nèi)存上,并將本節(jié)點(diǎn)的運(yùn)行信息返回給host節(jié)點(diǎn)。
8.根據(jù)權(quán)利要求7所述的基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,其特征在于,所述方法還包括: 步驟5:光子追蹤結(jié)束后,Host節(jié)點(diǎn)輸出光吸收矩陣和所有逸出光子信息及光子傳播所經(jīng)各體素的路徑信息。
9.根據(jù)權(quán)利要求8所述的基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,其特征在于,所述光子傳播所經(jīng)各體素的路徑信息,由追蹤每個(gè)光子傳輸過程中記錄的每個(gè)光子所經(jīng)體素的索引值及經(jīng)過該體素光子所走的路徑長度得到。
10.根據(jù)權(quán)利要求8所述的基于集群式GPU加速的多源全路徑蒙特卡羅模擬方法,其特征在于,所述方法還包括: 步驟6:對步驟5的結(jié)果進(jìn)行統(tǒng)計(jì),轉(zhuǎn)換為其它所需獲取的傳輸特性,包括:將光吸收量矩陣中各元素除以其對應(yīng)體素的吸收系數(shù),得到通量分布;將光吸收量矩陣所有元素的值相加,然后除以光子數(shù)目得到光吸收量;將所有在光源同側(cè)逸出的光子當(dāng)前能量相加,然后除以光子數(shù)目得到總透射量。
【文檔編號】G06F9/50GK104317655SQ201410536002
【公開日】2015年1月28日 申請日期:2014年10月11日 優(yōu)先權(quán)日:2014年10月11日
【發(fā)明者】駱清銘, 鄧勇, 羅召洋, 江旭 申請人:華中科技大學(xué)