上海繹模信息科技有限公司
eMolTech,計算科學(xué)的領(lǐng)航者
新聞通知
Gaussian 16 A.03 Release Notes
-
新功能
新模擬方法
◆ TD-DFT 激發(fā)態(tài)計算支持解析頻率(frequencies, IR及Raman)、過渡態(tài)優(yōu)化(TS)及內(nèi)稟反應(yīng)坐標(biāo)計算(IRC)。
◆ EOMCC 耦合簇運動方程(EOM-CC)方法支持結(jié)構(gòu)優(yōu)化。
◆ VCD及ROA光譜支持非諧振計算,請參考 Freq=Anharmonic。
◆ 支持電子振動光譜計算,請參考 Freq=FCHT 及相關(guān)選項。
◆ 支持共振拉曼光譜計算,請參考 Freq=ReadFCHT。
◆ 新密度泛函方法: M08 family, MN15, MN15L。
◆ 新雙雜化泛函方法:DSDPBEP86, PBE0DH及PBEQIDH。
◆ PM7 半經(jīng)驗方法。
◆ Adamo激發(fā)態(tài)電荷轉(zhuǎn)移分析,請參考 Pop=DCT。
◆ Caricato耦合簇運動方程(EOM-CC)溶劑化迭代模型,請參考 SCRF=PTED。
◆ 廣義內(nèi)坐標(biāo):可以任意定義內(nèi)坐標(biāo)用于限制性優(yōu)化或者其它目的,請參考 Geom=GIC 及GIC Info。
性能提升
◆ Hartree-Fock及DFT計算在Linux系統(tǒng)下支持NVIDIA K40及K80 GPUs. 具體請參考 Using GPUs。
◆ 多核芯(數(shù)量較多)處理器的并行效率已經(jīng)得到提升。對于多CPUs及集群如何優(yōu)化性能請參考 Parallel Performance。
◆ Gaussian 16使用優(yōu)化的內(nèi)存算法來避免CCSD迭代時的磁盤讀寫。
◆ GEDIIS優(yōu)化算法效率已得到提升。
◆ CASSCF 方法活性空間≥ (10,10) 的計算性能得到提升并可以擴(kuò)展至16個軌道(取決于分子類型)。
◆ W1 組合方法的核相關(guān)能(core correlation energies)計算速度得到巨大提升。
◆ Gaussian 16 對于復(fù)合電子傳播(composite electron propagator, CEP, DiazTinoco16)方法中的對角化、二階自能量近似(second-order self-energy approximation, D2)的計算性能得到巨大提升。請參考 EPT.
用法提升
◆ 提供其它軟件的接口工具,包括匯編語言(Fortran和C)以及解釋語言(Python和Perl)。具體細(xì)節(jié)請參考 Interfacing to Gaussian 16。
◆ 輸入文件Link 0 (%)中以及/或者 Default.Route 文件中的相關(guān)參數(shù)目前也能夠通過命令行形式或者環(huán)境變量指定。具體細(xì)節(jié)請參考 Link 0 Equivalences。
◆ 優(yōu)化過程中可以指定每N步重新計算力常數(shù)。請參考Opt=Recalc。
-
與Gaussian 09的區(qū)別
默認(rèn)參數(shù)
下列默認(rèn)參數(shù)在Gaussian 16中與Gaussian 09不同:
◆ 積分精度為10-12 而不是Gaussian 09中的10-10。
◆ DFT 默認(rèn)格點為 UltraFine 而不是 G09中的FineGrid;CPHF默認(rèn)格點為 SG1 而不是 CoarseGrid。具體細(xì)節(jié)請參考Integral。
◆ SCRF 默認(rèn)為IEFPCM的對稱形式(symmetric form of IEFPCM) [Lipparini10] (Gaussian 09中沒有此功能)而不是非對稱形式。
◆ 物理常數(shù)使用2010版而不是Gaussian 09中的2006版。
前兩項變化是為了保證一系列新方法的精度(如TD-DFT頻率, 非諧振ROA),因此使用 Integral=(UltraFine,Acc2E=12) 作為默認(rèn)選項。使用這些設(shè)置一般能提高數(shù)值積分的可靠性,比如溶劑化模型下的DFT優(yōu)化。相比于Gaussian 09的默認(rèn)值Integral=(FineGrid,Acc2E=10),此設(shè)置對CPU的需求稍有升高。
G09Defaults 關(guān)鍵詞能夠把上述默認(rèn)值重新定義為Gaussian 09 默認(rèn)值。它提供了與此前計算的兼容性,但對于新的計算我們推薦使用新的默認(rèn)值。
默認(rèn)內(nèi)存值
Gaussian 16 默認(rèn)內(nèi)存為 %Mem=100MW (800MB)。使用多核計算大分子體系時使用更大的內(nèi)存更為適合。具體細(xì)節(jié)請參考 Parallel Jobs。
TD-DFT頻率
TDDFT 頻率在計算二階導(dǎo)數(shù)時默認(rèn)使用解析二階導(dǎo)數(shù),這比數(shù)值導(dǎo)數(shù)快很多(數(shù)值導(dǎo)數(shù)在Gaussian 09中是唯一選項)。
-
GPUs的使用
Gaussian 16 在Linux系統(tǒng)下支持 NVIDIA K40及K80 GPUs。較早的GPUs不具備計算能力或者足夠的內(nèi)存來運行Gaussian 16。Gaussian 16目前還不支持Tesla-Pascal系列顯卡。
作業(yè)內(nèi)存分配
GPUs在計算時需要分配足夠的內(nèi)存,這比使用CPUs計算時更重要,因為高效使用GUPs時會有大量任務(wù)同時運行。K40和K80系列顯卡擁有高達(dá)16 GB內(nèi)存,一般情況下,大部分內(nèi)存都應(yīng)當(dāng)用于Gaussian程序。比如每個GPU有12GB內(nèi)存時,給Gaussian分配8-9 GB內(nèi)存效果比較好;同理,每個GPU有16GB內(nèi)存時,給Gaussian分配11-12 GB內(nèi)存效果比較好。此外,每個CPU線程至少需要分配相同的內(nèi)存用于控制GPU。
關(guān)于CPUs控制
當(dāng)使用GUPs時,每個GPU必須由一個特定的CPU控制。該CPU應(yīng)該在物理架構(gòu)上更靠近所控制的GPU,并且GPUs不能共享CPUs控制。另外需要注意,用于控制GPU的CPUs 不能再用于做計算節(jié)點。
在裝有GUPs的系統(tǒng)上查看硬件架構(gòu)可以使用 nvidia-dmi 功能。例如,下面演示的是雙芯片16核Haswell CPU及三芯片K80板(每個板擁有2個GPUs)的架構(gòu):
GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 CPU Affinity
GPU0 X PIX SOC SOCSOCSOCSOCSOC0-15 第一塊芯片上的核
GPU1 PIX X SOC SOCSOCSOCSOCSOC 0-15
GPU2 SOC SOC X PIX PHB PHBPHBPHB16-31 第二塊芯片上的核
GPU3 SOCSOC PIX X PHB PHBPHBPHB 16-31
GPU4 SOCSOC PHB PHB X PIX PXB PXB 16-31
GPU5 SOCSOC PHB PHB PIX X PXB PXB 16-31
GPU6 SOCSOC PHB PHB PXB PXB X PIX 16-31
GPU7 SOCSOC PHB PHB PXB PXB PIX X 16-31
示例中最重要的部分是CPU親密度(CPU affinity)。此例中顯示 GPUs 0和1 (第一塊K80卡) 與第一塊CPUs芯片相連,而GPUs 2-7 (第二塊K80卡) 與第二塊CPUs芯片相連。
為Gaussian 作業(yè)指定GPUs及CPUs控制
用于計算的GPUs及用于控制的CPUs可通過Link 0 部分使用%GPUCPU 命令指定。此命令有一個參數(shù):
%GPUCPU=gpu-list=control-cpus
其中 gpu-list 為GPU列表(用逗號隔開),也可以是數(shù)值范圍(例如, 0-4,6);control-cpus 為相似格式的控制CPU列表,這兩列的內(nèi)容是GPU及控制CPU。
例如, 在配有6 GPUs的32核系統(tǒng)里,給一個作業(yè)分配所有CPUs (26 CPUs用于做部分計算) 及6CPUs用于控制GPUs可以在Link 0 部分使用如下命令:
%CPU=0-31 控制CPUs也在此列表中。
%GPUCPU=0,1,2,3,4,5=0,1,16,17,18,19
上述命令定義 CPUs 0-31 將用于此作業(yè)(盡管并不是所有CPUs都用于計算)。此作業(yè)將使用GPUs 0-5,并且CPU 0控制GPU0,CPU 1控制GPU1,CPU 16控制GPU2,CPU 17控制GPU3等等。注意控制CPUs也包含在%CPU列表中。
在上例中, GPU及CPU列中可以表述的更加簡潔:
%CPU=0-31
%GPUCPU=0-5=0-1,16-19
一般情況下我們都使用連續(xù)編號的核,但在一些特殊情況下并非如此。例如,假設(shè)在同一臺機(jī)器上已經(jīng)有一個作業(yè)占用了6 CPUs,使用的是%CPU=16-21。那么,如果想要使用其它26 CPUs 并且其中6個用于控制GPUs,可以使用如下定義:
%CPU=0-15,22-31 &nnbsp;
%GPUCPU=0-5=0-1,22-25
這個作業(yè)將會使用26個核,其中20個核用于計算,6個核用于控制GPUs (分別為CPUs 0, 1, 22, 23, 24, 25)。
GPUs及其性能
在對大分子體系進(jìn)行DFT能量、梯度及頻率(適用于基態(tài)及激發(fā)態(tài))計算時,GPUs性能才有較好體現(xiàn)。小分子體系計算時并不能體現(xiàn)GPUs性能。此外,在后自洽場(post-SCF)計算中(例如MP2或CCSD),使用GPUs效果并不明顯。
單個GPU計算速度比單個CPU快許多倍。但如今的機(jī)器往往CPUs數(shù)目遠(yuǎn)超過GPUs,因此只有使用所有的CPUs及GPUs才能獲得最好的性能。
在某些情況下,GUPs預(yù)期加速效果會受到抑制,因為Gaussian 16將會使用到更多的CPUs。例如,假設(shè)GPU計算速度比CPU快5倍,那么使用GPU的計算速度相比于CPU將會是5倍。但是在一臺配備32CPUs及8GPUs的大型服務(wù)器下使用GPUs的預(yù)期加速效果卻是2倍:
Without GPUs: 32*1 = 32
With GPUs: (24*1) + (8*5) = 64 注意控制CPU并沒有參與計算
Speedup: 64/32 = 2所以你必須認(rèn)真考慮你的服務(wù)器配置及環(huán)境來決定該如何使用CPUs及GPUs
集群下的GPUs
支持集群中節(jié)點上的GPUs。因為 %CPU and %GPUCPU 只是定義了每個節(jié)點中的情況,因此要求每個節(jié)點有相同的配置,不過一般情況下集群中的節(jié)點配置都是相同的,所以通常這不是問題。
-
并行性能
共享內(nèi)存并行(Shared-memory parallelism)
內(nèi)存分配。大分子體系使用大基組計算時,分配更多的內(nèi)存計算速度將更快。對于50個或者更多原子體系及/或500個或更多基函數(shù)的體系建議每個核分配4 GB內(nèi)存。freqmem 功能可以估計基態(tài)及激發(fā)態(tài)頻率計算中單個線程所需要的內(nèi)存大小。所需內(nèi)存要按照使用的核數(shù)遞增,比如單核需要4GB,則8CPUs則需要32GB。當(dāng)然,有些特殊硬件在內(nèi)存大小上受到限制,但是內(nèi)存需求隨著核數(shù)目的增長而線性增加是理想的目標(biāo)。值得注意的是,在內(nèi)存固定不變的情況下,隨著核數(shù)目增加(較多核情況下)計算性能無法提高。
對于大體系頻率計算及大體系(相對而言)CCSD和EOM-CCSD能量計算,建議有足夠的內(nèi)存用來緩存大的磁盤文件。因此,Gaussian作業(yè)建議使用系統(tǒng)總內(nèi)存的50-70%。例如,在一臺配有128 GB內(nèi)存的服務(wù)器上,當(dāng)使用所有CPUs時,一般指定64-80 GB,剩下的內(nèi)存則用于系統(tǒng)本身的硬盤緩存。
綁定CPUs線程。當(dāng)線程從一個CPU轉(zhuǎn)到另一個CPU時,會造成緩存無效或者引起其它問題,因此計算效率會明顯下降。在大多數(shù)服務(wù)器上,Gaussian 能夠把線程綁定到特定的CPUs上,特別在使用大量核時,這是推薦模式。Link 0部分的%CPU明確定義了所使用的CPUs數(shù)目,因此在一臺8核的服務(wù)器上,設(shè)定%CPU=0?7 比 %NProc=8更好,因為前者把第一個線程綁定到CPU 0上,下一個線程綁定到CPU 1,等等。
在一些老Intel處理器上(Nehalem及之前版本),因其沒有足夠的內(nèi)存帶寬而無法讓所有的CPUs工作,所以推薦使用一半CPUs并分配原來兩倍大小的內(nèi)存。例如,在一臺四芯片12核(CPUs 0-11 位于第一個芯片;12-23 位于第二個芯片,等等)和128GB內(nèi)存的服務(wù)器上,推薦使用24核(每個芯片使用6核)并為每個核指定72 GB/24 procs = 3 GB內(nèi)存,而不是使用全部48核(每個核只有1.5GB內(nèi)存)。輸入文件如下:
%Mem=72GB
%CPU=0-47/2
此處 /2 意味著將會間隔使用核芯,比如cores 0, 2, 4, 6, 8及10 (芯片0), 12, 14, 16, 18, 20及22 (芯片1),等等。
新的Intel處理器 (Haswell及此后版本)因為內(nèi)存帶寬有明顯改進(jìn),因此使用芯片上所有核進(jìn)行計算時效果較好。
只要有足夠的內(nèi)存以及每個線程都綁定到特定核時,使用64核甚至更多核計算時效率依然很高。
關(guān)閉超線程。超線程對于Gaussian無效,因為它把同一個物理CPU的資源(比如內(nèi)存帶寬)分割給不同的線程。如果超線程無法關(guān)閉,Gaussian作業(yè)應(yīng)該在每個物理CPU上只使用一個超線程。對于Linux系統(tǒng),不同核的超線程是編組在一起的,比如一臺兩芯片(8核,3路超線程)的服務(wù)器,“CPUs” 0-7 為chip 0上的8核, 8-15為chip 1上的8核,16-23 為chip 0 上8核的第二個線程,等等。因此Gaussian作業(yè)建議指定%CPU=0?15。
集群并行(Linda)
適用范圍。Hartree-Fock及DFT能量、梯度、頻率計算以及MP2能量和梯度計算能夠在集群上有效并行,而MP2 頻率、CCSD及EOM-CCSD能量和優(yōu)化只支持SMP并行(單節(jié)點)。對于數(shù)值導(dǎo)數(shù)(Numerical derivatives),比如DFT非諧振頻率和CCSD 頻率,支持Linda并行計算。
與SMP組合并行。共享式并行及集群并行能夠進(jìn)行組合。一般來說集群中的每個節(jié)點都支持所有CPUs共享內(nèi)存并行。注意 %CPU 及 %Mem 適用于集群中的每個節(jié)點。因此,如果一臺服務(wù)器有3個節(jié)點,名字為apple, banana 及cherry,每個節(jié)點有兩個芯片8核,此時可指定:
%Mem=64GB
%CPU=0-15
%LindaWorkers=apple,banana,cherry
# B3LYP/6-311+G(2d,p) Freq …
這樣每個節(jié)點將會運行16個線程,在3個節(jié)點上每個線程都綁定到一個核上,并且48個線程中每個線程將獲得4GB內(nèi)存。
對于一些特殊情況(數(shù)值微分),比如 Freq=Anharm, CCSD Freq,等等—將有另外一個節(jié)點用于收集結(jié)果。因此,這些計算會在管理節(jié)點(Gaussian 16啟動的節(jié)點)同時運行兩個任務(wù),例如計算非諧振頻率,可指定:
%Mem=64GB
%CPU=0-15
%LindaWorkers=apple:2,banana,cherry
# B3LYP/6-311+G(2d,p) Freq=Anharm …
此處假設(shè)Gaussian 16在 apple節(jié)點啟動,這里將在apple節(jié)點啟動2個任務(wù),一個僅用于收集結(jié)果,apple節(jié)點其它的核和banana及cherry將用于計算。
-
CCSD性能
CCSD, CCSD(T)及EOM-CCSD計算內(nèi)存需求
如果有足夠內(nèi)存來存儲振幅(amplitudes)及矢量積(product vectors),上述計算則可以使用內(nèi)存來避免讀寫錯誤而使計算變得更加高效。如果體系有 NO 個活性占據(jù)軌道(NOA in the output)及NV 個空軌道(NVB in the output),那么所需內(nèi)存則為 9NO2NV2 字節(jié),這與所使用的核數(shù)無關(guān)。
-
Link 0中的等價定義
用于控制Gaussian 16運行的許多選項可以使用4種方法指定,其優(yōu)先級從高到低如下所示:
1. Link 0 輸入 (%-lines):這是一個常用方法,它可以用于控制單個作業(yè)及并且它是多步計算中控制其中一個特定作業(yè)的唯一方式。例如:
%CPU=1,2,3,4
2. 命令行:當(dāng)我們想使用不常見方式運行程序的時候此方法比較有用。例如:
g16 -c="1,2,3,4" …
3. 環(huán)境變量:此方法對于標(biāo)準(zhǔn)腳本,例如生成和提交作業(yè)到隊列系統(tǒng)時非常有用。例如:
export GAUSS_CDEF="1,2,3,4"
4. Default.Route文件:此方法對于我們想改變程序默認(rèn)參數(shù)式非常有用。例如:
-C- 1,2,3,4
程序會首先檢查當(dāng)前目錄下的Default.Route文件,然后 檢查Gausssian 16運行程序所在目錄,也就是環(huán)境變量GAUSS_EXEDIR所指定的目錄,此目錄一般為 $g16root/g16。
下表列出Link 0中最重要的命令以及他們的等價定義:
Default.Route
Link 0
Option
Env. Var.
Description
Gaussian 16 execution defaults
-R-
-r
GAUSS_RDEF
Route section keyword list.
-M-
%Mem
-m
GAUSS_MDEF
Memory amount for Gaussian jobs.
-C-
%CPU
-c
GAUSS_CDEF
Processor/core list for multiprocessor parallel jobs.
-G-
%GPUCPU
-g
GAUSS_GDEF
GPUs=Cores list for GPU parallel jobs.
-S-
%UseSSH
-s
GAUSS_SDEF
Program to start workers for network parallel jobs: rsh or ssh.
-W-
%LindaWorkers
-w
GAUSS_WDEF
List of hostnames for network parallel jobs.
-P-
%NProcShared
-p
GAUSS_PDEF
#processors/cores for multiprocessor parallel jobs. Deprecated; use -C-.
-L-
%NProcLinda
-l
GAUSS_LDEF
#nodes for network parallel jobs. Deprecated; use -W-.
Archive entry data
-H-
GAUSS_HDEF
Computer hostname.
-O-
GAUSS_ODEF
Organization (site) name.
Utility program defaults
-F-
GAUSS_FDEF
Options for the formchk utility.
-U-
GAUSS_UDEF
Memory amount for utilities.
Parameters for scripts and external programs
# section
-x
GAUSS_XDEF
Complete route for the job (route not read from input file).
%Chk
-y
GAUSS_YDEF
Checkpoint file
%RWF
-z
GAUSS_ZDEF
Read-write file.
注意對于命令行與及環(huán)境變量的明確數(shù)值一般需要用引號標(biāo)注,以避免系統(tǒng)shell改變這些參數(shù)。例如:g16 -c="1,2,3,4" …