SQUIDの汎用CPUノード群は1ノード76コアを搭載していますが、1つのプログラム中で全てのコアを使わないケースもあるかと思います。このような場合は、1つのジョブで複数のプログラムを実行することで、計算資源を有効に使用することができます。
ジョブスクリプト例:1ジョブで4つの逐次処理プログラムを実行
-
OpenMPやMPIなどで並列化していない4つのプログラム(a.out~d.out)を1つのジョブで実行します。
1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/bash #PBS -q SQUID #PBS --group=【グループ名】 #PBS -l elapstim_req=1:00:00 cd $PBS_O_WORKDIR ./a.out & ./b.out & ./c.out & ./d.out wait |
ジョブスクリプト例:1ジョブで4つのOpenMPプログラムを実行
-
OpenMPや自動並列で並列化した4つのプログラム(a.out~d.out)を1つのジョブで実行します。a.outは8並列、b.outは4並列、c.outは2並列、d.outは並列なしで実行しています。すべて同じ並列数にする場合は、最初に1回(下記例で言うところのexport OMP_NUM_THREADS=8)だけ指定してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash #PBS -q SQUID #PBS --group=[グループ名] #PBS -l elapstim_req=1:00:00 cd $PBS_O_WORKDIR module load BaseCPU export OMP_NUM_THREADS=8 ./a.out & export OMP_NUM_THREADS=4 ./b.out & export OMP_NUM_THREADS=2 ./c.out & export OMP_NUM_THREADS=1 ./d.out wait |
ジョブスクリプト例:1ジョブで2つのMPIプログラムを実行
-
MPIで並列化した2つのプログラム(a-mpi.out,b-mpi.out)を1つのジョブで実行します。汎用CPUノード群3ノードを使って、a-mpi.outは76並列、b-mpi.outは152並列で実行しています。
1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/bash #PBS -q SQUID #PBS --group=【グループ名】 #PBS -T intmpi #PBS -l elapstim_req=1:00:00 #PBS -b 3 #------- Program execution ----------- module load BaseCPU export I_MPI_DEBUG=4 cd $PBS_O_WORKDIR mpirun ${NQSV_MPIOPTS} -np 76 ./a-mpi.out : -np 152 ./b-mpi.out |