ジョブスクリプトの例
以下では、より具体的な場合を想定した、ジョブスクリプトの例を示します。
自動並列化のジョブスクリプト例
1行目: #!/bin/csh
2行目: # sample script for auto-parallel job
3行目: #PBS -q SMALL
4行目: #PBS -N parallel_job
5行目: #PBS -j oe
6行目: #PBS -l select=1:ncpus=4
7行目:
8行目: setenv OMP_NUM_THREADS 4
9行目: cd $PBS_O_WORKDIR
10行目: ifort -O2 -o sample sample.f -parallel
11行目: ./sample
1行目: 1行目でCシェルスクリプトであることを示します。
2行目: 一般のシェルスクリプトと同様、先頭が # であればコメントとみなします。
3行目: -q オプションでキューを指定します。
4行目: -N オプションでバッチのジョブ名を指定します。
5行目: -j オプションで標準出力と標準エラー出力をまとめて標準出力に出力します。
6行目: -l select=1:の後に続いてncpus オプションでジョブで使用するCPUを確保します。
ここではジョブ実行に必要なCPU数を指定してください。(不必要に多くのCPU数を指定しないでください。)
7行目: 空白行は何も行いません。
8行目: OpenMPプログラムにおいて並列化ジョブを実行する場合、環境変数 OMP_NUM_THREADS によるCPU数の指定が必要です。
特に理由がなければ、ncpus オプションで指定したCPU数と同じにしてください。
9行目: qsubコマンドを実行したディレクトリへ移動します。
10行目: 自動並列化オプション -parallel とともにIntelコンパイラでコンパイルします。
11行目: プログラムを実行します。
MPIプログラムのジョブスクリプト例
1行目: #!/bin/csh
2行目: # sample script for MPI job
3行目: #PBS -q MEDIUM
4行目: #PBS -M user@xxx.xxx.jp
5行目: #PBS -m e
6行目: #PBS -l select=1:ncpus=8
7行目: #PBS -W depend=afterok:JobID
8行目:
9行目: cd $PBS_O_WORKDIR
10行目: icc -O2 -o sample sample.f -lmpi
11行目: mpirun -np 8 dplace -s1 ./sample
1行目: 1行目でCシェルスクリプトであることを示します。
2行目: 一般のシェルスクリプトと同様、先頭が # であればコメントとみなします。
3行目: -q オプションで、キューを指定します。
4行目: -M オプションで、メールアドレスを指定します。
5行目: -m オプションで、ジョブ終了後にメールを送信します。
6行目: -l select=1:の後に続いてncpus オプションでジョブで使用するCPUを確保します。
ここではジョブ実行に必要なCPU数を指定してください。(不必要に多くのCPU数を指定しないでください。)
7行目: -W depend オプションで、JobIDのジョブがエラーなく終了した後にのみ実行するように、スケジュールされます。
8行目: 空白行は何も行いません。
9行目: qsubコマンドを実行したディレクトリへ移動します。
10行目: MPIライブラリ(-lmpi)をリンクして、Intelコンパイラでコンパイルします。
11行目: mpirun コマンドでプログラムを実行します。使用するCPU数は -np オプションで指定します。
ncpus オプションと同じCPU数にしてください。また、性能向上のため、MPIプログラムの場合には実行CPU数に関係なく、dplace コマンドの -s1 オプションを使用してください。
Gaussianのジョブスクリプト例
1行目: #!/bin/csh
2行目: # sample script for Gaussian job
3行目: #PBS -q MEDIUM
4行目: #PBS -N g03_job
5行目: #PBS -l select=1:ncpus=2:mem=16gb
6行目:
7行目: cd $PBS_O_WORKDIR
8行目: rung03 test100.com output
1行目: 1行目でCシェルスクリプトであることを示します。
2行目: 一般のシェルスクリプトと同様、先頭が # であればコメントとみなします。
3行目: -q オプションで、キューを指定します。
4行目: -N オプションで、バッチのジョブ名を指定します。
5行目: -l select=1:の後に続いてncpusとmem
オプションでジョブで必要なCPU数とメモリサイズを指定します。
6行目: 空白行は何も行いません。
7行目: qsubコマンドを実行したディレクトリへ移動します。
8行目: rung03 コマンドにより Gaussian ジョブを実行します。
MaterialsStudio/CASTEPのジョブスクリプト例
1行目: #!/bin/csh
2行目: # sample script for MS_CASTEP
3行目: #PBS -q LONG
4行目: #PBS -N CASTEP_job
5行目: #PBS -l select=1:ncpus=2
6行目: cd $PBS_O_WORKDIR
7行目: RunCASTEP.sh -np 2 BaseName
1行目: 1行目でCシェルスクリプトであることを示します。
2行目: 一般のシェルスクリプトと同様、先頭が # であればコメントとみなします。
3行目: -q オプションで、キューを指定します。
4行目: -N オプションで、バッチのジョブ名を指定します。
5行目: -l select=1:の後に続いてncpus オプションでジョブで使用するCPUを確保します。
ここではジョブ実行に必要なCPU数を指定してください。
CPUの上限はバッチキューの制限に従ってください。
6行目: qsubコマンドを実行したディレクトリへ移動します。
7行目: RunCASTEP.sh コマンドにより MS CASTEPジョブを実行します。5行目のncpusオプションで指定したCPU数を、icrCASTEP.shコマンドの-npオプションで指定してください。
(CPU数の指定がない場合は、シングルCPUでの計算処理になります。)
MaterialsStudio/Discoverのジョブスクリプト例
1行目: #!/bin/csh
2行目: # sample script for MS_Discover
3行目: #PBS -q SHORT
4行目: #PBS -N Discover_job
5行目: #PBS -l select=1:ncpus=2
6行目: cd $PBS_O_WORKDIR
7行目: RunDiscover.sh -np 2 BaseName
1行目: 1行目でCシェルスクリプトであることを示します。
2行目: 一般のシェルスクリプトと同様、先頭が # であればコメントとみなします。
3行目: -q オプションで、キューを指定します。
4行目: -N オプションで、バッチのジョブ名を指定します。
5行目: -l select=1:の後に続いてncpus オプションでジョブで使用するCPUを確保します。
ここではジョブ実行に必要なCPU数を指定してください。
CPUの上限はバッチキューの制限に従ってください。
6行目: qsubコマンドを実行したディレクトリへ移動します。
7行目: RunDiscover.sh コマンドにより MS Discoverジョブを実行します。5行目のncpusオプションで指定したCPU数を、icrDiscover.shコマンドの-npオプションで指定してください。
(CPU数の指定がない場合は、シングルCPUでの計算処理になります。)
インタラクティブバッチジョブの例
1. バッチジョブを実行するキューや使用するリソースを指定するとともに、インタラクティブであることを示す -Iオプションを指定するためのジョブスクリプトを作成します。なお、スクリプト内の指示は処理されますが、実行可能コマンドはすべて破棄されます。
altix74% cat interactive.qsub
#!/bin/csh
#PBS -q MEDIUM
#PBS -j oe
#PBS -l select=1:ncpus=6
#PBS -I
2. qsub コマンドによりジョブスクリプトを実行します。割り当てられたジョブIDが表示されます。
altix75% qsub interactive.qsub
qsub: waiting for job 194.a451 to start
qsub: job 194.a451 ready
3. ジョブの実行中は、qsub を実行している端末セッションからジョブへの入力を行います。以下の例は、端末セッションにてジョブの入力を行っています。
altix13% mpirun -np 6 dplace -s1 ./a.out
I am process 0. Total number of processes: 6
4. ジョブを投入した時点では、インタラクティブバッチジョブは終了しません。終了させるには、そのバッチジョブを qdelで削除するか、qsub自体によって解釈される特殊シーケンス 〜. を入力します。
altix14% ( 〜. は特殊シーケンスであるため入力時は画面に表示されません。)
|