2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PIMD+Quantum-ESPRESSO+AENETのコンパイル

Last updated at Posted at 2021-01-14

はじめに

PIMDは高度に並列化された分子動力学シミュレーションプログラムで、経路積分分子動力学をはじめとした高度な分子動力学シミュレーションを実行することが可能です。またDFTB++などの半経験的計算プログラムやQuantum-ESPRESSO、CP2K、VASPなどの密度汎関数プログラムとのカップリングにより様々なレベルの精度での分子動力学シミュレーションが可能です。さらに人工ニューラルネットワークに基づいたポテンシャルをAENETを用いて生成することも可能です。
ここでは以下の環境でQuantum-ESPRESSO(QE)とAENETの使用を可能としたPIMD(2.4.0)のコンパイルの手順を記述しま。

  • システム:Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz
  • コンパイラ:ifort version 19.1.2.254

準備

~/.bashrcに以下を追加し必要なモジュールをログイン時に読み込むように設定します。

module load intel/2020.2.254
module load intelmpi/2020.2.254
module load python/3.8

PIMDプログラムのビルドは以下で行うことにします。

~/PIMD/src

PIMDのダウンロード

~/PIMD/src以下でPIMD 2.4.0用ディレクトリを作成します(ディレクトリ名は好みでつけて下さい)。ここではpimd-2.4.0とします。~/PIMD/src/pimd-2.4.0で以下を実行しpimd-2.4.0のソースコードをダウンロード、解凍します。

wget https://ccse.jaea.go.jp/software/PIMD/download/pimd.2.4.0.tar
tar xvf pimd.2.4.0.tar

コンパイル用のディレクトリを作成します。

mkdir compile

compileディレクトリに移動してsourceディレクトリにあるファイルをコピーします。

cd compile
cp ../source/* .

compileディレクトリに移動しmakefileを編集します。

cd compile

makefileのコンパイラとコンパイラオプションをシステムにあわせて変更します。これらは以下で記述するQEと矛盾しないようにしておく必要があります(QEのコンパイルの経験が無い場合には先にスタンドアローンのQEのコンパイルを行ってオプションを確定しておくと良いでしょう)。

  • コンパイラ
FCMP = mpiifort
  • コンパイラオプション
OPTS   =  -O2 -g -traceback -w \
          -xSSE4.2 -axCOMMON-AVX512,CORE-AVX512,CORE-AVX2,CORE-AVX-I,AVX \
          -static-intel -qopenmp \
          -I ${MKLROOT}/include/fftw

ここで二行目の

          -xSSE4.2 -axCOMMON-AVX512,CORE-AVX512,CORE-AVX2,CORE-AVX-I,AVX \

というオプションは、我々が使用しているクラスタシステムに複数の異なるマシンが存在するために指定しているものです。また-static-intelというオプションは不要かもしれません。また古いintelコンパイラでは問題ありませんでしたが、最近のバージョンでは-O3オプションを指定するとコンパイラの内部エラーのためうまくいきませんでした。この問題は-O2を指定することで解消されました。

  • QE用オプション
QE = -Dqe
LIBQE = -L../lib/qe/q-e-qe-6.2.1/qelib -lqe -L.
LIBMKL = -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 \
         -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core
  • AENET用オプション
AENET = -Daenet
LIBAENET    = -I../lib/aenet/aenet-2.0.3/src \
              ../lib/aenet/aenet-2.0.3/src/libaenet.a \
              ../lib/aenet/aenet-2.0.3/lib/liblbfgsb.a

モジュールの準備

compileディレクトリで以下を実行します。

make common_variables.o

QEのダウンロード

compileからライブラリ用ディレクトリに移動します。

cd ../lib/qe

以下を実行しQE 6.2.1をダウンロードし解凍します。

wget https://github.com/QEF/q-e/archive/qe-6.2.1.zip
unzip qe-6.2.1.zip

次にパッチをあてます。

patch -p0 < qe-6.2.1_to_pimdlib.patch

QEのコンパイル

qe-qe-6.2.1に移動し、以下を実行します。

MPIF90=mpiifort DFLAGS='-D__OPENMP -D__FFTW3 -D__MPI -D__SCALAPACK' SCALAPACK_LIBS='-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64' ./configure --enable-openmp

生成されたmake.incを手動で編集します。

FFLAGS         = -O2 -assume byterecl -g -traceback -qopenmp -xSSE4.2 -axCOMMON-AVX512,CORE-AVX512,CORE-AVX2,CORE-AVX-I,AVX
FFLAGS_NOMAIN   = -nofor_main -xSSE4.2 -axCOMMON-AVX512,CORE-AVX512,CORE-AVX2,CORE-AVX-I,AVX

さらにmake.inc中のIFLAGに以下を追加します。

-I$(MKLROOT)/include/fftw -I../../../compile

これで準備ができましたのでpw.x(libqepw.a)をビルドします。

make pw

AENETのダウンロード

q-q-qe-6.2.1からAENET用ディレクトリに移動します。

cd ../../aenet

以下を実行しAENET 2.0.3をダウンロードし解凍します。

wget http://ann.atomistic.net/files/aenet-2.0.3.tar.bz2
tar jxvf aenet-2.0.3.tar.bz2

AENETのディレクトリに移動しパッチを当てます。

cd aenet-2.0.3
patch -u -p1 -d src < ../src.patch

ライブラリのディレクトリに移動しMakefileのコンパイラとコンパイラオプションを変更します。

FC = ifort -c
FCFLAGS = -O2 -xSSE4.2 -axCOMMON-AVX512,CORE-AVX512,CORE-AVX2,CORE-AVX-I,AVX

コンパイルを実行します。

make

次にソースディレクトリに移動します。

cd ../src

makefilesというディレクトリ以下にプラットフォーム毎のmakefileが用意されていますので、makefiles/Makefile.ifort_intelmpiを編集します。FCLFAGSに以下のオプションを追加します。

-O2 -xSSE4.2 -axCOMMON-AVX512,CORE-AVX512,CORE-AVX2,CORE-AVX-I,AVX

最後にmakeを実行します。

make -f makefiles/Makefile.ifort_intelmpi lib

PIMDのコンパイル

QEのディレクトリのPW/src/libqepw.aができていることを確認し、PIMDのコンパイルを行います。

cd ../../../compile
make

参考

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?