0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MOLGWのohtaka上でのビルド/インストール

Last updated at Posted at 2025-05-17

はじめに

MOLGWohtaka上でのビルドが成功したので、簡単な記録を残しておきます。

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を大いに使って楽しんでいます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?