QEの実行方法 †
一般的なpw.xの実行方法 †
MPI等を用いてビルドした場合、pw.xは以下のように実行します。
mpirun -np 4 pw.x < scf.in > scf.out
あるいは
mpirun -np 4 pw.x -i scf.in > scf.out
ここで入力ファイルはscf.in、出力ファイルはscf.outとし、4プロセスを用いて実行しています。
smith上での実行方法 †
TBD
ohtaka上での実行方法 †
ここではohtaka上でOneAPIを使ってpw.xをビルドしたと仮定します。
使用したモジュールは以下とします。
1) oneapi_compiler/2023.0.0 2) oneapi_mkl/2023.0.0 3) oneapi_mpi/2023.0.0
簡単のため、pw.xへのコマンドサーチパスは既に設定されているとします。
ohtaka上ではmpirunではなくsrunを用いてpw.xを実行します。
またpw.xはジョブスクリプトを用いて投入する必要があります。
以下にジョブスクリプトの例を示します。
- run.sh
#!/bin/sh
#SBATCH -p i8cpu
#SBATCH -N 8
#SBATCH -n 256
#SBATCH -c 4
#SBATCH -t 00:30:00
#
###########
# Modules #
###########
#
module purge
module load oneapi_compiler/2023.0.0 oneapi_mkl/2023.0.0 oneapi_mpi/2023.0.0
export FI_PROVIDER=psm3
ulimit -s unlimited
#
#########################
# Parallelization level #
#########################
#
# k-point (pool) parallelism
#
NPOOLS=1
#
# band parallelism
#
NBAND=4
#
# MPI command
#
MPI_COMMAND=srun
#
# PW directory and command
#
PW_DIR="${HOME}/QE/src/qe-7.3/bin"
#
PW="${PW_DIR}/pw.x -npools ${NPOOLS} -nband ${NBAND}"
#
# Execute
#
${MPI_COMMAND} ${PW} < ${INPUT_FILE} > ${OUTPUT_FILE}
以下に説明を加えます。
- 使用するパーティションの指定
#SBATCH -p i8cpu
- 使用するノードの数
#SBATCH -N 8
- 使用するプロセス数
#SBATCH -n 256
- 使用するスレッド数
#SBATCH -c 4
- 実行時間(の上限)
#SBATCH -t 00:30:00
- 使用するモジュールの指定。pw.xをビルドした際と同じものを指定
module purge
module load oneapi_compiler/2023.0.0 oneapi_mkl/2023.0.0 oneapi_mpi/2023.0.0
- OneAPIを使用してプログラムをビルドした場合に指定する必要のある変数
export FI_PROVIDER=psm3
- 任意
ulimit -s unlimited
- k点並列数の指定(筆者独自の方法ですが(以下のプログラムの実行の箇所も参照)、)
NPOOLS=1
- バンド並列数の指定
NBAND=4
- MPIコマンドの指定
MPI_COMMAND=srun
- pw.xのディレクトリの指定
PW_DIR="${HOME}/QE/src/qe-7.3/bin"
- pw.xと並列数の指定
PW="${PW_DIR}/pw.x -npools ${NPOOLS} -nband ${NBAND}"
- pw.xの実行
${MPI_COMMAND} ${PW} < ${INPUT_FILE} > ${OUTPUT_FILE}
ジョブを実行するには以下を実行します。
sbatch run.sh