1 minute read

前書き

最近のQuantum Espresso(QE)にはHDF5形式で波動関数等を書き出してくれるオプションがあるのだが,これはコンパイル時にHDF5ライブラリをリンクしないと有効にできない.諸事情でこのHDF5付きのQEが必要になったのだが,クラスタにHDF5自体が入っていなかったのでHDF5+QEのインストールを実施したのでやり方を残す.

環境

インストールした環境はRed Hat v.8.6のLinuxクラスタである.HDF5が入っていないクラスタだったので,QEの前にHDF5のコンパイルから始める必要があった.

$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="8.6 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.6"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.6 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/8/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.6
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.6"

コンパイラはGnu Compilerに加えて,ModuleシステムでIntel Compilerを採用している.経験上QEはIntel Compilerのほうが速度が早いため,今回はIntel Compilerでのインストールを目指す.

$ icx --version
Intel(R) oneAPI DPC++/C++ Compiler 2025.2.0 (2025.2.0.20250605)
Target: x86_64-unknown-linux-gnu
Thread model: posix

$ mpiicx --version
Intel(R) oneAPI DPC++/C++ Compiler 2025.2.0 (2025.2.0.20250605)
Target: x86_64-unknown-linux-gnu
Thread model: posix

同様にIntel MKLもインストールされている状況だ.

$ echo $MKLROOT
/opt/intel/oneapi/mkl/2025.2

CMakeが少し古いバージョンのマシンだった.クラスターに非管理者権限でCMakeを入れるのはかなり大変な印象なので,今回はこのバージョンを制約にして作業を進める.

$ cmake --version
cmake version 3.20.2

今回コンパイルしたQEおよびHDF5のバージョンは以下の通り.QEは2026年5月時点の最新バージョンを利用しており,HDF5は現時点での最新版はv.2.1.1だが,この最新版はCMakeのバージョン3.26以上を要求していて利用しているシステムと噛み合わなかったので,よりバージョン要求のゆるいv1の最新版を利用している.

QE: v.7.5
HDF5: v.1.14.6

HDF5 installation

[option] Intel Compilerの読み込み

Intel Compilerがmoduleシステムで管理されている場合はそれを読み込む.念のためデフォルトでロードされているモジュールをmodule purgeで解除してから読み込む.

module purge
module load <your modules>

C,Fortran用のMPIコンパイラが正しく動作していることを確認する.特にQEを並列版でコンパイルするのでHDF5も並列版のコンパイラでコンパイルすることと,QE用にはFortranのドライバが必要なのでFortranコンパイラが動いていることが必須だ.

[option] Conda環境の停止

私の環境ではCondaが読み込まれた状態では./configureが正しく動かなかったので,念のためdeactivateを推奨したい.

conda deactivate

Installation

CMakeを利用する方法と古典的なconfigureを利用する方法がサポートされている.今回はconfigureを利用してインストールした.まずはコードをダウンロード,解凍してレポジトリのルートに移動する.

wget https://github.com/HDFGroup/hdf5/archive/refs/tags/hdf5_1.14.6.tar.gz
tar -xvf hdf5_1.14.6.tar.gz
cd hdf5_1.14.6

インストールは,このレポジトリ内のrelease_docs/INSTALLファイルに従って実行した.QEのため,fortranと並列実行を有効にする必要がある.<path_to_install>はインストールしたいディレクトリを指定する.

./configure --prefix=<path_to_install> --enable-parallel --enable-fortran CC=mpiicx FC=mpiifx
make
make install

これでインストールディレクトリに以下のようにbin, include, libの3つのフォルダができていれば成功だ.

$ ls
bin  include  lib

特にlibディレクトリにfortran関連のライブラリが生成されていれば良い.

$ ls lib
libhdf5.a         libhdf5.so.310      libhdf5_fortran.so          libhdf5_hl.la          libhdf5_hl_fortran.a   libhdf5hl_fortran.so
libhdf5.la        libhdf5.so.310.5.1  libhdf5_fortran.so.310      libhdf5_hl.so          libhdf5_hl_fortran.so  libhdf5hl_fortran.so.310
libhdf5.settings  libhdf5_fortran.a   libhdf5_fortran.so.310.3.2  libhdf5_hl.so.310      libhdf5hl_fortran.a    libhdf5hl_fortran.so.310.0.6
libhdf5.so        libhdf5_fortran.la  libhdf5_hl.a                libhdf5_hl.so.310.0.6  libhdf5hl_fortran.la

QE installation

コンパイル

HDF5の時と同様,Intel Compilerの読み込みと,Condaのdeactivateは実行することをおすすめしたい. 準備ができたら,ソースコードをダウンロードして解凍,ルートディレクトリに移動する.

$ wget https://gitlab.com/QEF/q-e/-/archive/qe-7.5/q-e-qe-7.5.tar.gz
$ tar -xvf q-e-qe-7.5.tar.gz
$ cd qe-7.5

インストールはconfigureを利用して行う.README.mdに簡単な説明があるので目を通しておくと良い.<path_to_hdf5>には先ほどのHDF5のprefixで指定したのと全く同一のパスを指定する.openmpはハイブリッド並列のために必須のオプションだ.コンパイラはHDF5のインストールと全く同じものを指定する.

./configure --with-scalapack=intel --enable-openmp=yes --with-hdf5=<path_to_hdf5> CC=mpiicx FC=mpiifx

そのほかのオプションについては以下のコマンドで確認できる.

./install/configure  --help

さて,HDF5が正常にリンクされていれば,./configureの最後で以下のようにHDF5_LIBSにライブラリが見つかっているはずだ.逆にこれがなかったらうまく言っていないということなのでコンパイルを見直す.

--------------------------------------------------------------------
ESPRESSO can take advantage of several optimized numerical libraries
(essl, fftw, mkl...).  This configure script attempts to find them,
but may fail if they have been installed in non-standard locations.
If a required library is not found, the local copy will be compiled.

The following libraries have been found:
  BLAS_LIBS=  -lmkl_intel_lp64  -lmkl_intel_thread -lmkl_core
  LAPACK_LIBS=
  SCALAPACK_LIBS=-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64
  FFT_LIBS=
  HDF5_LIBS=-L<path_to_hdf5>/lib <path_to_hdf5>/lib/libhdf5hl_fortran.a <path_to_hdf5>/lib/libhdf5_hl.a <path_to_hdf5>/lib/libhdf5_fortran.a <path_to_hdf5>/lib/libhdf5.a -lz -ldl -lm


Please check if this is what you expect.

If any libraries are missing, you may specify a list of directories
to search and retry, as follows:
  ./configure LIBDIRS="list of directories, separated by spaces"

Parallel environment detected successfully.\
Configured for compilation of parallel executables.

For more info, read the ESPRESSO User's Guide (Doc/users-guide.tex).
--------------------------------------------------------------------

あとは通常通りmakeすれば良い.

make all
make install

動作確認

インストールが完了したら,単純なscf計算を実行し,<prefix>.saveディレクトリにhdf5ファイルが生成されていることを確認する.通常バージョンだと波動関数はdatファイルで保存されているが,HDF5でコンパイルされたQEはデフォルトでhdf5で波動関数を出力する.

Tags:

Categories:

Updated: