- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2024-01-26T16:58:37+09:00","default:StatE","StatE")
#author("2024-02-20T22:33:17+09:00","default:StatE","StatE")
* プログラムの実行方法 [#p7abb6b1]
** ジョブスクリプトの書き方 [#gd1b6333]
SQUIDでプログラムを実行するためにはキューイングシステムを利用する必要があります。
一般的には以下のようなジョブスクリプトファイルを作成しqsubコマンドを利用してジョブを投入します。~
以下はSTATEを用いてCO分子の計算を実行するためのジョブスクリプトの例です
- run_co.sh
#!/bin/bash
#PBS -q DBG
#PBS --group=G15577
#PBS -m b
#PBS -T intmpi
#PBS -l cpunum_job=8
#PBS -v OMP_NUM_THREADS=1
#PBS -l elapstim_req=00:10:00
#PBS -e ERR
#PBS -o OUT
module load BaseCPU/2023
module load BasePy/2023
cd $PBS_O_WORKDIR
# Set the executable of the STATE code
ROOT_DIR=${HOME}/STATE
ln -fs ${ROOT_DIR}/src/state-5.6.14/src/STATE .
# Set the pseudopotential data
ln -fs ${ROOT_DIR}/gncpp/pot.C_pbe1
ln -fs ${ROOT_DIR}/gncpp/pot.O_pbe1
ln -fs ${ROOT_DIR}/gncpp/vdwdphi.dat_d0.1 vdwdphi.dat
# Set the working directory in the work directory and symbolic links to wave function and potential files
WORK_DIR=/sqfs/work/G15577/v60795/STATE/test/CO
mkdir -p ${WORK_DIR}
touch ${WORK_DIR}/zaj.data; ln -s ${WORK_DIR}/zaj.data
touch ${WORK_DIR}/potential.data; ln -s ${WORK_DIR}/potential.data
# Set the input/output file
INPUT_FILE=nfinp_scf
OUTPUT_FILE=nfout_scf
# Run!
mpirun ${NQSV_MPIOPTS} ./STATE < ${INPUT_FILE} > ${OUTPUT_FILE}
以下は上記ジョブスクリプトファイルの簡単な説明です。
--使用するshの宣言
#!/bin/bash
--使用するジョブクラスの指定([[使用可能なジョブクラス>計算機システムの使い方/squid_en/queues]])
#PBS -q DBG
--自分の所属するグループの指定(指導教員に確認)
#PBS --group=G15577
--使用する並列計算環境の指定(STATEの場合は主にintmpiを使用)
#PBS -T intmpi
--使用する全コア数の指定
#PBS -l cpunum_job=8
--スレッド並列数の指定
#PBS -v OMP_NUM_THREADS=1
(cpunum_job / OMP_NUM_THREADSがMPI並列数。大きい系ではOMP_NUM_THREADSは2~4を使用することが多い)
--実行時間の指定(入力ファイルでも実行時間を指定することを忘れないよう注意)
#PBS -l elapstim_req=00:10:00
--エラー出力ファイルの指定(上記の例ではERRというファイルにエラーが出力される)
#PBS -e ERR
--標準出力ファイルの指定(上記の例ではOUTというファイルメッセージが出力される)
#PBS -o OUT
--使用するモジュールの指定(プログラムをビルドした際のものと同じものを指定)
module load BaseCPU/2023
module load BasePy/2023
--プログラムを実行するディレクトリへの移動(特別な場合を除いては変更せずにこのまま使用)
cd $PBS_O_WORKDIR
--使用するSTATEの実行形式の指定
# Set the executable of the STATE code
ROOT_DIR=${HOME}/STATE
ln -fs ${ROOT_DIR}/src/state-5.6.14/src/STATE .
--使用する擬ポテンシャルの指定
# Set the pseudopotential data
ln -fs ${ROOT_DIR}/gncpp/pot.C_pbe1
ln -fs ${ROOT_DIR}/gncpp/pot.O_pbe1
--使用するvan der Waalsカーネルの指定(van der Waals density functionalを使用しない場合は不要)
ln -fs ${ROOT_DIR}/gncpp/vdwdphi.dat_d0.1 vdwdphi.dat
--Work領域を一時利用するためのディレクトリの作成と波動関数およびポテンシャルファイルへのシンボリックリンクの作成
# Set the working directory in the work directory and symbolic links to wave function and potential files
WORK_DIR=/sqfs/work/G15577/v60795/STATE/test/CO
mkdir -p ${WORK_DIR}
touch ${WORK_DIR}/zaj.data; ln -s ${WORK_DIR}/zaj.data
touch ${WORK_DIR}/potential.data; ln -s ${WORK_DIR}/potential.data
--入出力ファイルの指定
# Set the input/output file
INPUT_FILE=nfinp_scf
OUTPUT_FILE=nfout_scf
--STATEの実行
# Run!
mpirun ${NQSV_MPIOPTS} ./STATE < ${INPUT_FILE} > ${OUTPUT_FILE}
[[Quantum-ESPRESSOの場合の例>計算機システムの使い方/squid/job_script_qe]]
** プログラムの実行方法 [#ha220d6a]
前項のようなジョブスクリプトが用意できたらqsubを使ってジョブを投入します。
$ qsub run_co.sh
ジョブの実行状況を確認するにはqstatを使用します。
$ qstat
例えば計算開始前では以下のような結果が得られます。
RequestID ReqName UserName Queue Pri STT S Memory CPU Elapse R H M Jobs
--------------- -------- -------- -------- ---- --- - -------- -------- -------- - - - ----
619040.sqd run_co.s v60795 DBG-C 0 PRR - 0.00B 0.00 0 Y Y Y 1
ジョブをキャンセルするためにはqstatで表示されたRequestIDをqdelを使用してキャンセルします。
$ qdel 619040