LoginSignup
1
0

More than 1 year has passed since last update.

YAMBOのコンパイル

Last updated at Posted at 2020-11-06

YAMBOABINITQuantum-ESPRESSO (QE) により得られた波動関数を元に多体摂動論計算を行うためのプログラムです。
本稿では以下の環境でQEをベースとしたYAMBOのコンパイル方法を説明します。

  • システム: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

QEのコンパイル

私は基本的にホームディレクトリでQE/srcというディレクトリを作成し、src/以下にソースコードを展開、コンパイルしています。

ダウンロード

${HOME}/QE/srcで以下を実行しQEの最新版をクローンします(ここではバージョン6.6)。

git clone -b 'qe-6.6' --depth 1 https://gitlab.com/QEF/q-e.git qe-6.6

あるいはwgetを使ってtarボールをダウンロード、展開します。

wget https://gitlab.com/QEF/q-e/-/archive/qe-6.6/q-e-qe-6.6.tar.bz2

コンパイル

qe-6.6あるいはq-e-qe-6.6で以下のようにconfigureを実行します。

MPIF90=mpiifort DFLAGS='-D__OPENMP -D__FFTW3 -D__MPI -D__SCALAPACK' SCALAPACK_LIBS='-L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64' IFLAGS='-I$(TOPDIR)/include -I../include -I ${MKLROOT}/include/fftw/' ./configure --enable-openmp

これは我々のPCクラスター特有の修正ですが、複数の世代のノードがあるため、以下のコンパイラオプションをFFLAGSに追加します。

make.inc
-xSSE4.2 -axCOMMON-AVX512,CORE-AVX512,CORE-AVX2,CORE-AVX-I,AVX

これでmake.incの用意ができましたのでmakeを実行します。ここでは最小限のpw.xppのみをコンパイルします。

make pw pp

引数無しでmakeを実行するとコンパイル可能なプログラムの一覧が表示されます。

Yamboのコンパイル

pw.xのコンパイルに成功した後にyamboのコンパイルへと進みます。

ダウンロード

wget https://github.com/yambo-code/yambo/archive/4.5.2.tar.gz

tarボールを展開してyamboディレクトリに移動します。

tar zxvf 4.5.2.tar.gz
cd yambo-4.5.2

コンパイル

yambo-4.5.2configureを実行します。

Scalapackを使用しない場合:

PFC="mpiifort" FC="ifort" F77="ifort" ./configure --enable-mpi --enable-open-mp --enable-dp --with-lapack-libs="-mkl=parallel" --with-blas-libs="-mkl=parallel" --with-fft-libs="-mkl=parallel" --with-iotk-path="${HOME}/QE/src/qe-6.6/iotk"

Scalapackを使用する場合:

PFC="mpiifort" FC="ifort" F77="ifort" ./configure --enable-mpi --enable-open-mp --enable-dp --with-iotk-path="${HOME}/QE/src/qe-6.6/iotk" --with-blas-libs="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm" --with-lapack-libs="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm" --with-fft-includedir="${MKLROOT}/include/fftw" --with-fft-libs="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm" --with-blacs-libs="-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_core -liomp5 -lpthread -lm" --with-scalapack-libs="-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_core -liomp5 -lpthread -lm"

既にコンパイル済みのlibxcを使用するように指定しましたが、configureのチェック時にエラーが発生するためyamboのコンパイル時にビルドするようになります。
libxcのバージョンを適切に選ぶ必要があるのかもしれません。
configureの出力結果を確認して自分が使用したいオプションが正しく指定されていたならばビルドを開始します。ここでは最低限のコマンドのビルドを行います。

make yambo ypp p2y

QE+Yamboのコンパイル

YamboはQEのプラグインとしてコンパイルすることが可能ですが、QEをconfigureする際のオプションを適切に指定する必要があります。
QEのconfigureを以下のように実行します。

MPIF90=mpiifort DFLAGS='-D__OPENMP -D__FFTW3 -D__MPI -D__SCALAPACK' FFT_LIBS='-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm' LAPACK_LIBS='-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm' BLAS_LIBS='-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm' SCALAPACK_LIBS='-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_core -liomp5 -lpthread -lm' BLACS_LIBS='-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_core -liomp5 -lpthread -lm' ./configure --enable-openmp

上と同様、make.incを修正してFFTWのインクルードファイルのパスを手動で追加しておきます。

make.inc
-I$(MKLROOT)/include/fftw

configureがうまくいけばあとは

make pw
make yambo

を実行するだけで最新版(安定版)のyambo, p2y, yppが自動的にダウンロード、コンパイルされます。

1
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
1
0