はじめに
MOLGWのohtaka上でのビルドが成功したので、簡単な記録を残しておきます。
MOLGWはFabien Brunevalを中心に開発されている分子系のDFT計算に加えGW計算などが行える第一原理計算プログラムです。RPAやMP2などのいくつかの高精度な全エネルギー計算も可能となっています。電子状態計算手法を中心に開発が進められています。
構造最適化は可能なようですが、自分自身では試していません。
ビルドに必要なライブラリ:
- libxc
- libcint
libintも使用可能ですが、ビルドに困難を伴う可能性が高いため推奨されていないようです。
ライブラリのインストール
ISSPのohtakaでは以下のようにMOLGWをビルド/インストールしました。
libcint
ソースディレクトリでビルド用ディレクトリを作成
mkdir build; cd buld
以下を実行します。
cmake -DCMAKE_INSTALL_PREFIX:PATH=${HOME}/local -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DWITH_RANGE_COULOMB=1 -DBUILD_SHARED_LIBS=0 -DPYPZPX=1 ..
デフォルトではgcc、g++が使用されるためiccとicpcを使用したい場合には上記のように指定します。
makeの実行
make
makeで問題がなければ、make installを実行します。
make install
libxcのインストール
libxcのインストールに関しては以前GPAWのビルド/インストールの記事に記載したので省略します。
MOLGWのインストール
- バージョン:3.4 (molgw-3.4)
ソースディレクトリでconfig
以下にあるMakefileのインクルードファイルを自分の環境に合わせて適当に選びmy_machine.arch
を以下のように編集します。
(Intel MPIを使用する場合の例)
OPENMP=-qopenmp -parallel
PYTHON=python3
# Parallel MPI SCALAPACK compilation
FC=mpiifort
CPPFLAGS=-DHAVE_SCALAPACK -DHAVE_MKL
# maybe use icx instead icpc if using a recent version of Intel OneAPI
CXX=icpc -std=c++11
FCFLAGS= -fpp -O3 -xhost -qopt-matmul
CXXFLAGS= -O3 -xhost
SCALAPACK= -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core
LIBXC_ROOT=${HOME}/local/
LIBCINT=-L${HOME}/local -lcint -lquadmath
makeの実行
make
上記で-lquadmath
を指定するのが重要です。しばらくうまくいかず困っていたのですが、MOLGWのFAQページに記載がありました。
(OpenMPIを使用する場合の例)
OPENMP=-qopenmp -parallel
PYTHON=python3
# Parallel MPI SCALAPACK compilation
FC=mpif90
CPPFLAGS=-DHAVE_SCALAPACK -DHAVE_MKL
# maybe use icx instead icpc if using a recent version of Intel OneAPI
CXX=icpc -std=c++11
FCFLAGS= -fpp -O3 -xhost -qopt-matmul -g -traceback
CXXFLAGS= -O3 -xhost
LDFLAGS=-g -traceback
SCALAPACK= -lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64 \
-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core \
-liomp5 -pthread -lm
LIBXC_ROOT=${HOME}/local/
LIBCINT=-L${HOME}/local -lcint -lquadmath
使用している環境に合わせて、コンパイルと実行のときにOpenMPIの使用を可能にしておく必要があります。
私の場合、以下を実行しています。
module purge
module load oneapi_compiler/2023.0.0 openmpi/4.1.5-oneapi-2023.0.0-classic
注意
molgwを実行するとき環境変数OMP_STACKSIZE
を設定していない場合、出力に警告が表示されます。
実際、post-SCF計算を実行するときには適切に設定しておくのが良いようです。
bash
を使用している場合にはジョブスクリプト内で以下のようOMP_STACKSIZE
を設定します。
export OMP_STACKSIZE=1G
出力ファイルに使用するメモリの見積りが表示されるので、適切に調節すると良いと思います。
まとめ
MOLGWは物理系の方が開発されたものだからか、使い勝手が良いと感じています。分子系に限られますが、既に色々と計算を行っていて、自分自身はMOLGWを大いに使って楽しんでいます。