Quick Start (バッチ処理)

はじめに

以下ではユーザ名を USER とします. 適宜, 自分のユーザ名に読み替えて下さい.

また, 以下のような "$" から始まるブロックは, ターミナル上でコマンドを実行することを示します.

$ pwd

システムへのデータ転送

まず, システムに必要なファイルを転送する.

  • 方法 2: JupyterLab 以外の方法. 手元の PC にある test.c と, データの入ったディレクトリ data を scp コマンドで転送する.

    $ scp -r test.c data USER@pbs.epi.it.matsue-ct.jp:~/

    なお,データ転送には scp コマンドや rsync コマンドだけでなく, FileZilla や WinSCP などのアプリを用いることもできる.

システムへログイン

  • 方法 2: ターミナルソフトを利用. Windows では putty や teraterm が使えるでしょう. Mac ではターミナルが使えるでしょう.

    $ ssh -l USER pbs.epi.it.matsue-ct.jp


注) 方法 1 ですが,JupyterLab ではブラウザによってターミナルで文字が打てないという現象が知られています (Mac の safari など. chrome や firefox では問題ないようです).

ジョブ管理システム (PBS) を用いたプログラムの実行

ジョブスクリプトの準備

ジョブスクリプトを作成する. /work/SAMPLES 以下に例があるのでそれを活用すると良い. 以下では, システムで用意されているジョブスクリプトと python プログラムを実行する場合を示します.

$ cd                                     (ホームディレクトリへ移動)
$ cp -r /work/SAMPLES/Python-venv ./   (サンプルをコピー)
$ cd Python-venv/

フォルダ内の job01.sh, job02.sh がジョブスクリプトである. cat コマンドなどで中身を確認することができます.

$ cat job01.sh

  #!/bin/sh

  #PBS -q gpu
  #PBS -l select=1:ncpus=1:ngpus=1

  # ジョブを実行したディレクトリに移動
  cd $PBS_O_WORKDIR

  # 開始処理. venv 環境をアクティベート.
  . /work/ENV/matsue-ct/venv/bin/activate

  # python プログラムの実行
  python tensorflow2-sample.py 

  # 終了処理. venv 環境をディアクティベート.
  deactivate

自分のプログラムを実行する場合は,プログラムを実行する部分 (python tensorflow2-sample.py) の部分を書き換えて下さい.ファイル編集に用いるエディタとしては vi, emacs, nano などが使えます (自分の PC へ scp して編集してから戻しても良い).

オプションで select=1 (1 ノード利用) や ngpus=1 (Tesla V100S 1 基利用) となっていることを確認すること. CPU 1 コアのみ使う場合は ncpus=1 となっていれば良いが, もし, MPI や OpenMP で並列化する場合は ncpus, mpiprocs, ompthreads の指定を変更する必要がある.

補足:メール送信する場合

ジョブ実行時・終了時にメールを送る場合は ジョブファイルに -M, -m オプションを追記する. 但し, メールアドレスとして学内のものを指定すること. 学外のメールアドレスは使えません.

#PBS -M XXXX@matsue-ct.jp             <= メールアドレスを指定
#PBS -m abe                           <= これは変えないで良い

ジョブの投入と実行状況の確認.

qsub コマンドでジョブを投入する. ジョブスクリプト job.sh を qsub の引数として与える.

$ qsub job01.sh

  171.ncsv4           <=  ジョブに番号がつく

ジョブの状況の確認には qstat コマンドを使う. なお, qstat -s とすると実行ノードなども確認できる. Status が R ならば実行中, H ならば実行待ちである.

$ qstat

  Job id            Name             User              Time Use S Queue
  ----------------  ---------------- ----------------  -------- - -----
  171.pbs           job01.sh         sugiyama          05:00:00 R gpu             

(参考) ジョブの削除.

もしジョブを削除する場合は qdel コマンドを用いる. qdel コマンドの引数にジョブ番号 (XXX) を与えると, ジョブをキャンセルできる.

$ qdel XXX

$ qstat    (ジョブ番号が消えていることを確認)

実行結果の確認

qstat コマンドを実行して, 自分のジョブが表示されなければ計算が終了している.

計算が終了すると, 標準出力やエラー出力がファイル出力されます. ファイル名の末尾に .oXXX, .eXXX (XXX はジョブ番号) が付いているものが 標準出力やエラー出力である.

$ cat job.sh.o171 

  ...(略)...
  313/313 - 0s - loss: 0.0701 - accuracy: 0.9801

計算結果のデータ転送

計算結果は前述の「システムへのデータ転送」と同様な方法で行うことができます.