GAMESS-US 2013-May、2014-Dec、2016-Aug版編譯方法
GAMESS-US 2013-May、2014-Dec、2016-Aug版編譯方法
文/Sobereva @北京科音
First release: 2013-Jul-3 Last update: 2021-Apr-6
不同版本的GAMESS-US的編譯方法總有一些不同。本文介紹GAMESS-US 2013-May和2014-Dec版編譯方法。不同版本的GAMESS-US的編譯方法總有一些不同。本文介紹GAMESS-US 2013-May和2014-Dec版編譯方法。2016-Aug版編譯方法和本文一樣,只不過下面輸入skip那一步改為輸入proceed就行了。
GAMESS-US 2011-Aug-11版編譯方法見http://www.shanxitv.org/105
GAMESS-US 2009 R3版編譯方法見http://www.shanxitv.org/50
2021-Apr-6注:本文的編譯方法對于CentOS 8結合Intel OneAPI 2021版編譯GAMESS-US 2020(R2)版經測試依然使用。但是執行./config生成配置文件的對話有所變化,需根據提示隨機應變。讓你輸入mkl版本號的時候應當輸入12而不要輸入當前實際版本號,否則在執行./lked gamess 00的時候無法連接MKL。此外,第4節在switch (`hostname`)后面插入額外內容的那一步不再需要。
編譯環境:
編譯器和數學庫:ifort 12.1.0+MKL。均安裝在默認路徑。編譯器的獲取方法可參考《Amber11+AmberTools1.5及CUDA版安裝方法,以及Amber12安裝方法》(http://www.shanxitv.org/103)
系統:RHEL6-U1 64bit(Vmware7.1.2虛擬機)
用戶:root
計算姬:Toshiba X500 (i7-2630QM)。程序將安裝在/sob/gamess下。
1. 生成配置文件
將壓縮包解壓至/sob/gamess,并進入此目錄
執行./config,依次輸入([enter]代表直接敲回車跳過提示)
[enter]
linux64
[enter] //使用默認路徑
[enter] //使用默認路徑
[enter] //使用默認版本號00
ifort
12
[enter] //忽略ifort 12.0有bug的提示
[enter]
mkl
/opt/intel/mkl
skip
[enter]
[enter]
sockets
no //不嘗試LIBCCHEM,這是用來通過nVidia的GPU加速HF和MP2任務用的,還很不成熟。
此時配置文件install.info在當前目錄下生成了
2. 編譯ddi
cd ddi
./compddi
把得到的ddikick.x移動到上一級目錄,即/sob/gamess下。
3. 編譯代碼并連接為可執行文件
cd ..
./compall
經過十幾分鐘的編譯,objects目錄下生成了近300個文件。并且/sob/gamess下產生了gamess.00.x可執行文件。(如果沒產生,手動執行./lked gamess 00)
注:如果你的CPU核心超過32個,應當將compddi里第一次的set MAXCPUS=后面的值改為當前的CPU核心數之后再執行compddi。
4. 配置運行環境
建立/sob/gamess/scr文件夾
對/sob/gamess/rungms文件作如下修改:
把set TARGET=sockets下面的三行改為
set SCR=/sob/gamess/scr
set USERSCR=/sob/gamess/scr
set GMSPATH=/sob/gamess
把這里的NCPUS后面的數值改成想默認用的CPU核心數:if (null$NCPUS == null) set NCPUS=1
為了能單機多核計算,在switch (`hostname`)這行下面插入以下內容。其中xxx是本機名,即運行hostname命令所顯示的內容。
case xxx:
set NNODES=1
set HOSTLIST=(`hostname`:cpus=$NCPUS)
breaksw
PS:建議在rungms文件一開頭的#!/bin/csh部分下方加上rm -f /sob/gamess/scr/*,使得每次調用rungms時都自動清空臨時目錄。
之后就可以用比如./rungms test.inp來運行了,并行運算用的核數就是上面NCPUS設的。如果想指定用比如3個核心并行運行,則用./rungms test.inp 00 3。
5. 測試
把/sob/gamess/runall文件里第一處si.msg.chem.iastate.edu改為本機名。把./rungms exam$NUM $VERNO 1里面的1改為并行的核數。
運行./runall 00進行測試,一開始按回車。共47個測試任務將依次執行,產生的log文件產生在/sob/gamess下。
將所有產生的log文件拷貝到/sob/gamess/tests/standard目錄下,進入此目錄后運行./checktst,此腳本會將計算結果與標準結果進行對照。筆者機子上47個測試任務的結果全部檢驗通過。
注意如果之前已經用runall做過了測試,那么應當先把/sob/gamess/scr目錄下清空。