プログラムの実行方法

ジョブスクリプトの書き方

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
    • 使用するジョブクラスの指定(使用可能なジョブクラス)
      #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の場合の例

プログラムの実行方法

前項のようなジョブスクリプトが用意できたら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
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-02-20 (火) 22:33:17 (78d)