馬英晉 張?zhí)?何連花? 金鐘
1) (中國科學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)信息中心, 北京 100190)
2) (中國科學(xué)院計(jì)算科學(xué)應(yīng)用研究中心, 北京 100190)
3) (北京凝聚態(tài)物理國家研究中心, 中國科學(xué)院物理研究所, 北京 100190)
4) (中國科學(xué)院大學(xué)物理科學(xué)學(xué)院, 北京 100049)
基于第一性原理的理論方法的研究, 代表了材料計(jì)算、分子模擬等領(lǐng)域的科學(xué)高地, 相應(yīng)的第一性原理計(jì)算軟件直接關(guān)系到該領(lǐng)域相關(guān)理論、算法的積累.本文匯報(bào)了我們?cè)谥貥?gòu)第一性原理計(jì)算模擬軟件—北京原子技術(shù)模擬工具包(BSTATE)的一些最新進(jìn)展.重構(gòu)的核心思想是降低用戶使用門檻、擴(kuò)展軟件適用范圍、增加軟件對(duì)于流行計(jì)算框架的支持.基于此思路, 在BSTATE原有Makefile編譯系統(tǒng)的基礎(chǔ)上添加了CMake編譯環(huán)境, 并支持各種數(shù)學(xué)函數(shù)庫的自動(dòng)和交互式配置; 通過在原有內(nèi)置泛函基礎(chǔ)上增添Libxc泛函庫的支持, 使BSTATE支持的泛函數(shù)量有了數(shù)量級(jí)上的增長; 分析測(cè)試BSTATE在集群的并行特點(diǎn), 并以更新數(shù)學(xué)庫接口(FFTW3、Cufftw)的形式提供對(duì)于流行異構(gòu)框架的初步支持.
電子結(jié)構(gòu)計(jì)算的理論依據(jù)是量子力學(xué)理論.量子力學(xué)建立了微觀粒子運(yùn)動(dòng)變化的基本規(guī)律, 將人類對(duì)自然的認(rèn)識(shí)擴(kuò)展到原子尺度的微觀世界.非相對(duì)論量子力學(xué)最流行的表述形式是Schr?dinger的波動(dòng)力學(xué)形式, 它的核心是波函數(shù)的概念及其運(yùn)動(dòng)方程 Schr?dinger方程.但電子體系的Schr?dinger方程是高維奇異問題, 很難直接求解.于是人們又通過各種手段對(duì)Schr?dinger方程進(jìn)行等價(jià)轉(zhuǎn)換或近似, 其中最基本的近似是絕熱近似或稱Born-Oppenheimer近似.它的基本思想是將整個(gè)問題分成兩部分來考慮, 考慮電子運(yùn)動(dòng)時(shí)原子核是處在它們的瞬時(shí)位置上, 而考慮核的運(yùn)動(dòng)時(shí)則不考慮電子在空間的具體分布.目前實(shí)際計(jì)算中用于求解Schr?dinger方程的各種方法大都是在這個(gè)近似基礎(chǔ)上進(jìn)行的.根據(jù)是否使用經(jīng)驗(yàn)參數(shù)和實(shí)驗(yàn)數(shù)據(jù),求解Schr?dinger方程的近似方法主要分為3類:第一性原理方法、半經(jīng)驗(yàn)方法和經(jīng)驗(yàn)方法.第一性原理方法是指不使用任何經(jīng)驗(yàn)參數(shù)和實(shí)驗(yàn)數(shù)據(jù), 只利用基本物理常數(shù)和原子量計(jì)算Schr?dinger方程的方法, 求解后得到體系的一系列性質(zhì), 如晶體結(jié)構(gòu)、結(jié)合能和電子結(jié)構(gòu)等.
眾所周知, 化學(xué)和材料科學(xué)是現(xiàn)代科學(xué)技術(shù)和國民經(jīng)濟(jì)發(fā)展的重要基石, 基于第一性原理的分子、材料模擬是研究化學(xué)反應(yīng)和材料物性最重要的方法之一, 為目標(biāo)功能導(dǎo)向的材料設(shè)計(jì)提供了可能.第一性原理計(jì)算方法在材料的性質(zhì)研究和預(yù)測(cè)方面發(fā)揮著越來越大的作用, 已經(jīng)成為繼實(shí)驗(yàn)和理論分析之外的最為重要的研究方法和手段之一.尤其是對(duì)于新型的拓?fù)洳牧系念A(yù)測(cè)和研究, 第一性原理方法發(fā)揮了無可替代的作用.
當(dāng)前我國在材料計(jì)算、反應(yīng)模擬領(lǐng)域仍然缺乏核心的競(jìng)爭(zhēng)力和影響力, 一個(gè)重要的原因就是成熟的第一性原理系列計(jì)算軟件的缺失, 仍處于利用國外 成 熟 商 業(yè) 軟 件 , 如 : GAUSSIAN[1], VASP[2](Vienna Ab-initio Simulation Package, 維也納從頭算模擬程序包), 進(jìn)行研究工作的下游.這也導(dǎo)致相關(guān)基礎(chǔ)人才儲(chǔ)備不足、后勁缺乏, 影響到計(jì)算研究進(jìn)一步的發(fā)展.雖然目前國內(nèi)的許多研究小組已經(jīng)在該領(lǐng)域做出了出色的工作, 也有越來越多的相關(guān)程序包發(fā)布 (如 BDF[3], ABACUS[4], BSTATE[5]等), 但是目前有關(guān)這方面的研究積累仍然不足, 尤其是國產(chǎn)的適用于大型計(jì)算集群、支持異構(gòu)框架的大規(guī)模并行軟件仍然缺失.這極大限制了可計(jì)算模擬的材料尺度或者分子大小, 進(jìn)而制約了相關(guān)材料和化學(xué)科學(xué)的發(fā)展.
BSTATE (Beijing Simulation Tool for Atom Technology), 中文名為北京原子技術(shù)模擬工具包,是基于密度泛函理論和平面波贗勢(shì)(包括模守恒贗勢(shì)[6]和超軟贗勢(shì)[7,8])方法的第一性原理計(jì)算程序包, 主體程序在20世紀(jì)90年代由中國科學(xué)院物理所方忠研究員及其合作者共同開發(fā).BSTATE主要用于周期性晶體結(jié)構(gòu)下能量、電子密度、能帶結(jié)構(gòu)等的計(jì)算模擬, 進(jìn)而得到物質(zhì)的電、磁、光等其他特性.除了可以很好地處理一般的基態(tài)電子結(jié)構(gòu)計(jì)算, 該程序包的長處在于能比較好的處理各種磁有序、軌道序、強(qiáng)自旋軌道耦合體系, 包含了獨(dú)創(chuàng)的處理強(qiáng)關(guān)聯(lián)體系的LDA+Gutzwiller[9?11]方法,大幅提高了計(jì)算效率[5].基于BSTATE程序包, 以物理所凝聚態(tài)研究組為主體的研究人員針對(duì)Bi2Te3, Bi2Se3和Sb2Te3等拓?fù)洳牧线M(jìn)行了第一性原理的計(jì)算, 其研究結(jié)果表明這些體系是首次發(fā)現(xiàn)的三維拓?fù)浣^緣體, 并且在其二維磁性摻雜薄膜中能實(shí)現(xiàn)量子化的反?;魻栃?yīng).這也為極低能量耗散的自旋電子器件設(shè)計(jì)指出了一個(gè)新的發(fā)展方向[12?15].
雖然BSTATE程序包已經(jīng)在拓?fù)浣^緣體的計(jì)算中取得了很好的成績(jī), 但是BSTATE的使用主要局限在少數(shù)課題組內(nèi), 有必要進(jìn)行進(jìn)一步的推廣.當(dāng)前BSTATE局限性的主要在于用戶門檻較高; 泛函數(shù)量較為單一, 不好滿足特定材料的計(jì)算要求; 以及暫時(shí)沒有考慮流行的硬件框架.針對(duì)上述問題, 我們擬對(duì)中科院物理所的第一性原理材料計(jì)算軟件包BSTATE進(jìn)行重構(gòu).以期提高軟件的易用性和適用范圍、降低用戶門檻、優(yōu)化其對(duì)流行計(jì)算框架的支持.
BSTATE程序?yàn)榇笮偷牡谝恍栽沓绦虬?有近30萬行的Fortran代碼.程序使用了FFTW(the Faster Fourier Transform in the West)函數(shù)庫、Intel MKL (Math Kernel Library)等多種數(shù)學(xué)函數(shù)和 MPI (Message Passing Interface)來提高計(jì)算效率.程序的核心部分是對(duì)交換關(guān)聯(lián)勢(shì)做了 LDA[16](Local Density Approximation)或 者GGA[17,18](Generalized Gradient Approximations)近似的KS (Kohn-Sham)方程的自洽求解[19].
波恩-奧本海默近似下, 體系中電子的定態(tài)可以由滿足非含時(shí)Schr?dinger方程的N電子波函數(shù) Ψ (r1,···,rN) 來描述, 即
其中, H為體系哈密頓算符, 包含動(dòng)能T(拉普拉斯算符 ?)、勢(shì)能V、電子相互作用U 三部分.由于電子之間的相互作用會(huì)讓體系成為很難處理的多體問題, 無法精確求解.DFT可以將含U的多體問題轉(zhuǎn)化為不含U的單體問題, 從而成為解決此類問題的一個(gè)有效方法.密度泛函理論中, 關(guān)鍵的變量為粒子的密度, 即
(2)式的關(guān)系也可以反過來, 即給出電子的密度ρ(r), 原則上也可以計(jì)算出對(duì)應(yīng)的波函數(shù) Ψ .基于此, Hohenberg與Kohn(HK定理[20])指出存在電子密度 ρ (r) 的總能量泛函 E (ρ) , 其中 E (ρ) 可以寫成外勢(shì) Vext的形式, 即
其中, Vext由 ρ (r) 唯一確定, J [ρ] 為經(jīng)典的庫倫排斥能.此時(shí)可以通過最小化 E (ρ) , 來獲得體系的能量、電子密度以及其他所有性質(zhì).相比于計(jì)算量隨粒子數(shù)指數(shù)次增長的波函數(shù)方法, 電子密度方法的計(jì)算量與電子數(shù)目無關(guān), 僅與在三維空間 (x, y, z)內(nèi)找到電子的概率有關(guān).由于泛函 G (ρ) 是未知的,HK定理并沒有給出計(jì)算 E (ρ) 的實(shí)際方法.
KS理論下 G [ρ] 可以表示為 Ts[ρ]+Exc[ρ] 的形式[21,22], 其中 Ts[ρ] 是假想無相互作用體系的動(dòng)能泛函, Exc[ρ] 是交換關(guān)聯(lián)能量.Exc[ρ] 的求解需要交換關(guān)聯(lián)勢(shì)(νxc(r)= δExc[ρ]/δρ(r))的近似形式, 其最簡(jiǎn)單的近似就是局域密度近似, 即LDA.LDA近似下 ρ 用均勻電子氣模型來處理.LDA交換關(guān)聯(lián)能只與 ρ 有關(guān), 表示為
其中, εxc(ρ(r)) 是均勻原子氣單粒子的交換關(guān)聯(lián)能.在LDA中, 具有相反自旋的電子占據(jù)相同的KS空間軌道.
為了校正電子密度分布不均勻帶來的誤差, 將表示電子密度不均勻性的密度梯度(? ρ)作為半局域變量, 引入到 Exc, 此為含廣義密度梯度校正的近似即 GGA, 得到的泛函即為GGA泛函.GGA 交 換 關(guān) 聯(lián) 能是 ρ 和 ? ρ 的 泛 函 , 即考慮到電子自旋后GGA泛函需要由四個(gè)參數(shù)確定, 即也因此相比于LDA泛函, GGA泛函在計(jì)算結(jié)合能方面明顯提高了計(jì)算精度.
除 了 LDA和 GGA泛 函, meta-GGA和hybrid-GGA[23,24]以及雙雜化泛函都是重要的泛函形式.當(dāng)前BSTATE暫時(shí)沒有用到后三種形式的泛函.泛函確定后, 體系的波函數(shù)需要通過求解Hφ=Eφ形式的KS方程來得到, 具體形式為
其中 νeff為泛函確定后的有效勢(shì).
作為第一性原理計(jì)算程序包, BSTATE程序包的核心部分是對(duì)交換關(guān)聯(lián)勢(shì)做了LDA或者GGA近似的KS方程的自洽求解.其基本流程示意圖如圖1所示.
圖1 BSTATE 計(jì)算流程示意圖Fig.1.Flowchart of BSTATE package.
以上數(shù)值求解的過程中必須把連續(xù)量離散化,如系統(tǒng)實(shí)空間原胞劃分成足夠細(xì)的網(wǎng)格, k空間的布里淵區(qū)的k點(diǎn)離散化.在迭代求解KS方程的過程中需要初始化電荷密度 ρ 與KS軌道, 可以利用單原子的電子密度分布作為初始值.有HK定理保證, KS勢(shì)可以表示成電荷密度的泛函; 所以很容易得到離散網(wǎng)格上的KS勢(shì), 進(jìn)而可以求解固定KS勢(shì)場(chǎng)的單電子本征方程獲得KS軌道信息.一般情況, 求解出來的KS軌道與初始KS軌道是不相同的.軌道求解出來以后可以根據(jù)DFT波函數(shù)為單行列式的性質(zhì)求得電子密度信息 ρ .獲得新的電子密度后, 使用HK定理重新計(jì)算KS勢(shì), 重新求解KS方程獲得KS軌道信息, 最后重新利用KS軌道和電子排布獲得電子密度信息.更新重復(fù)上面的過程, 直到所求出的新的電荷密度與輸入的電荷密度在判據(jù)范圍內(nèi)一致, 即可認(rèn)為收斂.這時(shí)候體系的波函數(shù)信息包括KS軌道和電子占據(jù), 在此基礎(chǔ)上可以得到系統(tǒng)的總能、電子態(tài)密度、能帶圖、布洛赫波、費(fèi)米面、光電導(dǎo)等一系列結(jié)果.
重構(gòu)前的BSTATE僅能采用GNU make進(jìn)行程序構(gòu)建和管理.Makefile文件描述了整個(gè)工程的編譯、連接等規(guī)則.使用 Makefile 時(shí), BSTATE的編譯步驟是:
1)通過預(yù)編譯指令(GNU的cpp或者intel的fpp), 生成編譯時(shí)使用的Fortran代碼.值得注意的是, BSTATE 的 mlwf(Maximally Localised Wannier Functions)部分需要使用自由格式的預(yù)編譯; 其余需要使用固定格式的預(yù)編譯.此外, 預(yù)編譯后實(shí)際生成的代碼會(huì)受條件編譯的控制.
2)預(yù)編譯后的源代碼 (.f90, .for)被統(tǒng)一為.f后綴的Fortran代碼.BSTATE編譯的過程中首先會(huì)編譯整個(gè)程序所需要的模塊函數(shù)(module),之后繼續(xù)編譯和連接所有的程序文件.
針對(duì)不同的計(jì)算機(jī)構(gòu)架和編譯環(huán)境, BSTATE有著不同的 Makefile模板.并支持 Intel MKL 和FFTW2等一系列的函數(shù)庫.針對(duì)不同的編譯環(huán)境,用戶需要重新修改所有的編譯選項(xiàng).這對(duì)于非計(jì)算機(jī)專業(yè)的用戶存在不低的使用門檻, 同時(shí)使得跨平臺(tái)和交叉編譯復(fù)雜化.
重構(gòu)后的BSTATE在保留舊版Makefile編譯流程的基礎(chǔ)上, 提供全新的CMake編譯系統(tǒng)支持[25].CMake 全稱是“cross platform make”, 是一個(gè)開源的跨平臺(tái)自動(dòng)化構(gòu)建系統(tǒng).新版的BSTATE使用指定名為CMakeLists.txt的配置文件來控制軟件的預(yù)編譯、編譯、連接等流程.與此同時(shí),CMake天生跨平臺(tái)的特征, 使得僅需要對(duì)于CMakeList.txt進(jìn)行簡(jiǎn)單配置, 原則上即可以生成不同目標(biāo)平臺(tái) (如 Linux, Windows, Mac)的程序文件.這可以大大簡(jiǎn)化跨平臺(tái)和交叉編譯方面的工作.重構(gòu)后的BSTATE編譯系統(tǒng)的特點(diǎn)主要有:
1)保留原版Makefile的編譯流程.使用cmake或者ccmake時(shí)可以指定預(yù)編譯環(huán)境(cpp、fpp).預(yù)編譯時(shí)可以指定條件編譯的選項(xiàng), 生成編譯BSTATE時(shí)使用的有效代碼.
2)內(nèi)置了不同優(yōu)化等級(jí)的預(yù)編譯和編譯方案(如 debug, release 等); 支持多線程編譯.
3)提供Libxc、FFTW2/3、CUFFT/CUFFTW等外接函數(shù)庫開關(guān)選項(xiàng); 支持不同語言的混合編譯.
4)通過 cmake-curses-gui提供圖形交互式(GUI)的預(yù)編譯和編譯支持.
5)通過對(duì)“MATH_ROOT”或類似關(guān)鍵環(huán)境變量的查找, 提供對(duì)于常見數(shù)學(xué)函數(shù)庫的自動(dòng)搜索和支持功能.該功能默認(rèn)開啟, 并按照“MKL,ESSL, OPENBLAS, ATLAS, ACML, SYSTEM_NATIVE”的默認(rèn)順序進(jìn)行數(shù)學(xué)函數(shù)庫的自動(dòng)配置.
通過以上的調(diào)整, 重構(gòu)后的BSTATE可以通過CMake實(shí)現(xiàn)自動(dòng)和快速編譯.比如終端中鍵入FC = mpif90 ccmake [BSTATE_CMakeList.txt],即可開啟預(yù)編譯和編譯的GUI, 進(jìn)行自動(dòng)配置或按提示修改編譯選項(xiàng).
在表1中我們也總結(jié)了BSTATE新老編譯系統(tǒng)的對(duì)比.可以看出重構(gòu)后的編譯系統(tǒng)相對(duì)于舊版, 無論是在代碼維護(hù)、擴(kuò)展性、用戶使用等等方面均有長足的進(jìn)步.
表1 重構(gòu)前后 BSTATE 編譯系統(tǒng)的對(duì)比Table 1.Comparison of BSTATE compilation system.
重構(gòu)前的BSTATE程序已經(jīng)可以調(diào)用多種函數(shù)庫來實(shí)現(xiàn)額外的功能或加速計(jì)算過程, 例如傅里葉變換FFTW函數(shù)庫, 但其僅支持老舊的FFTW2接口.因此, 首先在BSTATE里面增加FFTW3[26]的調(diào)用接口, 以便使用常用的SSE2和AVX指令集, 加速運(yùn)算.同時(shí), 也初步接入了基于 CUDA的傅里葉變換函數(shù)庫(CUFFTW和CUFFT), 已可取得同CPU版本一致的計(jì)算結(jié)果, 但是效率仍有很大的提升空間.
重構(gòu)前的 BSTATE已經(jīng)支持 LDA, GGA,LDA+U, GGA+U 等計(jì)算.但其僅通過固定的代碼支持 ldapw91和 ggapbe兩個(gè)泛函.因此將Libxc庫[27]接入BSTATE, 使其可以支持流行的各種泛函.Libxc是當(dāng)前最為全面的交換關(guān)聯(lián)泛函庫 .該 泛 函 庫 由 ETSF(European Theoretical Spectroscopy Facility)維護(hù), 并幾乎收錄了主流期刊公開報(bào)道的所有交換關(guān)聯(lián)泛函.
Libxc內(nèi)部函數(shù)相互依賴, 調(diào)用需要編譯為庫文件后才能在子程序中調(diào)用.因此重構(gòu)時(shí)主要通過預(yù)編譯的方式在多個(gè)子程序中配置, 然后再進(jìn)行調(diào)用.在重構(gòu)的BSTATE程序中, LDA和GGA泛函通過新添加的extern_functionals.f90接口程序接入.對(duì)于LDA泛函, 勢(shì)能僅僅依賴于電子的密度 (即); 對(duì)于 GGA 泛函, 勢(shì)能會(huì)依賴于電子的密度和電子密度的梯度(即接口程序定位在BSTATE中的xc_gga.f90源程序中.除了電子密度、梯度等信息, k點(diǎn)信息、自旋等也要在接口中傳遞.
圖2 閃鋅礦結(jié)構(gòu)的 GaAs雙原子化合物Fig.2.GaAs compound with zinc blende structure.
作為測(cè)試, 使用砷化鎵體系(GaAs, 見圖2)和石墨烯片段作為測(cè)試的算例.測(cè)試的結(jié)果表明重構(gòu)后的BSTATE在DFT計(jì)算中性能可以與之前持平(表2和表3), 無論是單核、多核還是MPI并行計(jì)算, 性能均沒有明顯差距.此外, 受益于FFTW3對(duì)于SSE2和AVX系列指令集的支持,在Intel異構(gòu)眾核平臺(tái)(MIC)的計(jì)算結(jié)果會(huì)有一定的提升.
表2 Libxc 版本與原始版本性能比較Table 2.Benchmarks between BSTATEs with/without Libxc.
表3 FFTW3+Libxc 版本與原始 FFTW2 版本性能比較Table 3.Benchmarks between V.FFTW2 and V.FFTW3+ Libxc.
圖3 多種泛函計(jì)算的 GaAs 的態(tài)密度 (a) (b) (c) (d)Fig.3.Calculated density of states (DOS): (a); (b); (c); (d).
使用整合 Libxc和 FFTW3的 BSTATE版本, 我們?cè)谠械膌pw91(LDA)和ggapbe(GGA)泛函的基礎(chǔ)上使用相對(duì)論(lda_x_rel[28])和自適應(yīng)(lda_x_rae[29])的LDA泛函計(jì)算了GaAs的態(tài)密度.其計(jì)算結(jié)果列于圖3, 可以看出對(duì)于該體系不同的泛函會(huì)得到整體相似的態(tài)密度結(jié)果, 主要區(qū)別在–6 eV、0—4 eV 能量區(qū)間.
提高第一性原理計(jì)算模擬軟件的計(jì)算效率一直是計(jì)算科學(xué)領(lǐng)域的一大挑戰(zhàn).其主要原因是電子的強(qiáng)相互作用導(dǎo)致能量和波函數(shù)只能在哈密頓構(gòu)造完之后才可以求解; 而且構(gòu)造和求解的過程中也涉及各種數(shù)據(jù)結(jié)構(gòu)或者數(shù)值代數(shù)方面的問題.BSTATE軟件在設(shè)計(jì)之初就已經(jīng)很好地考慮這些方面的問題, 并已經(jīng)可以通過MPI模塊按照k點(diǎn)進(jìn)行分布式求解.所謂 k點(diǎn)并行化, 即將k點(diǎn)均勻分配給 (并行環(huán)境中的)多個(gè) CPU, CPU 之間的數(shù)據(jù)交換較少, 計(jì)算效率高.
為了詳細(xì)分析BSTATE的并行性能, 我們選用GaAs晶體和石墨烯片段分別進(jìn)行小規(guī)模和大規(guī)模的測(cè)試計(jì)算.對(duì)于較小體系如GaAs晶體, 使用個(gè)人PC在多核(4線程)計(jì)算, 分析過程中的各個(gè)大類模塊所占時(shí)間比例統(tǒng)計(jì)于圖4中(編譯采用-O2優(yōu)化).可以看出, 傅里葉變換時(shí)間占比接近58%, 緊隨其后為特征值求解, 時(shí)間占比約為12%左右, 態(tài)密度、球貝塞爾函數(shù)計(jì)算部分合計(jì)占比均為15%左右.對(duì)于較大體系如石墨烯片段的計(jì)算(圖4), 我們使用56核MPI并行的集群進(jìn)行了測(cè)試, 測(cè)試結(jié)果表明特征值求解部分占用最多的時(shí)間比例, 約為65%, 同時(shí)傅里葉變換時(shí)間占比下降到18%左右.
圖4 個(gè) 人 PC (左 圖)及 集 群 MPI (右 圖)測(cè) 試 中BSTATE各模塊的時(shí)間占比統(tǒng)計(jì)Fig.4.Time percentages of subroutines in BSTATE using PC (left) and Cluster (right).
圖5 BSTATE 的 MPI多 線 程 并 行 分 析 ; 其 中 藍(lán) 色 、 紅 色 、 黃 色 、 黑 色 分 別 代 表 application(BSTATE), MPI_barrier,MPI_reduce以及MPI_allreduce.Fig.5.Analysis via TAU performance system framework for BSTATE.
在圖4中集群MPI的并行模式下面, 我們也通過使用 TAU (Tuning and Analysis Utilities;重構(gòu)的BSTATE通過CMake可以整合TAU模塊) 分析了BSTATE并行時(shí)各個(gè)線程的執(zhí)行情況,并示于圖5中.可以看出在按照現(xiàn)有的基于k點(diǎn)的并行策略, BSTATE各個(gè)線程有著較好的負(fù)載均衡, 各個(gè)計(jì)算核心的計(jì)算能力都得到很好的發(fā)揮.
最后, 我們使用重構(gòu)的BSTATE版本(即包含 CMake+TAU+FFTW3+Libxc 的版本), 在中國科學(xué)院的“元”集群上對(duì)石墨烯片段體系進(jìn)行了更大規(guī)模的測(cè)試, 以驗(yàn)證新的版本可以穩(wěn)定的執(zhí)行計(jì)算任務(wù).該測(cè)試平臺(tái)基于曙光TC4600 E刀片平臺(tái), 采用 Intel Xeon E5 2680 V3 處理器 (2.5 GHz、12 核).測(cè)試的結(jié)果示于圖6 中.可以看出, 重構(gòu)的BSTATE相對(duì)于重構(gòu)前基于FFTW2的版本在跨節(jié)點(diǎn)并行方面有著一定的性能提升(0—17%左右的加速).這應(yīng)該得益于新的FFTW3調(diào)用接口以及基于Libxc的泛函求解方案.同時(shí)我們也注意到當(dāng)前基于k點(diǎn)的并行求解方案在核心過多的情況下效率下降很快, 這也是實(shí)際計(jì)算中特別要注意的方面.
圖6 重構(gòu)前后的 BSTATE 跨節(jié)點(diǎn)并行測(cè)試Fig.6.Benchmark of MPI parallel for BSTATE with and without refactoring.
本文匯報(bào)了我們?cè)谥貥?gòu)第一性計(jì)算模擬軟件BSTATE的一些最新進(jìn)展.根據(jù)重構(gòu)的核心思想(降低用戶使用門檻、擴(kuò)展軟件適用范圍、提高軟件計(jì)算效率), 我們的工作主要集中在編譯、配置部分的自動(dòng)化, 增加泛函類別, 以及優(yōu)化程序接口3個(gè)方面.重構(gòu)后的BSTATE通過CMake的引入可以實(shí)現(xiàn)跨平臺(tái)、簡(jiǎn)單圖形化的編譯; 通過Libxc和FFTW3的引入和更新實(shí)現(xiàn)了程序功能的擴(kuò)展和對(duì)更多計(jì)算平臺(tái)的支持; 最后的并行分析和穩(wěn)定性測(cè)試, 驗(yàn)證了重構(gòu)后的BSTATE可以更好地勝任第一性原理方面的計(jì)算任務(wù), 并在跨節(jié)點(diǎn)并行方面有著一定的性能提升.
在重構(gòu)的進(jìn)程中, 也注意到BSTATE仍有較大的改進(jìn)空間.比如在原理層面上的哈密頓的構(gòu)造、子空間迭代等自洽迭代改進(jìn)方案, 以及技術(shù)層面上的CPU-GPU協(xié)同計(jì)算方面.這些需要更多的第一性原理算法上的積累和深入, 也是我們后面需要進(jìn)一步考慮的方面.
感謝徐順博士關(guān)于程序優(yōu)化方面的指導(dǎo)和討論.