プログラムの実行方法

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

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 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
    • 入出力ファイルの指定
      # 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