基于Gaussian 03 的計算化學(xué)集群系統(tǒng)方案

1. Gaussian 軟件簡介
1.1. Gaussian 軟件功能介紹
Gaussian 是做半經(jīng)驗計算和從頭計算使用最廣泛的量子化學(xué)軟件,可以研究:分子能量和結(jié)構(gòu),過渡態(tài)的能量和結(jié)構(gòu),化學(xué)鍵以及反應(yīng)能量,分子軌道,偶極矩和多極矩,原子電荷和電勢,振動頻率,紅外和拉曼光譜,NMR,極化率和超極化率,熱力學(xué)性質(zhì),反應(yīng)路徑。計算可以模擬在氣相和溶液中的體系,模擬基態(tài)和激發(fā)態(tài)。Gaussian 03 還可以對周期邊界體系進行計算。Gaussian 是研究諸如取代效應(yīng),反應(yīng)機理,勢能面和激發(fā)態(tài)能量的有力工具。
Gaussian 03 是由許多程序相連通的體系,用于執(zhí)行各種半經(jīng)驗和從頭分子軌道(MO)計算。Gaussian 03 可用來預(yù)測氣相和液相條件下,分子和化學(xué)反應(yīng)的許多性質(zhì),包括:
A2.jpg
_ 分子的能量和結(jié)構(gòu)
_ 過渡態(tài)的能量和結(jié)構(gòu)
_ 振動頻率
_ 紅外和拉曼光譜(包括預(yù)共振拉曼)
_ 熱化學(xué)性質(zhì)
_ 成鍵和化學(xué)反應(yīng)能量
_ 化學(xué)反應(yīng)路徑
_ 分子軌道
_ 原子電荷
_ 電多極矩
_ NMR 屏蔽和磁化系數(shù)
A3.jpg
_ 自旋-自旋耦合常數(shù)
_ 振動圓二色性強度
_ 電子圓二色性強度
_ g 張量和超精細光譜的其它張量
_ 旋光性
_ 振動-轉(zhuǎn)動耦合
_ 非諧性的振動分析和振動-轉(zhuǎn)動耦合
_ 電子親和能和電離勢
_ 極化和超極化率(靜態(tài)的和含頻的)
_ 各向異性超精細耦合常數(shù)
_ 靜電勢和電子密度
計算可以對體系的基態(tài)或激發(fā)態(tài)執(zhí)行??梢灶A(yù)測周期體系的能量,結(jié)構(gòu)和分子軌道。因此,Gaussian 03 可以作為功能強大的工具,用于研究許多化學(xué)領(lǐng)域的課題,例如取代基的影響,化學(xué)反應(yīng)機理,勢能曲面和激發(fā)能等等。
Gaussian 03 程序設(shè)計時考慮到使用者的需要。所有的標(biāo)準(zhǔn)輸入采用自由格式和助記代號,程序自動提供輸入數(shù)據(jù)的合理默認(rèn)選項,計算結(jié)果的輸出中含有許多解釋性的說明。程序另外提供許多選項指令讓有經(jīng)驗的用戶更改默認(rèn)的選項,并提供用戶個人程序連接Gaussian 03的接口。作者希望他們的努力可以讓用戶把精力集中于把方法應(yīng)用到化學(xué)問題上和開發(fā)新方法上,而不是放在執(zhí)行計算的技巧上。
1.2. Gaussian 軟件主要組成模塊(并行)介紹
Gaussian 03 軟件由很多子程序構(gòu)成,一個Gaussian 03 執(zhí)行程序會啟動多個子程序分段執(zhí)行,其中部分程序可以并行執(zhí)行,部分程序只能串行執(zhí)行。下面是這些程序的功能介紹,本方案中主要標(biāo)出可并行的程序:
鏈接 功能
L302 (并行) 計算重疊積分,動能和勢能積分
L502 (并行) 迭代求解SCF 方程(用于通常的UHF 和ROHF ,所有的直接方法,以及SCRF)
L506 (并行) 進行ROHF 或GVB-PP 計算
L508 (并行) 二次收斂SCF 程序
L510 (并行) MC-SCF
L602 (并行) 單電子特性(勢,場,和場梯度)
L701 (并行) 單電子積分一階或二階導(dǎo)數(shù)
L703 (并行) 雙電子積分一階或二階導(dǎo)數(shù)(spdf)
L906 (并行) 半直接的MP2
L913 (并行) 計算后-SCF 能量和梯度項
L914 (并行) CIS,RPA 和Zindo 激發(fā)能;SCF 穩(wěn)定性
L1002(并行) 迭代求解CPHF 方程;計算各種特性(包括NMR)
L1014(并行) 計算解析的CIS 二階導(dǎo)數(shù)
L1101(并行) 計算單電子積分導(dǎo)數(shù)
L1110(并行) 雙電子積分導(dǎo)數(shù)對Fock 矩陣的貢獻
L1112(并行) MP2 二階導(dǎo)數(shù)
通常的Gaussian 運算程序由以上這些子程序和其它串行子程序組成的序列組成,其中通常會包含一些串行部分和一些并行部分。在可并行程序部分可以通過集群系統(tǒng)獲得更高的性能。
1.3. Gaussian 軟件并行方式
Gaussian 03 軟件主要采用兩種并行方式,對于IBM 小型機或者SGI 的Origin系列或者Altix 系列的高性能機來說,主要采用基于OpenMP 的并行方式。
OpenMP 并行方式可以運行在基于共享內(nèi)存方式或者基于 #p#page_title#e#NUMA 體系結(jié)構(gòu)的高性能計算機上采用多線程的方式實現(xiàn)高速并行。這也是Gaussian 系列軟件最早采用的并行方式。對于目前最流行的集群系統(tǒng),Gaussian 系列軟件也引入了Linda并行庫來實現(xiàn)多機的并行作業(yè)。TCP-Linda 是專門為Gaussian03 設(shè)計,實現(xiàn)G03分布式并行的必需程序。Gaussian 03 軟件可以在執(zhí)行任務(wù)的時候選擇Linda 并行方式還是共享內(nèi)存方式。當(dāng)然,基于OpenMP 的并行方式將受到單節(jié)點的CPU數(shù)的限制。例如如果服務(wù)器的CPU 數(shù)為8,則采用Gaussian 03 的OpenMP 并行方式將最多使用8 顆CPU 并行工作。
2. Gaussian 03 并行平臺系統(tǒng)分析
從本章開始,將著重闡述北京宏劍公司對Gaussian 03 運算并行平臺的系統(tǒng)分析,從而幫助我們?yōu)橄蛴脩籼峁┮惶拙哂凶顑?yōu)性能價格比的方案做好準(zhǔn)備。
2.1. 關(guān)于g03 在并行集群平臺上的加速比
Gaussian 03 的問題規(guī)模會隨著計算題目的復(fù)雜程度、所選取的粒子數(shù)目、所選基組的數(shù)目、使用的基函數(shù)的數(shù)目以及算法收斂快慢等多種因素的變化而變化;在很多領(lǐng)域中,Gaussian 03 計算只需要普通的PC 機就可以進行,但是同樣也有很多使用PC 機無法解決的問題,這個時候,采用并行技術(shù)的Gaussian 03計算就成為了解決該類問題的必然方法。目前Gaussian 03 中幾個比較消耗CPU的Link 都實現(xiàn)了并行。一個采用了優(yōu)秀方法的運算題目可以使得Gaussian 03 在并行平臺上的運算效果更好。以Gaussian 03 的Benchmark 中的test397 為例,其并行部分主要集中在Link 502 和Link 703,這兩個部分都可以實現(xiàn)很好的并行。
下面是Gaussian 03 軟件的test397 測試在并行平臺上的并行測試結(jié)果:
A1.jpg
Test397 在并行平臺上的加速比
如圖,綜坐標(biāo)是運行時間(Wall time),以秒為單位;橫坐標(biāo)是CPU 個數(shù),其中4 顆CPU 以內(nèi)采用了sharemem 的形式,8 顆CPU 的并行采用了Linda 并行的方式。我們可以看到在目前的測試規(guī)模下,test397 在并行集群系統(tǒng)上顯示了較為良好的性能加速比,這也就意味著過去需要一天才能算完的題目可以在4個小時以內(nèi)完成運算。這也標(biāo)志著很多大規(guī)模的題目可以在規(guī)定的時間內(nèi)運算完畢并獲得滿意的結(jié)果。
因此,通過并行集群配合Linda,Gaussian 03 計算可以取得很好的性能突破,這使得采用集群作為Gauusian 03 計算的硬件平臺成為一個發(fā)展趨勢。同時,該平臺具有較CC-NUMA 平臺以及小型機平臺更高的性能價格比,這也使得集群技術(shù)成為Gaussian 03 計算的必然趨勢。
2.2. g03 采用Linda 并行和OpenMP 并行的性能差別
為了了解Linda 并行和OpenMP 并行之間的性能差距,我們進行了下面的實
驗:
實驗平臺:
1、2×H4402(運行Linda 并行作業(yè)test415,采用2 顆CPU 并行)
2、1×H4402(運行OpenMP 并行作業(yè)test415,采用2 顆CPU 并行)
運行結(jié)果:
A2.jpg
從表中可以清楚地看到,采用OpenMP 的并行方式的計算題目運算效率更高,當(dāng)然,這需要在硬件層面上解決OpenMP 的問題――即采用多CPU 的高性能節(jié)點機。
2.3. 關(guān)于g03 對內(nèi)存的需求
Gaussian 計算是對內(nèi)存要求非常高的計算,在整個運算過程中有一個參數(shù)(%mem)可以控制使用的內(nèi)存總量,利用這些內(nèi)存可以使得很多計算速度更高,同時將該參數(shù)提高將可能提高整個運算的運算速度。不過該參數(shù)的設(shè)置也不是越大越好,實驗證明,當(dāng)該參數(shù)達到一定程度的時候,運算的性能并不會隨著參數(shù)值的增加而提高。另外對于一些計算,采用64 位系統(tǒng)將可能花費更高的內(nèi)存。
下圖是對test415 的內(nèi)存消耗的描述:
A3.jpg
Test415 內(nèi)存消耗
從圖中可以清楚地看到,test415 計算分為兩個階段(表現(xiàn)在test415 運算題目上,是兩個Link),并且內(nèi)存消耗有所不同,最大可以達到
同時對于同樣的計算問題,系統(tǒng)所使用的內(nèi)存總量是不變的,下面是對于test397,我們采用2CPU 并行和采用4CPU 并行的方式所測得的內(nèi)存消耗:
A4.jpg
從上圖可以確定,Gaussian 03 計算對于相同規(guī)模的問題,其使用的內(nèi)存總量是一定的。因此在配置Gaussian 應(yīng)用系統(tǒng)的時候應(yīng)該充分考慮到這一點,在節(jié)點數(shù)和單節(jié)點內(nèi)存中找到一個最佳的契合點。
2.4. 關(guān)于g03 對系統(tǒng)IO 吞吐能力的需求
對IO 能力的需求主要分為三個方面:
1)對存儲容量的要求
2)對存儲速度的要求
3)對存儲安全性的要求
Gaussian 03 計算通常是在計算的開始階段將一些計算內(nèi)容寫入一個文件中,然后在后面的計算過程中不斷地修改這個文件并最終獲得計算結(jié)果,所以Gaussian 03 計算的時候會在開始階段出現(xiàn)整個運算過程的IO 最高峰,并在后面計算的過程中始終保持較小的IO。下圖是test397 的磁盤占用量:
A1.jpg
Test397 硬盤消耗
Gaussian 03 計算部分算例對于存儲容量有著很高的要求,通常的Gaussian 03計算需要至少
Gaussian 03 計算對系統(tǒng)的IO 能力具有一定的要求,經(jīng)過測試,對于Gaussian計算中對IO 要求較高的一些應(yīng)用來說,其IO 吞吐需求可以達到50Mb/s,這個速度對本地硬盤和本地RAID 以及磁盤陣列都不會構(gòu)成很大的資源緊張,但是對于采用NFS 共享文件系統(tǒng)存取策略的用戶來說,這個速度接近NFS 的數(shù)據(jù)存取帶寬,因此,采用NFS 文件系統(tǒng)作為整個Gaussian 03 計算集群系統(tǒng)的載體將會帶來Gaussian 03 計算的瓶頸。下圖是某一Gaussian 03 計算程序的IO 變化圖:
A2.jpg
某計算空間占用變化過程
我們看到整個計算在一段時間內(nèi)實現(xiàn)寫文件的操作(500 秒左右),實現(xiàn)了
大約25Gb 的文件寫,這樣平均存儲訪問帶寬達到近50Mb/s。
在存儲安全性上,由于Gaussian 計算中間過程的文件并不被用戶使用,所以對存儲的安全性Gaussian 03 計算并沒有太高的要求,只要保證在運算過程中文件系統(tǒng)以及存儲介質(zhì)沒有出現(xiàn)本質(zhì)的故障就可以確保Gaussian 計算的順利進行。當(dāng)然,對于結(jié)果的log 文件需要具有很好的存儲策略以提供給用戶進行結(jié)果分析和顯示。
2.5. 關(guān)于g03 對系統(tǒng)網(wǎng)絡(luò)能力的需求
Gaussian 03 計算程序?qū)ο到y(tǒng)網(wǎng)絡(luò)能力的需求主要體現(xiàn)在兩個方面:
1、 計算通信網(wǎng)絡(luò)的需求。Gaussian 03 應(yīng)用程序采用Linda 并行程序進行并行通信,Linda 并行通信的時候會進行大量的系統(tǒng)通信和同步,這就需要網(wǎng)絡(luò)最好具有更好的帶寬和更低的延遲。目前一些專用網(wǎng)絡(luò)(如Myrinet 和Infiniband)具有更高的系統(tǒng)帶寬和通信延遲,但是Linda 并行程序暫時并不支持這些高性能網(wǎng)絡(luò)。所以Gaussian 并行應(yīng)用通常都采用基于標(biāo)準(zhǔn)TCP/IP 協(xié)議的以太網(wǎng)絡(luò)。當(dāng)然,我們也可以在高速網(wǎng)鏈路上運行TCP/IP 協(xié)議,最大程度地提高整個系統(tǒng)的帶寬和延遲性能。
2、 數(shù)據(jù)通信網(wǎng)絡(luò)的需求。Gausian 03 應(yīng)用通常采用NFS 文件系統(tǒng)實現(xiàn)節(jié)點間的數(shù)據(jù)同步和程序的同步,而NFS 文件系統(tǒng)的性能取決于在數(shù)據(jù)通信鏈路上所采用的網(wǎng)絡(luò)設(shè)備。這就要求數(shù)據(jù)通信網(wǎng)絡(luò)應(yīng)盡量采用全線速、無阻塞的交換設(shè)備。
為了確定網(wǎng)絡(luò)帶寬對Gaussian 03 計算的影響,我們對test415 用2 顆CPU的linda 進行計算,分別比較了千兆網(wǎng)絡(luò)和百兆網(wǎng)絡(luò)的性能,下面是測試結(jié)果:
A3.jpg
可以看到 #p#page_title#e#
2.6. 關(guān)于g03 的應(yīng)用部署問題
g03 應(yīng)用通常不會采用太多的CPU 計算太大規(guī)模的問題,通常情況下32 個CPU 的并行計算的規(guī)模已經(jīng)被認(rèn)為是較大規(guī)模的計算。同時由于該計算需要反復(fù)的驗證過程,所以通常g03 計算采用分布式計算的方式,將多個計算任務(wù)分配到集群系統(tǒng)或者高性能計算機系統(tǒng)中,這個時候,針對Gaussian 03 計算的方案中就必須體現(xiàn)對系統(tǒng)的應(yīng)用部署的優(yōu)化。解決這個問題的關(guān)鍵點主要有如下幾點:
1、您的應(yīng)用最多希望使用多少CPU?
假設(shè)您的應(yīng)用最多希望使用32 顆CPU,則在配置集群系統(tǒng)方案的時候要提供至少32 顆CPU 同時計算的能力,同時為了滿足冗余的需求,最好配置一倍左右的CPU 數(shù)。
2、您的大規(guī)模應(yīng)用和小規(guī)模應(yīng)用的計算頻率比是多少?
同樣假設(shè)您最多希望使用32 顆CPU,但是使用這么大規(guī)模進行計算的情況非常少,大部分的應(yīng)用都是在8 顆CPU 以內(nèi)進行的,則在部署系統(tǒng)的時候建議將這些系統(tǒng)按照8CPU 一組進行部署,并提供多組整合的能力,以確保大計算任務(wù)的順利完成。
3、您的計算問題是否需要大量的IO 處理?
這個問題同樣很關(guān)鍵,因為如果采用每個計算任務(wù)都使用單獨的存儲系統(tǒng)方案得話,通常造價較高,性價比不好,但是如果整個系統(tǒng)僅有一個存儲入口,則在大量IO 頻繁計算需求下,會造成整個系統(tǒng)的不可用。因此您的計算是否大多都是IO 量大的應(yīng)用和是否都是CPU 量大的應(yīng)用將決定整個系統(tǒng)的IO 節(jié)點數(shù)量和計算節(jié)點數(shù)量的比值。
4、您的系統(tǒng)是否具有良好的作業(yè)管理能力?
利用成熟的作業(yè)管理系統(tǒng)可以實現(xiàn)對計算資源的充分調(diào)度,極大地降低管理員的管理成本,從而提高整個系統(tǒng)可用性。
2.7. 操作系統(tǒng)和操作系統(tǒng)內(nèi)核對g03 計算的影響
通常的共享內(nèi)存服務(wù)器系統(tǒng)主要有兩種架構(gòu),一種是基于NUMA 結(jié)構(gòu)的內(nèi)存訪問架構(gòu),另外一種是基于SMP 的內(nèi)存訪問架構(gòu),兩種架構(gòu)的最主要的區(qū)別是在訪問統(tǒng)一的內(nèi)存空間的時候,NUMA 架構(gòu)CPU 會優(yōu)先訪問離自己最近的內(nèi)存,而SMP 架構(gòu)的CPU 訪問所有內(nèi)存的速度是一樣的。顯然,在這樣的架構(gòu)條件下,采用NUMA 結(jié)構(gòu)的CPU 可能會帶來系統(tǒng)性能的提高。但是實驗證明對于Gaussian 03 軟件來說,這些內(nèi)存訪問帶來系統(tǒng)性能的提高并不大,如下是對test415 用1 顆CPU 計算所得到的結(jié)果:
A4.jpg
這其實和Gaussian 計算的特點有關(guān),Gaussian 計算采用Link 計算的方式,內(nèi)部有非常多的子運算程序,用來完成一個整體運算的不同步驟。而在這些子應(yīng)用程序進行切換的時候,我們發(fā)現(xiàn)其切換的CPU 是非常隨機的,有的時候采用CPU0,有的時候采用CPU1,或者切換的CPU2,CPU3,等等。所以在計算的時候,特別是采用多線程進行計算的時候,CPU 無法確保會訪問離自己最近的內(nèi)存,這也是操作系統(tǒng)和軟件層共同作用的結(jié)果。不過上面的測試結(jié)論至少證明,采用64 位系統(tǒng)下的64 位Gaussian 03 軟件的應(yīng)用性能可以超過32 位系統(tǒng)下的32 位Gaussian 03 應(yīng)用性能。
2.8. 小結(jié)
經(jīng)過前面的分析,我們認(rèn)為構(gòu)建一個計算化學(xué)計算硬件平臺需要注意以下幾點:
1、 Gaussian 計算可以通過并行計算機實現(xiàn)性能的提高。
2、 Gaussian 計算對計算能力的需求是很大的,越多的CPU 將提供越強大的計算能力
3、 Gaussian 計算對內(nèi)存的需求很大,通常一個CPU 至少要配置
4、 Gaussian 計算對IO 的需求是根據(jù)應(yīng)用的不同而不同的,并且如果采用多任務(wù)計算的分配方法,則建議在IO 層面進行全面的優(yōu)化
5、 Gaussian 計算的并行部分采用單節(jié)點內(nèi)并行較多節(jié)點內(nèi)并行效率更高,并且Linda 軟件需要額外的付費,所以對于小規(guī)模的應(yīng)用應(yīng)使其盡量在一個節(jié)點內(nèi)完成。
6、 Gaussian 計算無法使用高速專用網(wǎng),在高速專用網(wǎng)上運行 #p#page_title#e#TCP/IP協(xié)議是一個折中的方案。
7、 Gaussian 計算64 位程序會獲得更高的性能(對于有些應(yīng)用),同時64 位程序可以突破Gaussian 應(yīng)用的硬盤使用限制,為更大規(guī)模的計算做好準(zhǔn)備。