Skip to content

Instantly share code, notes, and snippets.

@YukiSakamoto
Last active November 18, 2022 08:20
Show Gist options
  • Save YukiSakamoto/d45688480c7f3719c869d169d04d88c3 to your computer and use it in GitHub Desktop.
Save YukiSakamoto/d45688480c7f3719c869d169d04d88c3 to your computer and use it in GitHub Desktop.
How to build QE

Quantum ESPRESSOは、オープンソースの第一原理計算ソフトウェアです。 QEのビルド・テスト・ポテンシャルの作成あたりまでやります。

前提

ここでは、Intel compiler及びIntelMKLを使った並列計算用のビルド方法を書きます。 OpenMPは使っていません。

pw.x のビルド

以下に名古屋大学のスパコン(Intel x86-64)で構築する際に用いたシェルスクリプトを貼ります。

冒頭のmodule purge module load intel module load mpi-fftwなどは利用中の計算機の設定に依存します。 Intelのコンパイラであるmpiifortmpiccが使えて、なおかつ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

リソース

Quantum ESPRESSO

PSLibrary

参考サイト

分子科学研究所 - アプリケーションライブラリーの構築方法: Intel向けのビルドが多数記載されています(QE-6.7 )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment