本技術(shù)涉及分子動力學(xué),特別是涉及一種分子動力學(xué)模擬的作用力分析方法、裝置、和計算機(jī)設(shè)備。
背景技術(shù):
1、分子動力學(xué)模擬是一種幫助人們在原子和分子水平上理解材料微觀過程的計算機(jī)模擬方法,是材料科學(xué)領(lǐng)域的重要科研工具之一。分子動力學(xué)模擬遵循的基本原理是經(jīng)典牛頓運動定律,通過數(shù)值求解模擬系統(tǒng)中粒子的牛頓運動方程,獲取每個時刻粒子的坐標(biāo)和動量,進(jìn)而獲得相空間的運動軌跡,再利用統(tǒng)計力學(xué)方法得到系統(tǒng)的宏觀性質(zhì),從而進(jìn)行材料的分析與設(shè)計。
2、隨著跨尺度材料科學(xué)計算需求的不斷增加,分子動力學(xué)模擬體系的規(guī)模不斷增大,達(dá)到了十億甚至百億級原子,要想實現(xiàn)大規(guī)模的分子動力學(xué)模擬離不開強(qiáng)大超級計算機(jī)的支持。然而,不同的超級計算機(jī)其處理器架構(gòu)特點各異,現(xiàn)有材料計算軟件的數(shù)據(jù)結(jié)構(gòu)和算法設(shè)計無法充分地捕捉到數(shù)據(jù)的局部性特征,難以完美地適配超級計算機(jī),通常無法表現(xiàn)出最佳性能。從而導(dǎo)致在分子動力學(xué)模擬過程中,原子間相互作用力的計算效率較低。
技術(shù)實現(xiàn)思路
1、基于此,有必要針對上述技術(shù)問題,提供一種分子動力學(xué)模擬的作用力分析方法、裝置、計算機(jī)設(shè)備、計算機(jī)可讀存儲介質(zhì)和計算機(jī)程序產(chǎn)品。
2、第一方面,本技術(shù)提供了一種分子動力學(xué)模擬的作用力分析方法。所述方法包括:
3、獲取當(dāng)前進(jìn)程的本地原子的數(shù)目、以及每個本地原子對應(yīng)的鄰居列表,并基于所述當(dāng)前進(jìn)程的本地原子的數(shù)目,確定所述當(dāng)前進(jìn)程適配的各組鄰接表的組數(shù)、以及所有組鄰接表的分配內(nèi)存值;
4、基于所述當(dāng)前進(jìn)程適配的各組鄰接表的組數(shù),將各所述本地原子進(jìn)行分組處理,得到各原子組,并在各所述原子組中,隨機(jī)篩選目標(biāo)原子組、以及目標(biāo)原子組中的各本地原子對應(yīng)的鄰居列表;
5、基于所述目標(biāo)原子組中的各本地原子對應(yīng)的鄰居列表、以及所有組鄰接表的分配內(nèi)存值,通過鄰接表構(gòu)建策略,構(gòu)建目標(biāo)組鄰接表,并在各非目標(biāo)原子組中,重新篩選目標(biāo)原子組;每個原子組只能夠篩選一次;
6、返回執(zhí)行基于所述目標(biāo)原子組中的各本地原子對應(yīng)的鄰居列表,通過鄰接表構(gòu)建策略,構(gòu)建目標(biāo)組鄰接表步驟,得到多個目標(biāo)組鄰接表,并基于每個目標(biāo)組鄰接表、每個目標(biāo)鄰接表對應(yīng)的各目標(biāo)原子組、以及各所述本地原子的三維坐標(biāo),計算所述當(dāng)前進(jìn)程的各本地原子的分子受力結(jié)果。
7、可選的,所述基于所述當(dāng)前進(jìn)程的本地原子的數(shù)目,確定所述當(dāng)前進(jìn)程適配的各組鄰接表的組數(shù)、以及所有組鄰接表的分配內(nèi)存值,包括:
8、獲取各歷史進(jìn)程中的最大本地原子的數(shù)目、以及預(yù)設(shè)組因子,并在所述當(dāng)前進(jìn)程的各本地原子中,識別目標(biāo)原子類型的本地原子的數(shù)目;
9、基于所述最大本地原子的數(shù)目、以及所述目標(biāo)原子類型的本地原子的數(shù)目,計算所述當(dāng)前進(jìn)程適配的各組鄰接表的組數(shù),并基于各所述組鄰接表的組數(shù)、每個原子的最大鄰居數(shù)目、以及所述預(yù)設(shè)組因子,計算所有組鄰接表的分配內(nèi)存值。
10、可選的,所述基于所述當(dāng)前進(jìn)程適配的各組鄰接表的組數(shù),將各所述本地原子進(jìn)行分組處理,得到各原子組,包括:
11、識別所述組鄰接表的架構(gòu)信息,并基于所述架構(gòu)信息,識別所述組鄰接表的向量寬度;
12、基于所述向量寬度,將各所述本地原子進(jìn)行分組處理,得到各原子組。
13、可選的,所述在各所述原子組中,隨機(jī)篩選目標(biāo)原子組、以及目標(biāo)原子組中的各本地原子對應(yīng)的鄰居列表之后,還包括:
14、獲取鄰接表構(gòu)建策略,并識別所述鄰接表構(gòu)建策略對應(yīng)的目標(biāo)截斷半徑;
15、識別每個鄰居列表的各鄰居原子的原子編號,并按照各所述鄰居原子的原子編號,分別對每個鄰居列表中的各鄰居原子進(jìn)行升序排序處理,得到每個鄰居列表的列表序列。
16、可選的,所述基于所述目標(biāo)原子組中的各本地原子對應(yīng)的鄰居列表、以及所有組鄰接表的分配內(nèi)存值,通過鄰接表構(gòu)建策略,構(gòu)建目標(biāo)組鄰接表,包括:
17、針對每個本地原子,基于所述本地原子對應(yīng)的鄰居列表的列表序列,構(gòu)建所述本地原子對應(yīng)的鄰居列表的整型指針;
18、基于所述目標(biāo)原子組中的各本地原子的原子位置,計算所述組鄰接表的起始坐標(biāo),并基于所述組鄰接表的起始坐標(biāo),在所有組鄰接表的分配內(nèi)存之中,篩選所述組鄰接表的目標(biāo)內(nèi)存地址;
19、基于所述組鄰接表的目標(biāo)內(nèi)存地址、所述鄰接表構(gòu)建策略對應(yīng)的目標(biāo)截斷半徑、以及各所述本地原子對應(yīng)的鄰居列表的整型指針,通過所述鄰接表構(gòu)建策略,在各所述鄰居列表中,篩選存儲于所述組鄰接表的各鄰居原子,并將包含各所述鄰居原子的組鄰接表,作為所述目標(biāo)原子組對應(yīng)的目標(biāo)組鄰接表。
20、可選的,所述基于每個目標(biāo)組鄰接表、每個目標(biāo)鄰接表對應(yīng)的各目標(biāo)原子組、以及各所述本地原子的三維坐標(biāo),計算所述當(dāng)前進(jìn)程的各本地原子的分子受力結(jié)果,包括:
21、針對每個目標(biāo)原子組,將所述目標(biāo)原子組中的各本地原子的三維坐標(biāo),生成第一組向量,并從所述目標(biāo)原子組對應(yīng)的目標(biāo)組鄰接表中,獲取各鄰居原子的原子編號;
22、基于各所述原子編號,識別各所述鄰居原子對應(yīng)的本地原子的識別三維坐標(biāo),并基于各所述本地原子的識別三維坐標(biāo),生成第二組向量,并將所述第二組向量,與所述第一組向量分別進(jìn)行求差計算,得到第三組向量;
23、對所述第三組向量進(jìn)行平方求和處理,得到第一目標(biāo)向量,并基于所述第一目標(biāo)向量、以及所述目標(biāo)截斷半徑,生成第二目標(biāo)向量;
24、計算所述第一目標(biāo)向量、與所述第二目標(biāo)向量之間的向量差值,得到掩碼向量,并獲取所述目標(biāo)原子組中的各本地原子的原子類型、以及每個原子類型對應(yīng)的勢參數(shù);
25、基于各所述本地原子的勢參數(shù)、以及所述第二目標(biāo)向量,分別計算每個本地原子的增量受力結(jié)果,并基于所述第三組向量、各所述本地原子的增量受力結(jié)果、以及所述掩碼向量,識別各所述本地原子的分子受力結(jié)果。
26、第二方面,本技術(shù)還提供了一種分子動力學(xué)模擬的作用力分析裝置。所述裝置包括:
27、獲取模塊,用于獲取當(dāng)前進(jìn)程的本地原子的數(shù)目、以及每個本地原子對應(yīng)的鄰居列表,并基于所述當(dāng)前進(jìn)程的本地原子的數(shù)目,確定所述當(dāng)前進(jìn)程適配的各組鄰接表的組數(shù)、以及所有組鄰接表的分配內(nèi)存值;
28、分組模塊,用于基于所述當(dāng)前進(jìn)程適配的各組鄰接表的組數(shù),將各所述本地原子進(jìn)行分組處理,得到各原子組,并在各所述原子組中,隨機(jī)篩選目標(biāo)原子組、以及目標(biāo)原子組中的各本地原子對應(yīng)的鄰居列表;
29、構(gòu)建模塊,用于基于所述目標(biāo)原子組中的各本地原子對應(yīng)的鄰居列表、以及所有組鄰接表的分配內(nèi)存值,通過鄰接表構(gòu)建策略,構(gòu)建目標(biāo)組鄰接表,并在各非目標(biāo)原子組中,重新篩選目標(biāo)原子組;每個原子組只能夠篩選一次;
30、計算模塊,用于返回執(zhí)行基于所述目標(biāo)原子組中的各本地原子對應(yīng)的鄰居列表,通過鄰接表構(gòu)建策略,構(gòu)建目標(biāo)組鄰接表步驟,得到多個目標(biāo)組鄰接表,并基于每個目標(biāo)組鄰接表、每個目標(biāo)鄰接表對應(yīng)的各目標(biāo)原子組、以及各所述本地原子的三維坐標(biāo),計算所述當(dāng)前進(jìn)程的各本地原子的分子受力結(jié)果。
31、可選的,所述獲取模塊,具體用于:
32、獲取各歷史進(jìn)程中的最大本地原子的數(shù)目、以及預(yù)設(shè)組因子,并在所述當(dāng)前進(jìn)程的各本地原子中,識別目標(biāo)原子類型的本地原子的數(shù)目;
33、基于所述最大本地原子的數(shù)目、以及所述目標(biāo)原子類型的本地原子的數(shù)目,計算所述當(dāng)前進(jìn)程適配的各組鄰接表的組數(shù),并基于各所述組鄰接表的組數(shù)、每個原子的最大鄰居數(shù)目、以及所述預(yù)設(shè)組因子,計算所有組鄰接表的分配內(nèi)存值。
34、可選的,所述分組模塊,具體用于:
35、識別所述組鄰接表的架構(gòu)信息,并基于所述架構(gòu)信息,識別所述組鄰接表的向量寬度;
36、基于所述向量寬度,將各所述本地原子進(jìn)行分組處理,得到各原子組。
37、可選的,所述裝置還包括:
38、識別模塊,用于獲取鄰接表構(gòu)建策略,并識別所述鄰接表構(gòu)建策略對應(yīng)的目標(biāo)截斷半徑;
39、排序模塊,用于識別每個鄰居列表的各鄰居原子的原子編號,并按照各所述鄰居原子的原子編號,分別對每個鄰居列表中的各鄰居原子進(jìn)行升序排序處理,得到每個鄰居列表的列表序列。
40、可選的,所述構(gòu)建模塊,具體用于:
41、針對每個本地原子,基于所述本地原子對應(yīng)的鄰居列表的列表序列,構(gòu)建所述本地原子對應(yīng)的鄰居列表的整型指針;
42、基于所述目標(biāo)原子組中的各本地原子的原子位置,計算所述組鄰接表的起始坐標(biāo),并基于所述組鄰接表的起始坐標(biāo),在所有組鄰接表的分配內(nèi)存之中,篩選所述組鄰接表的目標(biāo)內(nèi)存地址;
43、基于所述組鄰接表的目標(biāo)內(nèi)存地址、所述鄰接表構(gòu)建策略對應(yīng)的目標(biāo)截斷半徑、以及各所述本地原子對應(yīng)的鄰居列表的整型指針,通過所述鄰接表構(gòu)建策略,在各所述鄰居列表中,篩選存儲于所述組鄰接表的各鄰居原子,并將包含各所述鄰居原子的組鄰接表,作為所述目標(biāo)原子組對應(yīng)的目標(biāo)組鄰接表。
44、可選的,所述計算模塊,具體用于:
45、針對每個目標(biāo)原子組,將所述目標(biāo)原子組中的各本地原子的三維坐標(biāo),生成第一組向量,并從所述目標(biāo)原子組對應(yīng)的目標(biāo)組鄰接表中,獲取各鄰居原子的原子編號;
46、基于各所述原子編號,識別各所述鄰居原子對應(yīng)的本地原子的識別三維坐標(biāo),并基于各所述本地原子的識別三維坐標(biāo),生成第二組向量,并將所述第二組向量,與所述第一組向量分別進(jìn)行求差計算,得到第三組向量;
47、對所述第三組向量進(jìn)行平方求和處理,得到第一目標(biāo)向量,并基于所述第一目標(biāo)向量、以及所述目標(biāo)截斷半徑,生成第二目標(biāo)向量;
48、計算所述第一目標(biāo)向量、與所述第二目標(biāo)向量之間的向量差值,得到掩碼向量,并獲取所述目標(biāo)原子組中的各本地原子的原子類型、以及每個原子類型對應(yīng)的勢參數(shù);
49、基于各所述本地原子的勢參數(shù)、以及所述第二目標(biāo)向量,分別計算每個本地原子的增量受力結(jié)果,并基于所述第三組向量、各所述本地原子的增量受力結(jié)果、以及所述掩碼向量,識別各所述本地原子的分子受力結(jié)果。
50、第三方面,本技術(shù)提供了一種計算機(jī)設(shè)備。所述計算機(jī)設(shè)備包括存儲器和處理器,所述存儲器存儲有計算機(jī)程序,所述處理器執(zhí)行所述計算機(jī)程序時實現(xiàn)第一方面中任一項所述的方法的步驟。
51、第四方面,本技術(shù)提供了一種計算機(jī)可讀存儲介質(zhì)。其上存儲有計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時實現(xiàn)第一方面中任一項所述的方法的步驟。
52、第五方面,本技術(shù)提供了一種計算機(jī)程序產(chǎn)品。所述計算機(jī)程序產(chǎn)品包括計算機(jī)程序,該計算機(jī)程序被處理器執(zhí)行時實現(xiàn)第一方面中任一項所述的方法的步驟。
53、上述分子動力學(xué)模擬的作用力分析方法、裝置、和計算機(jī)設(shè)備,通過獲取當(dāng)前進(jìn)程的本地原子的數(shù)目、以及每個本地原子對應(yīng)的鄰居列表,并基于所述當(dāng)前進(jìn)程的本地原子的數(shù)目,確定所述當(dāng)前進(jìn)程適配的各組鄰接表的組數(shù)、以及所有組鄰接表的分配內(nèi)存值;基于所述當(dāng)前進(jìn)程適配的各組鄰接表的組數(shù),將各所述本地原子進(jìn)行分組處理,得到各原子組,并在各所述原子組中,隨機(jī)篩選目標(biāo)原子組、以及目標(biāo)原子組中的各本地原子對應(yīng)的鄰居列表;基于所述目標(biāo)原子組中的各本地原子對應(yīng)的鄰居列表、以及所有組鄰接表的分配內(nèi)存值,通過鄰接表構(gòu)建策略,構(gòu)建目標(biāo)組鄰接表,并在各非目標(biāo)原子組中,重新篩選目標(biāo)原子組;每個原子組只能夠篩選一次;返回執(zhí)行基于所述目標(biāo)原子組中的各本地原子對應(yīng)的鄰居列表,通過鄰接表構(gòu)建策略,構(gòu)建目標(biāo)組鄰接表步驟,得到多個目標(biāo)組鄰接表,并基于每個目標(biāo)組鄰接表中的本地原子的數(shù)目、以及各所述本地原子的三維坐標(biāo),計算當(dāng)前進(jìn)程的各本地原子的分子受力結(jié)果。本方案通過構(gòu)建各組鄰接表的方式,計算各本地原子與鄰居原子的分子受力結(jié)果,避免了計算單個本地原子與模擬體系所有原子之間的作用力的復(fù)雜運算問題,從而提升了計算效率,然后現(xiàn)有技術(shù)中不管是基于截斷半徑r的每個時間步構(gòu)建鄰接表方式,還是基于擴(kuò)展截斷半徑(r+skin)的多個時間步構(gòu)建一次鄰接表方式,鄰接表中原子分布的數(shù)據(jù)局部性都無法被充分利用,且重復(fù)訪存導(dǎo)致計算效率低。而本方案過對數(shù)量為向量寬度大小的鄰接表進(jìn)行重新組織和構(gòu)建成一個組鄰接表,提升了數(shù)據(jù)重用率,降低了訪存開銷,提升了作用力計算的性能,從而綜合提升了在分子動力學(xué)模擬過程中,原子間相互作用力的計算效率。