在 XE6 等 Cray 计算机上,当通过 aprun 启动混合 MPI/pthreads 应用程序时,有一个深度参数表示每个进程可以生成的线程数。例如,
aprun -N2 -n12 -d5
每个进程可以产生 5 个操作系统将分发的线程。
使用 Slurm 的 srun 启动 OpenMPI/pthread 应用程序时是否有类似的选项?该机器是具有 nehalem 处理器和 IB 互连的通用 HP 集群。线程支持级别是否只有 MPI_THREAD_FUNNELED 是否重要?
这是我用来启动混合 MPI-OpenMP 作业的脚本。这n
是节点数和t
线程数。
sbatch <<EOF
#!/bin/bash
#SBATCH --job-name=whatever
#SBATCH --threads-per-core=1
#SBATCH --nodes=$n
#SBATCH --cpus-per-task=$t
#SBATCH --time=48:00:00
#SBATCH --mail-type=END
#SBATCH --mail-user=blabla@bibi.zz
#SBATCH --output=whatever.o%j
. /etc/profile.d/modules.sh
module load gcc
module unload openmpi
module load mvapich2
export OMP_NUM_THREADS=$t
export LD_LIBRARY_PATH=/apps/eiger/Intel-CPP-11.1/mkl/lib/em64t:${LD_LIBRARY_PATH}
mpiexec -np $n myexe
EOF
希望能帮助到你
您通常使用 选择 MPI 进程--ntasks
数和每个进程的线程数--cpu-per-task
。如果您请求--ntasks=2
and --ncpus-per-task=4
,则 slurm 将在一个节点或两个节点上分配 8 个 cpu,每个节点四个核心,具体取决于资源可用性和集群配置。
如果您指定--nodes
而不是--ntasks
,Slurm 将为每个节点分配一个进程,就像您选择 一样--ntask-per-node=1
。