Gaussian 16をソースコードからインストールするためにはPGIコンパイラが必要です。PGIコンパイラの開発は20.4で終了し、現在NVIDIA HPC SDKとして開発が継続されているようです。以前のPGIコンパイラは有償でしたが、現在はライセンスに同意すれば無償で利用できます。
NVIDIA HPC SDKの入手方法
NVIDIA HPC SDKのページにアクセスし、I accept the license agreementにチェックを入れると最新のPGIコンパイラを含むNVIDIA HPC SDKをダウンロードすることができます。CentOSの場合はLinux x86_64 CentOS/RHEL RPMのところをクリックするとyumでダウンロードするためのコマンドが現れます。Ubuntuの人はLinux x86_64 DEBのところをクリックしてコマンドを表示させましょう。
……ですが、Gaussian 16 Rev.C02の場合はコンパイル可能なバージョンが決まっていて、直近のバージョンでは21.3のみとなっています(執筆時点では22.11が最新です)。したがって、そのバージョンを指定してダウンロード&インストールする必要があります。
CentOS 7の場合は以下のようなコマンドでした。
$ sudo yum-config-manager --add-repo https://developer.download.nvidia.com/hpc-sdk/rhel/nvhpc.repo
$ sudo yum install --nogpgcheck -y nvhpc-21.3
......
......
Running transaction
Installing : nvhpc-21-11-21.11-1.x86_64 1/4
Installing : nvhpc-2021-21.11-1.x86_64 2/4
Installing : nvhpc-21-3-21.3-1.x86_64 3/4
Installing : nvhpc-21.3-1.x86_64 4/4
Verifying : nvhpc-21.3-1.x86_64 1/4
Verifying : nvhpc-2021-21.11-1.x86_64 2/4
Verifying : nvhpc-21-11-21.11-1.x86_64 3/4
Verifying : nvhpc-21-3-21.3-1.x86_64 4/4
Installed:
nvhpc.x86_64 0:21.3-1
Dependency Installed:
nvhpc-2021.x86_64 0:21.11-1 nvhpc-21-11.x86_64 0:21.11-1 nvhpc-21-3.x86_64 0:21.3-1
Complete!
インストールが終わったら、tcshを起動して環境変数の設定に進みます。tcshをインストールしていない場合はyum -y install tcsh
(CentOS)なりapt -y install tcsh
(Ubuntu)なりで入れておいてください。
tcsh #tcshシェルの起動
# 環境変数の設定
setenv PGI /opt/nvidia/hpc_sdk
setenv PATH $PGI/Linux_x86_64/21.3/compilers/bin:$PATH
setenv MANPATH ${MANPATH}:$PGI/Linux_x86_64/21.3/compilers/man
こののち、which pgc++
とでも打ってみて、コンパイラへのPATHが通っていることを確認します。
$ which pgc++
/opt/nvidia/hpc_sdk/Linux_x86_64/21.3/compilers/bin/pgc++`
Gaussian 16のソースコードからのビルド&インストール
PGIコンパイラの設定とPATHを確認したら、続いてソースコードからのビルド&インストールを行います。以下ではGaussian 16 rev C.02を/home/apps/g16.C02
にインストールすると仮定します。
注意点としてはtcsh
を使って環境変数を設定していく必要があるということ、$g16root
のユーザー&グループ設定を変えておくこと、中身のパーミッション設定は変更しないことの3つです。
#### Installation of Gaussian 16 rev C.02 ####
mkdir -p /home/apps/g16.C02
cd /home/apps/g16.C02
# ここに解凍したGaussian 16のg16ディレクトリを置く
# tar jxvf wkssrc.tbz
# tcshの起動
tcsh
# PGI compilerの設定
setenv PGI /opt/nvidia/hpc_sdk
setenv PATH $PGI/Linux_x86_64/21.3/compilers/bin:$PATH
setenv MANPATH ${MANPATH}:$PGI/Linux_x86_64/21.3/compilers/man
# which pgc++でPATHが通っていることを確認する
# 環境変数g16rootの設定
# g16ディレクトリが置かれている場所を指定する
setenv g16root /home/apps/g16.C02
cd $g16root
# The $g16root directory must be set to your username and usergroup
# DON'T CHANGE the permissions (all files must be set to 750 or 770.)
chown -R root:g16 $g16root
cd $g16root/g16
./bsd/install
# > install completed successfully と表示されることを確認する
# これはまだg16のインストールの本丸ではない
# g16.loginの設定読み込み。blasやPYTHONPATHのenvironment variable
source $g16root/g16/bsd/g16.login
ここまでが準備段階です。次のコマンドでGaussian 16のコンパイルとインストールを行いますが、先に実際に計算させる計算ノードのCPUとGPUのアーキテクチャを知っておく必要があります。
まずGPUアーキテクチャの一覧ですが、お使いのNVIDIA GPUに応じてpascal
, volta
, ampere
を選ぶことができます。ただたぶんturing
は選べないみたいです。対応表は https://qiita.com/k_ikasumipowder/items/1142dadba01b42ac6012 の記事などを呼んでください。RTX3090やA100はampere
になります。
次に利用可能なCPUアーキテクチャの一覧は以下の通りです。CPUの種類に合わせて適切なものを選んでください。
Select target processor
px Generic Linux/Windows x86_64 Processor.
bulldozer AMD Bulldozer processor
piledriver AMD Piledriver processor
zen AMD Zen architecture (Epyc, Ryzen)
zen2 AMD Zen 2 architecture (Ryzen 2)
zen3 AMD Zen 3 architecture (Ryzen 3)
sandybridge Intel SandyBridge processor
haswell Intel Haswell processor
skylake Intel Skylake Xeon processor
host Link native version of HPC SDK cpu math library
native Alias for -tp host
例えば計算マシンのCPUがRyzen 9 5900Xはzen3アーキテクチャに該当しますので、zen3
となります。
そしてこのことを踏まえて以下のコマンドでコンパイルを開始します。
$ bsd/bldg16 <buildoption> <GPU arch> <CPU arch> | & tee make.log
<buildoption>
のところは通常all
を指定します。<GPU arch>
と<CPU arch>
は先程メモしておいたアーキテクチャに応じて文字を入力します。ampere
とzen3
ならば以下のようになります。
bsd/bldg16 all ampere zen3 | & tee make.log # may take 45-90 minutes or more
# Check the end of make.log for successful completion. Confirm that the executables have been built. There should be 85 files:
ls *.exe | wc -l # make sure 85 files
これを行うとおよそ45分以上はインストールに時間がかかるはずです。もしすぐに終了しているようでしたらきっとPGIコンパイラに設定が通っていなかったりsourceを忘れているせいだと思います。その他わからなかったらmake.log
のログを参照してエラー落ちしているかどうか確認してみましょう。
インストールが無事終了していれば、g16ディレクトリ上に85個の.exe
ファイルが生成されているはずです。最後のコマンドを入れてみて85個あるかどうか確認しましょう。これで完了です。
コンパイル後はg16
ディレクトリをまるごと移動させても問題ないと思います。またGPU付きでコンパイルしてもCPUオンリーで計算させることは可能です。
Note: <buildoption>
のところでは他にnolink
, utilonly
, linkrest
, utilrest
を選ぶことができるようです。