Quantum ESPRESSOは、オープンソースの第一原理計算ソフトウェアです。 QEのビルド・テスト・ポテンシャルの作成あたりまでやります。
ここでは、Intel compiler及びIntelMKLを使った並列計算用のビルド方法を書きます。 OpenMPは使っていません。
以下に名古屋大学のスパコン(Intel x86-64)で構築する際に用いたシェルスクリプトを貼ります。
冒頭のmodule purge
module load intel
module load mpi-fftw
などは利用中の計算機の設定に依存します。
Intelのコンパイラであるmpiifort
やmpicc
が使えて、なおかつIntel MKLへのパスが通った状態になるように適宜書き換えが必要です。
(この時に作業していた計算機環境が、module
コマンドで各種ツールのパス設定を管理していたためこのように書いています)
MKLのパス設定は、echo $MKLROOT
がきちんと値を表示してくれれば大丈夫だと思います。
module purge
module load intel
module load mpi-fftw
export LANG=C
export LC_ALL=C
export MPIF90=mpiifort
export MPIFC=mpiifort
export MPIF77=mpiifort
export MPICC=mpiicc
export MPICXX=mpiicpc
export FC=ifort
export F90=ifort
export F77=ifort
export CC=icc
export CXX=icpc
export FFLAGS="-O3 -assume byterecl -ip -g"
./configure --enable-parallel --with-scalapack=intel \
BLAS_LIBS="-lmkl_intel_lp64 -lmkl_sequential -lmkl_core" \
LAPACK_LIBS="-lmkl_intel_lp64 -lmkl_sequential -lmkl_core" \
SCALAPACK_LIBS="-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64"
# もしOpenMPを使う場合は、下記のようにする
# ./configure --enable-parallel --with-scalapack=intel --enable-openmp \
# BLAS_LIBS="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core" \
# LAPACK_LIBS="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core" \
# SCALAPACK_LIBCS=="-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64"
make pw
make pp
make ph
make ld1 # ポテンシャルを作成するやつ
# 他に必要なものがあればここに追加する
configure
のあと(`makeする前)に、ライブラリ周りの設定が下記のように表示されるので、それが上記で指定した通りになっているか確認するのが良いです。
The following libraries have been found:
BLAS_LIBS=-lmkl_intel_lp64 -lmkl_sequential -lmkl_core
LAPACK_LIBS=-lmkl_intel_lp64 -lmkl_sequential -lmkl_core
SCALAPACK_LIBS=-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64
FFT_LIBS= -lfftw3
ポテンシャルで何を使うかは行う計算(あとは好み?)に依存しますが、とりあえずここではpslibraryのビルド方法を書きます。
wget https://people.sissa.it/dalcorso/pslibrary/pslibrary.1.0.0.tar.gz
tar -zxf pslibrary.1.0.0.tar.gz
まず、QEのパッケージのトップのディレクトリに、environment_variables
というファイルがあり、その中に以下のような行があるので、必要に応じてこの並列数を書き換えます。
PARA_PREFIX="mpirun -np 4"
再び、pslibrary.1.0.0のディレクトリにもどります。
この中に、QE_path
というファイルがあるので、これを開き、PWDIR
に用いるQEのあるディレクトリを指定します。
pw.xが$PWDIR/bin/pw.x
というパスになるようにしておけばOKです。
#!/bin/bash
PWDIR='/home/myname/opt/QE/qe-7.1/'
作成したポテンシャルのディレクトリに移動し、../make_ps
を実行します。
以下はPBE汎関数向けのポテンシャルを作成する場合です。
cd pbe
../make_ps
これをスパコン環境でジョブとして投げる場合は、下記のようなジョブスクリプトを作ってそのまま投げればOKです。 (冒頭部分は計算機環境に合わせて書き換えてください)
#!/bin/sh
#PJM -L rscunit=cl
#PJM -L rscgrp=cl-single
#PJM -N node=1
#PJM --mpi proc=4
#PJM -L elapse=5:00:00
#PJM -j
#PJM -N ld
module load intel
module load mpi-fftw
. ../make_ps
分子科学研究所 - アプリケーションライブラリーの構築方法: Intel向けのビルドが多数記載されています(QE-6.7 )