2011-09-22 190 views
1

在Cray计算机(如XE6)上,通过aprun启动混合MPI/pthreads应用程序时,会有深度参数指示每个进程可以产生的线程数。例如,使用slurm启动OpenMPI/pthread应用程序

aprun -N2 -n12 -d5 

每个进程可以产生5个线程,OS将分配这些线程。

使用Slurm的srun启动OpenMPI/pthread应用程序时是否有类似的选项?该机器是一个通用惠普集群,带有Nehalem处理器和IB互连。如果线程支持级别仅为MPI_THREAD_FUNNELED,那么这很重要吗?

回答

4

这是我用来启动混合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 [email protected] 
#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 

希望它可以帮助

0

您通常选择MPI进程与--ntasks数量,每个进程的线程与--cpu-per-task数量。如果您请求--ntasks=2--ncpus-per-task=4,则slurm将根据资源可用性和群集配置,在一个节点或两个节点上分配每个四个核心的8个cpu。

如果指定--nodes而不是--ntasks,则Slurm将为每个节点分配一个进程,就像选择--ntask-per-node=1一样。