Slurm';s srun比mpirun慢

Slurm';s srun比mpirun慢,mpi,slurm,Mpi,Slurm,我的mpi+openmp作业运行速度慢3倍,如果在以下情况下我将“mpirun”替换为“srun” #!bin/bash # #SBATCH --job-name=locstack4d_mpi #SBATCH --output=./res_locstack4d_mpi.txt # #SBATCH --ntasks=3 #SBATCH --cpus-per-task=16 #SBATCH --ntasks-per-node=1 #SBATCH --time=10:00 #SBATCH --mem-

我的mpi+openmp作业运行速度慢3倍,如果在以下情况下我将“mpirun”替换为“srun”

#!bin/bash
#
#SBATCH --job-name=locstack4d_mpi
#SBATCH --output=./res_locstack4d_mpi.txt
#
#SBATCH --ntasks=3
#SBATCH --cpus-per-task=16
#SBATCH --ntasks-per-node=1
#SBATCH --time=10:00
#SBATCH --mem-per-cpu=100
#SBATCH --verbose
export OMP_NUM_THREADS=28

mpirun  ./locstack4d  ./locstack4d_input.dat
mpi实施详情:

Version:                                 3.1
Release Date:                            Thu Feb 20 11:41:13 CST 2014
CC:                              gcc  -m64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC -Wl,-z,noexecstack 
CXX:                             g++  -m64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC -Wl,-z,noexecstack 
F77:                             gfortran -m64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC -Wl,-z,noexecstack 
F90:                             gfortran -m64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC -Wl,-z,noexecstack 
Configure options:                       '--disable-option-checking' '--prefix=/usr' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--enable-sharedlibs=gcc' '--enable-shared' '--enable-lib-depend' '--disable-rpath' '--enable-fc' '--with-device=ch3:nemesis' '--with-pm=hydra:gforker' '--includedir=/usr/include/mpich-x86_64' '--bindir=/usr/lib64/mpich/bin' '--libdir=/usr/lib64/mpich/lib' '--datadir=/usr/share/mpich' '--mandir=/usr/share/man/mpich' '--docdir=/usr/share/mpich/doc' '--htmldir=/usr/share/mpich/doc' '--with-hwloc-prefix=system' 'FC=gfortran' 'F77=gfortran' 'CFLAGS=-m64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC -O2' 'CXXFLAGS=-m64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC ' 'FCFLAGS=-m64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC ' 'FFLAGS=-m64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC -O2' 'LDFLAGS=-Wl,-z,noexecstack ' 'MPICH2LIB_CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' 'MPICH2LIB_CXXFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' 'MPICH2LIB_FCFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' 'MPICH2LIB_FFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'target_alias=x86_64-redhat-linux-gnu' '--cache-file=/dev/null' '--srcdir=.' 'CC=gcc' 'LIBS=-lrt -lpthread ' 'CPPFLAGS= -I/builddir/build/BUILD/mpich-3.1-rh/src/mpl/include -I/builddir/build/BUILD/mpich-3.1-rh/src/mpl/include -I/builddir/build/BUILD/mpich-3.1-rh/src/openpa/src -I/builddir/build/BUILD/mpich-3.1-rh/src/openpa/src -I/builddir/build/BUILD/mpich-3.1-rh/src/mpi/romio/include'
Process Manager:                         pmi
Launchers available:                     ssh rsh fork slurm ll lsf sge manual persist
Topology libraries available:            hwloc
Resource management kernels available:   user slurm ll lsf sge pbs cobalt
Checkpointing libraries available:       
Demux engines available:                 poll select

如果slurm配置了任务关联,并且不知道超线程,那么它将不允许任何作业使用超过请求的CPU/内核。因此,如果您每个任务请求16个CPU,Slurm将限制您的CPU数量


根据MPI实现,应用程序可能没有绑定到请求的资源,因此比使用srun运行更快。

您的MPI实现可能没有正确使用Slurm的PMI,导致生成三个独立的单cpu进程,而不是预期的三cpu作业。您需要确保MPI版本和Slurm版本兼容(例如OpenMPI>=1.5和Slurm>=2.6),并且OpenMPI是使用Slurm支持编译的(请参阅)

需要有关硬件和软件的详细信息。亲和力可能是一个问题。我使用的小型计算机集群都是相同的平台和操作系统:Intel Xeon处理器E5-2640(15M缓存,2.50 GHz,7.20 GT/s Intel QPI),内核数:6。物理记忆;128GB。Centos Linux。这不是细节。需要的是:CPU类型。编译器和OpenMP植入版本。操作系统版本。MPI实现细节。我写了关于CPU的文章。操作系统Centos 6.6。内核版本:2.6.32-504.3.3.el6.x86_64。编译器:gcc 4.4.7 20120313(Red Hat 4.4.7-11)。OpenMP版本3.1。我编辑了关于MPI实现细节的原始帖子。每个节点有多少内核?谢谢你的回答。我认为你说的确实是这样。但是,当我用“top”监视集群中各个主机上的程序运行时,我看到cpu使用率为2800%,这是我请求的线程数,对于mpirun和srun情况(本例中我只使用3台计算机),cpu使用率为100%。但是,srun几乎慢了整整3倍。我的代码在另一个stackexchange线程中(当它仍然有bug但几乎正确时):考虑到您使用的是3个节点,并且slurm的速度慢了3倍,使用srun时,您似乎运行了3次独立运行,而使用mpirun时,运行1次,运行3个节点。您是否可以检查运行Hello World并打印每个进程的秩id是否是这种情况?