私のプログラムでは MPI+pthreads を使用しています。n-1 個の MPI プロセスは純粋な MPI コードですが、pthreads を使用する MPI プロセスは 1 つだけです。最後のプロセスには、2 つのスレッド (メイン スレッドと pthread ) しか含まれていません。このプログラムを実行したい HPC クラスターは、それぞれが 12 個のコアを持つ計算ノードで構成されているとします。ハードウェアを最大限に活用するには、バッチ スクリプトをどのように記述すればよいですか?
以下は、私が書いたバッチスクリプトです。最後の MPI プロセスには 2 つのスレッドがあり、他のプロセスにもそれぞれ 2 つのスレッドがあると想定する必要があるため、 export OMP_NUM_THREADS=2 を使用します。
次に、ノードごとに 6 つの MPI プロセスを割り当てるので、1 つの MPI プロセスを除くすべての MPI プロセスに 1 つのスレッドがあるにもかかわらず、各ノードは 6xOMP_NUM_THREADS = 12(=各ノードのコア数) のスレッドを実行できます。
#BSUB -J LOOP.N200.L1000_SIMPLE_THREAD
#BSUB -o LOOP.%J
#BSUB -W 00:10
#BSUB -M 1024
#BSUB -N
#BSUB -a openmpi
#BSUB -n 20
#BSUB -m xxx
#BSUB -R "span[ptile=6]"
#BSUB -x
export OMP_NUM_THREADS=2
このためのより良いスクリプトを作成するにはどうすればよいですか?