我的程序使用 MPI+pthreads,其中 n-1 个 MPI 进程是纯 MPI 代码,而唯一一个 MPI 进程使用 pthreads。最后一个进程只包含 2 个线程(主线程和 pthread)。假设我要在其上运行此程序的 HPC 集群由计算节点组成,每个计算节点有 12 个核心。我应该如何编写批处理脚本以最大限度地利用硬件?
以下是我编写的批处理脚本。我使用 export OMP_NUM_THREADS=2 因为最后一个 MPI 进程有 2 个线程,并且必须假设其他每个进程也有 2 个线程。
然后我为每个节点分配 6 个 MPI 进程,因此每个节点可以运行 6xOMP_NUM_THREADS = 12(=每个节点上的核心数)线程,尽管所有 MPI 进程只有一个有 1 个线程。
#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
我怎样才能为此编写更好的脚本?