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