本發(fā)明涉及計(jì)算方法的并行進(jìn)程合并技術(shù),尤其涉及一種基于多尺度耦合的計(jì)算方法的并行進(jìn)程合并方法及系統(tǒng)。
背景技術(shù):
在多尺度耦合大規(guī)模計(jì)算中,通常會涉及到兩類或以上計(jì)算方法的耦合計(jì)算,而不同計(jì)算方法在大規(guī)模計(jì)算中對于內(nèi)存的需求也會不盡相同。因此在實(shí)現(xiàn)超大規(guī)模的耦合計(jì)算時,為節(jié)約計(jì)算資源,實(shí)現(xiàn)資源利用最大化,對于兩類或以上計(jì)算方法在大規(guī)模并行計(jì)算中進(jìn)行不同進(jìn)程的數(shù)據(jù)合并十分必要。
在多尺度耦合計(jì)算中,兩類或以上計(jì)算方法的耦合通常牽涉到各計(jì)算方法之間的數(shù)據(jù)繼承與傳遞。對于超大規(guī)模多尺度耦合并行計(jì)算中,各計(jì)算方法間的數(shù)據(jù)傳遞更是一個難點(diǎn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于,解決現(xiàn)有的超大規(guī)模多尺度耦合并行計(jì)算中不同進(jìn)程的數(shù)據(jù)合并困難的問題,提供了一種基于多尺度耦合的并行進(jìn)程合并方法及系統(tǒng),通過計(jì)算合并寬度并對相應(yīng)進(jìn)程數(shù)據(jù)進(jìn)行釋放和遷移傳輸,實(shí)現(xiàn)計(jì)算方法在大規(guī)模并行計(jì)算中進(jìn)行不同進(jìn)程的數(shù)據(jù)合并,節(jié)約了計(jì)算資源,實(shí)現(xiàn)資源利用的最大化。
為了實(shí)現(xiàn)上述目的,一方面,本發(fā)明提供了一種基于多尺度耦合的并行進(jìn)程合并方法,該方法包括以下步驟:分別計(jì)算統(tǒng)計(jì)需耦合計(jì)算的至少兩類計(jì)算方法所需的變量和所需的內(nèi)存空間,并確定需傳遞的數(shù)據(jù)的類型與大小;判斷所述至少兩類計(jì)算方法中第一類計(jì)算方法的n個進(jìn)程合并成第二類計(jì)算方法的1個進(jìn)程的合并寬度;按照所述合并寬度對第一類計(jì)算方法的n個進(jìn)程和第二類計(jì)算方法的1個進(jìn)程之間的數(shù)據(jù)進(jìn)行釋放和遷移傳輸。
另一方面,本發(fā)明提供基于多尺度耦合的并行進(jìn)程合并系統(tǒng),具體包括:第一計(jì)算模塊,分別計(jì)算統(tǒng)計(jì)需耦合計(jì)算的至少兩類計(jì)算方法所需的變量和所需的內(nèi)存空間,并確定需傳遞的數(shù)據(jù)的類型與大??;第二計(jì)算模塊,判斷所述至少兩類計(jì)算方法中第一類計(jì)算方法的n個進(jìn)程合并成第二類計(jì)算方法的1個進(jìn)程的合并寬度;傳輸模塊,按照所述合并寬度對第一類計(jì)算方法的n個進(jìn)程和第二類計(jì)算方法的1個進(jìn)程之間的數(shù)據(jù)進(jìn)行釋放和遷移傳輸。
本發(fā)明提供的一種的基于多尺度耦合的并行進(jìn)程合并方法及系統(tǒng),實(shí)現(xiàn)了計(jì)算方法在大規(guī)模并行計(jì)算中進(jìn)行不同進(jìn)程的數(shù)據(jù)合并,節(jié)約了計(jì)算資源,實(shí)現(xiàn)資源利用的最大化。
附圖說明
圖1為本發(fā)明實(shí)施例提供的一種基于多尺度耦合的并行進(jìn)程合并方法流程示意圖;
圖2為本發(fā)明實(shí)施例提供的一種基于多尺度耦合的并行進(jìn)程合并系統(tǒng)結(jié)構(gòu)示意圖;
圖3為圖1所示基于多尺度耦合的并行進(jìn)程合并流程中一個以MD與KMC的耦合計(jì)算為例的示意圖;
圖4為圖1所示基于多尺度耦合的并行進(jìn)程合并流程中另一個以MD與KMC的耦合計(jì)算為例的示意圖;
圖5為圖1所示基于多尺度耦合的并行進(jìn)程合并流程中,按照合并寬度對進(jìn)程進(jìn)行數(shù)據(jù)合并的過程示意圖;
圖6為圖1所示基于多尺度耦合的并行進(jìn)程合并流程中,按照合并寬度對相應(yīng)進(jìn)程數(shù)據(jù)進(jìn)行釋放和遷移傳輸?shù)恼w流程圖。
具體實(shí)施方式
下面通過附圖和實(shí)施例,對本發(fā)明的技術(shù)方案作進(jìn)一步的詳細(xì)描述。
本發(fā)明實(shí)施例提供的一種的基于多尺度耦合的并行進(jìn)程合并方法及系統(tǒng),實(shí)現(xiàn)了計(jì)算方法在大規(guī)模并行計(jì)算中進(jìn)行不同進(jìn)程的數(shù)據(jù)合并,節(jié)約了計(jì)算資源,實(shí)現(xiàn)資源利用的最大化。
圖1為本發(fā)明實(shí)施例提供的一種基于多尺度耦合的并行進(jìn)程合并方法流程示意圖。如圖1所示,該方法包括步驟101-103:
步驟101,分別計(jì)算統(tǒng)計(jì)需耦合計(jì)算的至少兩類計(jì)算方法所需的變量和所需的內(nèi)存空間,并確定需傳遞的數(shù)據(jù)的類型與大小。
具體地,根據(jù)材料多尺度耦合計(jì)算的不同計(jì)算方法的實(shí)際情況,進(jìn)行數(shù)據(jù)類型與大小的統(tǒng)計(jì)。
本實(shí)施例以Cu-Fe合金為材料樣本,以分子動力學(xué)模擬(MD)和動力學(xué)蒙特卡羅模擬(KMC)兩類計(jì)算方法為例。在MD和KMC方法程序中,每個原子所占內(nèi)存大小是確定的,由于MPI(Multi Point Interface)通信方式和緩沖結(jié)構(gòu)也是確定的,且Cu-Fe合金在固體狀態(tài)下是排布均勻的單晶結(jié)構(gòu),所以如果知道每個進(jìn)程上模擬的樣本塊的長,寬,高,就可以計(jì)算出它與相鄰進(jìn)程通信所需的緩沖開銷,緩沖開銷通過以下公式獲?。?/p>
memBuffers=2*a*(n*blockX*blockY+n*blockX*blockZ+blockY*blockZ)其中,a為單位接觸面積通信所需的內(nèi)存大小,n為合并寬度,blockX,blockY,blockZ分別為MD模擬物理塊在X軸,Y軸,Z軸上的長度,各進(jìn)程相同。據(jù)此在程序運(yùn)行前計(jì)算出合并寬度為n時每個KMC進(jìn)程所需的內(nèi)存空間:
mem_n=memAtoms(nTotalAtoms)+memBuffers+comVariables,其中nTotalAtoms為合并的n個進(jìn)程中的原子數(shù)之和,memAtoms(nTotalAtoms)為原子所占內(nèi)存,comVariables為公共變量所占內(nèi)存。
步驟102,判斷MD的n個進(jìn)程合并成KMC的1個進(jìn)程的合并寬度;以按行合并數(shù)量相同的相鄰的進(jìn)程塊為例,實(shí)現(xiàn)進(jìn)程合并寬度n的自動判斷。
(1)以X軸方向?yàn)闇?zhǔn),對Y軸和Z軸方向的行循環(huán),進(jìn)行進(jìn)程合并;
(2)初始化合并寬度:n=1;
(3)計(jì)算加入合并組numGroup的數(shù)據(jù)量大?。?/p>
若m%n=0時,x軸上每行的進(jìn)程按寬度n可分為m/n組。若m%n!=0時,x軸上每行的進(jìn)程按寬度n可分為m/n+1組,最后一組的合并進(jìn)程數(shù)小于n,所占總內(nèi)存小于前面任何一組,所以在計(jì)算時只計(jì)算前面合并進(jìn)程數(shù)為n的組的內(nèi)存即可。
①計(jì)算加入合并組numGroup的n個進(jìn)程內(nèi)原子存儲數(shù)據(jù)大?。?/p>
其中,numProc_Y表示進(jìn)程的Y軸坐標(biāo),numProc_Z表示進(jìn)程的Z軸坐標(biāo),procMD[n*numGroup+i][numProc_Y][numProc_Z]表示坐標(biāo)為([n*numGroup+i],[numProc_Y],[numProc_Z])的進(jìn)程號,nAtoms[procMD[n*numGroup+i][numProc_Y][numProc_Z]]表示第i個進(jìn)程的原子存儲數(shù)據(jù)大小,numGroup表示按X軸分組后的組別編號,i表示n個進(jìn)程內(nèi)的第i個進(jìn)程。
②計(jì)算加入合并組numGroup的n個進(jìn)程通信緩存數(shù)據(jù)大小:
memBuffers=2*a*(n*blockX*blockY+n*blockX*blockZ+blockY*blockZ)
③計(jì)算加入合并組numGroup的n個進(jìn)程數(shù)據(jù)總量大小
mem_n=memAtoms(nTotalAtoms)+memBuffers+comVariables;
(4)確認(rèn)合并寬度n的值:
①如果計(jì)算所得的內(nèi)存mem_n大于單個進(jìn)程的實(shí)際物理內(nèi)存phyMem,則這行最大合并寬度為當(dāng)前n減1。繼續(xù)對其他行進(jìn)行計(jì)算。
②如果計(jì)算所得的內(nèi)存mem_n小于或等于單個進(jìn)程的實(shí)際物理內(nèi)存phyMem,且組號numGroup為最大組號m/n時,進(jìn)程合并寬度為當(dāng)前的n,將n值n加1后繼續(xù)對該行進(jìn)行寬度為n+1的判斷;
(5)計(jì)算所有行的合并寬度n中的最小值,即為MD算法與KMC算法耦合的進(jìn)程合并寬度。
If n<min_n then
min_n=n
假設(shè)模擬區(qū)域塊在分子動力學(xué)模擬階段有m*m*m個進(jìn)程,即X、Y、Z軸三個方向上的進(jìn)程數(shù)均為m,MPI數(shù)據(jù)重分布的方案為以x軸方向?yàn)闇?zhǔn)將n個MD進(jìn)程合并為一個KMC進(jìn)程,則根據(jù)m是否能夠被n整除分為兩種情況,m能被n整除時,每個KMC進(jìn)程的模擬規(guī)模相同,若m不能被n整除,則有m%n個進(jìn)程的模擬規(guī)模會小于其他的KMC進(jìn)程。
圖3、圖4分別為圖1所示基于多尺度耦合的并行進(jìn)程合并流程中,以MD與KMC的耦合計(jì)算為例的示意圖,圖3中m=2,n=2,圖4中m=3,n=2。
步驟103,按照合并寬度對MD的n個進(jìn)程和KMC的1個進(jìn)程之間的數(shù)據(jù)進(jìn)行釋放和遷移傳輸。
在MD與KMC的大規(guī)模耦合計(jì)算中,為了最大限度地利用計(jì)算機(jī)資源,MD計(jì)算規(guī)模通常會設(shè)計(jì)成內(nèi)存使用達(dá)到每個進(jìn)程物理內(nèi)存允許的上限,在運(yùn)行過程中各進(jìn)程的內(nèi)存幾乎會被用完,因此選擇出在下一步KMC模擬中不需要的數(shù)據(jù),將其釋放為合并進(jìn)程騰出空間十分重要。先將MD中對KMC模擬過程中沒有影響的原子速度、力等變量空間釋放掉,騰出足夠的內(nèi)存空間用于缺陷處理。用Wigner-Seitz缺陷分析方法對MD計(jì)算結(jié)果的所有原子進(jìn)行缺陷處理,得到空位、間隙原子和正常原子的信息,同時也可以得到晶格點(diǎn)上原子的類型信息,存到數(shù)組TYPE中。其中,數(shù)組TYPE的數(shù)據(jù)就是KMC模擬計(jì)算所需的原子及其相關(guān)信息。缺陷處理結(jié)束后釋放掉處理過程中新申請的內(nèi)存的原子坐標(biāo)所占用的內(nèi)存,然后進(jìn)行進(jìn)程間數(shù)據(jù)的遷移。
對于數(shù)據(jù)遷移,首先必須確定數(shù)據(jù)接收進(jìn)程,即繼續(xù)進(jìn)行KMC模擬的進(jìn)程,以及數(shù)據(jù)發(fā)送進(jìn)程,在數(shù)據(jù)發(fā)送結(jié)束后將進(jìn)程殺死。合并的進(jìn)程在物理模型和計(jì)算機(jī)模型上并無區(qū)別,因此,認(rèn)為規(guī)定將合并的n個相鄰進(jìn)程中X坐標(biāo)最小的進(jìn)程作為接收進(jìn)程,其他進(jìn)程為發(fā)送進(jìn)程。對于接收進(jìn)程,一方面要接收發(fā)送進(jìn)程發(fā)來的數(shù)據(jù),另一方面,要進(jìn)行KMC模擬的初始化。由于Cu-Fe合金在固體狀態(tài)下是排布均勻的單晶結(jié)構(gòu),所以只需發(fā)送Cu和空位對應(yīng)的TYPE數(shù)組的信息即可,其他晶格點(diǎn)上默認(rèn)為鐵。保留MD模擬中給晶格點(diǎn)上原子類型數(shù)組、電子云密度數(shù)組以及嵌入能導(dǎo)數(shù)數(shù)組分配的內(nèi)存空間,作為KMC模擬中存儲晶格點(diǎn)原子類型以及二體斥能EV和嵌入能ER的的存儲空間,而模擬溫度,時間步長,總時間等變量則可以根據(jù)輸入重新賦值,繼續(xù)使用。
圖5為圖1所示基于多尺度耦合的并行進(jìn)程合并流程中,按照合并寬度對進(jìn)程進(jìn)行數(shù)據(jù)合并的過程示意圖,其中合并寬度n=2。
數(shù)據(jù)遷移流程如下:
(1)以X軸為基準(zhǔn)進(jìn)行進(jìn)程合并的數(shù)據(jù)遷移過程,根據(jù)合并寬度n計(jì)算沿X軸方向的MD進(jìn)程合并成numTolGroup個KMC進(jìn)程:
(2)在MD進(jìn)程中進(jìn)行數(shù)據(jù)處理,將KMC進(jìn)程中不需要的數(shù)據(jù)釋放掉:
①釋放力和速度變量;
②采用Wigner-Seitz缺陷分析方法進(jìn)行缺陷處理,更新格點(diǎn)原子類型數(shù)組TYPE;
(3)對于KMC接收進(jìn)程,釋放原子坐標(biāo)所占的內(nèi)存P(上一步缺陷處理用到了原子坐標(biāo)信息),清空電子云密度數(shù)組rho以及嵌入能導(dǎo)數(shù)數(shù)組df,用于在KMC模擬中存儲能量相關(guān)的變量ER、EV;
(4)數(shù)據(jù)遷移:發(fā)送進(jìn)程將存儲晶格點(diǎn)處原子類型的數(shù)組TYPE中表示類型為Cu和空位的部分發(fā)送給接收進(jìn)程;
(5)更新進(jìn)程拓?fù)湫畔ⅲ?/p>
(6)殺死進(jìn)程合并后剩下的空閑進(jìn)程;開始KMC模擬。
圖6為圖1所示基于多尺度耦合的并行進(jìn)程合并流程中,按照合并寬度對相應(yīng)進(jìn)程數(shù)據(jù)進(jìn)行釋放和遷移傳輸?shù)恼w流程圖。
本發(fā)明提供的一種的基于多尺度耦合的并行進(jìn)程合并方法,實(shí)現(xiàn)了計(jì)算方法在大規(guī)模并行計(jì)算中進(jìn)行不同進(jìn)程的數(shù)據(jù)合并,節(jié)約了計(jì)算資源,實(shí)現(xiàn)資源利用的最大化。
圖2為本發(fā)明實(shí)施例提供的一種基于多尺度耦合的并行進(jìn)程合并系統(tǒng)結(jié)構(gòu)示意圖。該并行進(jìn)程合并系統(tǒng)500包括第一計(jì)算模塊501、第二計(jì)算模塊502和傳輸模塊503。
第一計(jì)算模塊501,分別計(jì)算統(tǒng)計(jì)需耦合計(jì)算的至少兩類計(jì)算方法所需的變量和所需的內(nèi)存空間,并確定需傳遞的數(shù)據(jù)的類型與大?。?/p>
第二計(jì)算模塊502,判斷所述至少兩類計(jì)算方法中第一類計(jì)算方法的n個進(jìn)程合并成第二類計(jì)算方法的1個進(jìn)程的合并寬度;
傳輸模塊503,按照所述合并寬度對第一類計(jì)算方法的n個進(jìn)程和第二類計(jì)算方法的1個進(jìn)程之間的數(shù)據(jù)進(jìn)行釋放和遷移傳輸。
本發(fā)明實(shí)施例提供的一種的基于多尺度耦合的并行進(jìn)程合并系統(tǒng),實(shí)現(xiàn)了計(jì)算方法在大規(guī)模并行計(jì)算中進(jìn)行不同進(jìn)程的數(shù)據(jù)合并,節(jié)約了計(jì)算資源,實(shí)現(xiàn)資源利用的最大化。
以上的具體實(shí)施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。