へっぽこ博士のなんちゃって研究室

PythonやR、分子軌道計算等に関する記事を書きます

Quantum ESPRESSO : qe-7.0ビルド 備忘録

1. ビルド環境

Ubuntu 20.04.3LTS on VirtualBox 6.1.30
https://www.ubuntulinux.jp/ubuntu
日本語Remix、最小インストール、アップデート済み(kernel 5.13.0-28-generic)
VirtualBox Extension Pack適用済み

2. 前準備

2-1. ビルドツール類のインストール

sudo apt install build-essential gfortran
sudo apt libtool autoconf
sudo apt install cmake cmake-qt-gui
sudo apt install curl git ssh


2-2. Quantum ESPRESSO 7.0のダウンロード

https://www.quantum-espresso.org/
公式のdownloadページからアクセスするにはユーザー登録が必要になりました。利用者の職種や目的の調査用だそうです*1
GitHub、GitLabは認証なしでアクセス可能なので、面倒な方はgitで複製するのが吉。
https://github.com/QEF/q-e/
https://gitlab.com/QEF/q-e/

git clone https://github.com/QEF/q-e.git ./qe-7.0

または、

git clone https://gitlab.com/QEF/q-e.git ./qe-7.0

ダウンロード先を変更したい場合は、末尾のディレクトリ指定を任意に変更ください。
なお、GitHubからは、.tar.gzでも一応ダウンロード可能です。

3. ビルド&インストール

3-1. 同梱パッケージのみでビルド

とりあえず使えればいいという方向け。
README通りのやり方です。

./configure --prefix=$HOME/.local/qe
make all -j
make install

pw.xを実行して、クレジットが表示されたら、インストール成功です。

$HOME/.local/qe/bin/pw.x

Ctrl+Cで中断してください。

cmakeでビルドする場合は、少し注意が必要です。
READMEには明記されていませんが、
QE_LAPACK_INTERNAL=ON

QE_FFTW_VENDOR=Internal
の2つを指定しないと、configureに失敗します。

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local/qe -DCMAKE_Fortran_COMPILER=mpif90 -DCMAKE_C_COMPILER=mpicc -DQE_LAPACK_INTERNAL=ON -DQE_FFTW_VENDOR=Internal ..
make -j
make install


3-2. APTパッケージによるビルド

実行速度を求めたり、並列計算や様々な汎関数を使いたい方向け。
特にこだわりがなければ、以下が一番楽です。

sudo apt install openmpi-bin libopenmpi-dev 
sudo apt install libopenblas-dev liblapack-dev libfftw3-dev libfftw3-mpi-dev libxc-dev
./configure --prefix=$HOME/.local/qe --with-libxc
make all -j
make install


こちらの場合でcmakeする場合は、README通りの方法で問題なくconfigureが通ります。

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local/qe -DCMAKE_Fortran_COMPILER=mpif90 -DCMAKE_C_COMPILER=mpicc ..
make -j
make install

ただ、追加機能分のオプション指定が必要で、オプションパラメータの前に「-D」を付けます。 コマンドラインによるオプション指定は面倒なので、cmake-guiをインストールしている環境なら、CMakeCache.txtをダブルクリックすると、より簡単に編集できます。

(編集の一例)

CMAKE_INSTALL_PREFIX  $HOME/.local/qe
ENABLE_SCALAPACK_MPI  ON
ESPRESSO_PSEUDO       .
QE_ENABLE_LIBXC       ON
QE_ENABLE_SCALAPACK   ON
QE_FFTW_VENDOR        FFTW3

疑ポテンシャルファイルを自動探索するディレクトリが、デフォルトではソースディレクトリのpseudoになっているので、指定し直したほうが使い勝手が良いと思います。

Intel製CPUなら、openblasをintel-mklに変更することも可能です。ただ、configureが通らなくなるので(lapackとfftwを見つけられないようです)、cmakeでビルドします。

sudo apt install intel-mkl-full

インストール途中の選択肢はデフォルトのままOKを選択して問題ありません。

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local/qe -DCMAKE_Fortran_COMPILER=mpif90 -DCMAKE_C_COMPILER=mpicc -DENABLE_SCALAPACK_MPI=ON -DESPRESSO_PSEUDO=. -DQE_ENABLE_LIBXC=ON -DQE_ENABLE_SCALAPACK=ON -DQE_FFTW_VENDOR=Intel_FFTW3 ..
make -j
make install

上述のとおり、オプション部分はCMakeCache.txtを編集してもOKです。


3-3. ライブラリのソースビルド

最新のライブラリにこだわりたい方向け。
正直、makeに失敗することが多いので、お勧めできません。
具体的には、手動インストールしたもののパスを指定しても、そんな場所にはないと怒られてconfigure自体が通らなかったり、configureが通った場合でも、FFTWに関連する部分でコンパイルに失敗したりします。
makefileに問題があるため*2、自身で編集できるレベルの知識が必要です。ちなみに、現時点の筆者の知識レベルではすべてを解決できませんでした。


○ Open MPI

https://www.open-mpi.org/
Downloadページからダウンロードします(2022/2/13時点では、4.1.2が最新の安定版)。
3種類用意されていますが、.tar.gzを選択するのが無難です。
並列処理を担うソフトとしては、他にmpich*3があります。
実行ファイル名や環境変数がかぶっていたり、BLAS類の設定方法が異なるなど面倒事が多いので、使っているソフトの仕様上、切り替えて使用する必要があるというような特殊な事情でもない限り、どちらか1つに絞ったほうが良いと思います。

tar -xvf openmpi-4.1.2.tar.gz
cd openmpi-4.1.2

./configure --prefix=$HOME/.local/openmpi
make all
make install

環境設定
.bash_aliases(デフォルトでは存在しません)を開いて、

gedit ~/.bash_aliases

以下を追記します。

export MPIROOT=$HOME/.local/openmpi
export LD_LIBRARY_PATH=$MPIROOT/lib
export PATH=$PATH:$MPIROOT/bin

新たなエイリアスやパス設定等は、.bash_aliasesに書き込むのが良いと、.bashrc内に記載があります。
不幸な事故*4を防ぐためにも、.bashrcは極力触らないほうが良いです。
編集が終わったら、ターミナルを再起動します。

exec $SHELL --login

mpiexecやmpirunなどを実行して、パスが通っていれば、インストール作業は成功です。

mpiexec --version


○ libxc

https://tddft.org/programs/libxc/
Downloadページよりダウンロードします(2022/2/13時点では5.2.2が最新版)。

tar -xvf libxc-5.2.2.tar.gz
cd libxc-5.2.2
./configure CC=gcc FC=gfortran --enable-fortran --prefix=$HOME/.local/libxc
make
make test
sudo make install

QEでは、Fortran用のライブラリが必要なので、 「--enable-fortran」を指定します。
このスイッチは、helpでは出てこないのですが(記載し忘れ?)、configureファイル内を探ると、きちんと設定があり、デフォルトでは「--disable-fortran」が設定されることがわかります。

GitHubからもダウンロード可能です。
https://github.com/ElectronicStructureLibrary/libxc

git clone https://gitlab.com/libxc/libxc.git ./libxc-5.2.2
cd libxc-5.2.2
autoreconf -i .

autoreconfでconfigureを再生成します。
ディレクトリを示す最後の「.」を忘れないようにしましょう*5
後の手順はtar.gzの場合と同じです。

cmakeでビルドする場合は、f90に対応するファイルが欠落しているので、pkgconfigディレクトリ内のlibxcf90.pc.inをcmakeディレクトリにコピーしておく必要があります。

QEで使用する場合は、以下の3つのスイッチ
--with-libxc
--with-libxc-prefix
--wuth-libxc-include
を指定するのですが、パッケージインストールした場合とファイル構成が異なるためか、configure側でうまく認識してくれません。
手動ビルドした後、すべてのディレクトリにファイルをコピーして同じ内容にしてみましたが、解決できませんでした。

LAPACK

http://www.netlib.org/lapack/
QE同梱のBLASLAPACK、CBLASです。
最新版は、3.10.0(2022/2/13時点)。

mkdir build
cd build
cmake -DCMAKE_INSTALL_LIBDIR=$HOME/.local/lapack ..
cmake --build . -j --target install

qe/installディレクトリ内のextlibs_makefileを編集したら、自動でインストールされないかと試したのですが、現実は甘くなかったです。
一応、編集したものを以下に記載しますが、cmakeの場合しか通りません(configureはエラーになります)。

14~16行目

LAPACK_NETLIB=lapack-3.10.0.tar.gz
LAPACK_NETLIB_NAME=lapack-3.10.0
LAPACK_NETLIB_URL=https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.10.0.tar.gz

3.9.0以降はGitHubに移行しているため、URLの指定が少し面倒です*6

○ FFTW

https://www.fftw.org/
最新版は、3.3.10(2022/2/13時点)。

./configure --enable-mpi
make
make install

QEのconfigureでは、インストール先をデフォルトにしても認識してくれませんでした。
cmakeだとQE_FFTW_VENDORにFFTW3を指定すると認識はしてくれますが、Wannier90のあたりでコケます。

○ Wannier90

http://www.wannier.org/
2022/2/13時点では同梱のものと同じですので、敢えて単体をダウンロードする必要はないと思います。

cp ./config/make.inc.gfort ./make.inc
make -j
sudo make install

gfortranでコンパイルする場合は、make.inc.gfortをコピーします。そのほかのコンパイラを使用する場合は、README.installを参照ください。
デフォルトでは/usr以下にインストールされます。

4. 疑ポテンシャルファイル

適切な疑ポテンシャルファイルは、目的や計算対象によって異なるため、まずは文献等の先例に従って、その結果を再現できるか確認することが重要です*7。そのうえで、変更を加えたときに、どのくらい信頼性を担保できるか検証することが大切です。
ここでは、公式のlegacy pseudopotentialsにあるPSlibraryのみを紹介します。
http://pseudopotentials.quantum-espresso.org/

○ PSLibrary
https://github.com/dalcorso/pslibrary
公式の周期表から1つずつダウンロードしてもよいのですが、このスクリプトを使用すると、必要なポテンシャルファイルを手元で一度に生成できます。xml形式で生成されるため、タグの分だけファイルサイズが大きくなるのがやや難点です。

git clone https://github.com/dalcorso/pslibrary.git ./pslibrary.1.0.1

実行にあたって、いくつかファイルの編集が必要です。
QE_path

PWDIR=$HOME/.local/qe

QEのインストール場所、具体的にはld1.xが存在するディレクトリ(/bin)を指定します。最後のパス区切り文字(/)は入力しないよう注意。

・make_ps
11行目

element='H. C. N. O. Al Si Fe Au'

全元素(all)を生成すると時間がかかるので、必要な元素記号を指定します。
一文字の元素は2文字目に「.」を付け、元素間はスペースで区切ります。

21行目

#. $PWDIR/environment_variables

旧版(<5.0)用の設定なので、コメントアウトしておきます。
エラー表示が気にならなければ、そのままでも大丈夫です。

・make_ps_all
15行目~

cd ./pz
. ../make_ps
cd ..

必要な疑ポテンシャルファイルをディレクトリ名で指定します。
通常はpzまたはpbeのみで十分事足りると思います。

ここまで準備できたら、

./make_ps_all

で、それぞれのディレクトリのPSEUDOPOTENTIALS以下に疑ポテンシャルファイルが生成されます。
テスト用のディレクトリ(WORK)も生成されますが、こちらは必要ないので、削除してもかまいません。

5. 参考サイト

雑多な記録
第一原理計算ソフトQuantumESPRESSOの使い方
http://www2.yukawa.kyoto-u.ac.jp/~koudai.sugimoto/dokuwiki/doku.php?id=quantumespresso

株式会社クロスアビリティ
Quantum ESPRESSO入力ファイル作成手順
3.擬ポテンシャルファイルの選択方法
https://qiita.com/xa_member/items/006d9dd44c662a17903d

*1:2022/1/22確認時。 しばらく前からサーバー証明が切れているとは思っていたのですが、リニューアルと同時に変更になったようです。

*2:おそらくパッケージインストールしか想定されていないんだろうと思います。

*3:https://www.mpich.org/

*4:https://www.nemotos.net/?p=3529

*5:READMEの説明だと、文章の終わりを示すピリオドに見えるので、何も生成されない、configureできないと、しばらくハマりました。

*6:指定が間違っていると、一応警告は出るのですが、少し先まで処理が流れてから止まるので、ビルドできない原因を突き止めるまでにずいぶん時間がかかりました。

*7:先例がない場合は、実験値をどのくらい再現できるか、適用範囲はどのくらいかの検証を行います。