憂鬱神楽坂

西千葉メランコリー

物性研(System B Ohtaka)でのQuantum Espresso-Perturboコンパイル

これも内輪用です!(重要!)

責任は取れないよ!

下準備

VASPのコンパイルの時と下準備は一緒です。

HDF5は既にインストール済みでしたら適宜スキップしてください。

まずはmodule loadから

module purge
module load oneapi_compiler/2023.0.0 oneapi_mkl/2023.0.0 oneapi_mpi/2023.0.0  

次にHDF5のインストール

HDF5® Source Code - The HDF Group

ここからソースコードをダウンロードしてください。

ダウンロードできたらHDF5のディレクトリ内で以下を実行します。
prefix=は各々のディレクトリを指定してください。

./configure --prefix=/home/test/hdf5-1.8.18/ --enable-fortran CC=mpicc FC=mpiifort CXX=mpicxx
make
make install

Quantum Espressoのコンパイル

Quantum Espressoのバージョンは7.2を使用しています。

Quantum Espresso(QE)のディレクトリ直下でconfigureを実行します。

.configure

実行したら"make.inc"ができると思うので一応中身を確認しておきましょう。


module loadは絶対に忘れずにね!

もしHDF5をQEでも使うのなら

# HDF5

HDF_LIBS = /your/hdf5/lib

って感じで追記しておきましょう。


そして各自使うやつをmakeしましょう。

make pw ph pp w90

makeする時はジョブスクリプト書くかインタラクティブジョブ状態にしてからしようね!
約束だよ!(超重要!)

QEコンパイルはこれで完了です。
./binの中に"~.x"といった感じの実行ファイルができているはずです。

Wannier90のコンパイル

ここからダウンロードできます。

Download – Wannier90

PerturboはWannier 90-3.0.0以降しか対応していないのでそこだけ注意。

"config"の中にある"make.inc.~"をコピーします。(ここではmake.inc.ifort)

cp ./config/make.inc.ifort ./make.inc

そしてmakeすれば難なくコンパイルできるはずです。

Perturbo

Perturboのバージョンは2.1.0を使用しています。

バージョン2.1.0の場合、ディレクトリ直下に"make.sys"があるのでそれを編集していきます。
ちなみに変更する箇所が多くなりすぎるので、PerturboはQEディレクトリ内に置くことを強く勧めます。
編集といっても通常はHDFのPATHを書いてあげるだけでOKです。

#path to HDF5 library
IFLAGS += -I/home/k~/k~/hdf5~/include
HDF5_LIB = -L/home/k~/k~/hdf5/lib -lhdf5 -lhdf5_fortran

書いてあげたらmakeして、"bin"ディレクトリ内に"perturbo.x"と"qe2pert.x"があれば大丈夫です。

おまけ

濱田先生のQiitaに書いてある通り
ジョブスクリプト

export FI_PROVIDER=psm3

を追記してあげた方が実行速度が速くなっている気がします。

ohtaka上でのIntelコンパイラ(+IntelMPI)を使ったコンパイルの問題 #IntelCompiler - Qiita

参考までに自分のジョブスクリプトはこんな感じです。

~~~省略~~~

ulimit -s unlimited


module purge
module load oneapi_compiler/2023.0.0 oneapi_mkl/2023.0.0 oneapi_mpi/2023.0.0
export MKL_DEBUG_CPU_TYPE=5
export UCX_TLS='self,sm,ud'
export KMP_STACKSIZE=512m


# standard version
srun  ~/qe-7.2/bin/pw.x -i pwscf.in | tee result.out

MPI並列とOpenMP並列のいい塩梅を知っている方いれば、教えてくださると助かります。
タスクあたりのコア数(OpenMP並列)をCPUの構成から見て64の約数にした方がなんとなく良いと思います。