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