We use srun internally to start the remote daemons. We construct a
nodelist from the user-specified inputs, and pass that to srun so it
knows where to start the daemons.


On Wednesday, February 23, 2011, Henderson, Brent
<brent.hender...@hp.com> wrote:
> SLURM seems to be doing this in the case of a regular srun: [brent@node1 
> mpi]$ srun -N 2 -n 4 env | egrep SLURM_NODEID\|SLURM_PROCID\|SLURM_LOCALID | 
> sortSLURM_LOCALID=0SLURM_LOCALID=0SLURM_LOCALID=1SLURM_LOCALID=1SLURM_NODEID=0SLURM_NODEID=0SLURM_NODEID=1SLURM_NODEID=1SLURM_PROCID=0SLURM_PROCID=1SLURM_PROCID=2SLURM_PROCID=3[brent@node1
>  mpi]$ Since srun is not supported currently by OpenMPI, I have to use salloc 
> – right?  In this case, it is up to OpenMPI to interpret the SLURM 
> environment variables it sees in the one process that is launched and ‘do the 
> right thing’ – whatever that means in this case.  How does OpenMPI start the 
> processes on the remote nodes under the covers?  (use srun, generate a 
> hostfile and launch as you would outside SLURM, …)  This may be the 
> difference between HP-MPI and OpenMPI. Thanks, Brent  From: 
> users-boun...@open-mpi.org [mailto:users-boun...@open-mpi.org] On Behalf Of 
> Ralph Castain
> Sent: Wednesday, February 23, 2011 10:07 AM
> To: Open MPI Users
> Subject: Re: [OMPI users] SLURM environment variables at runtime Resource 
> managers generally frown on the idea of any program passing RM-managed envars 
> from one node to another, and this is certainly true of slurm. The reason is 
> that the RM reserves those values for its own use when managing remote nodes. 
> For example, if you got an allocation and then used mpirun to launch a job 
> across only a portion of that allocation, and then ran another mpirun 
> instance in parallel on the remainder of the nodes, the slurm envars for 
> those two mpirun instances -need- to be quite different. Having mpirun 
> forward the values it sees would cause the system to become very confused. We 
> learned the hard way never to cross that line :-( You have two options: (a) 
> you could get your sys admin to configure slurm correctly to provide your 
> desired envars on the remote nodes. This is the recommended (by slurm and 
> other RMs) way of getting what you requested. It is a simple configuration 
> option - if he needs help, he should contact the slurm mailing list (b) you 
> can ask mpirun to do so, at your own risk. Specify each parameter with a "-x 
> FOO" argument. See "man mpirun" for details. Keep an eye out for aberrant 
> behavior. Ralph On Wed, Feb 23, 2011 at 8:38 AM, Henderson, Brent 
> <brent.hender...@hp.com> wrote:Hi Everyone, I have an OpenMPI/SLURM specific 
> question, I’m using MPI as a launcher for another application I’m working on 
> and it is dependent on the SLURM environment variables making their way into 
> the a.out’s environment.  This works as I need if I use HP-MPI/PMPI, but when 
> I use OpenMPI, it appears that not all are set as I would like across all of 
> the ranks. I have example output below from a simple a.out that just writes 
> out the environment that it sees to a file whose name is based on the node 
> name and rank number.  Note that with OpenMPI, that things like SLURM_NNODES 
> and SLURM_TASKS_PER_NODE are not set the same for ranks on the different 
> nodes and things like SLURM_LOCALID are just missing entirely. So the 
> question is, should the environment variables on the remote nodes (from the 
> perspective of where the job is launched) have the full set of SLURM 
> environment variables as seen on the launching node? Thanks, Brent Henderson 
> [brent@node2 mpi]$ rm node*[brent@node2 mpi]$ mkdir openmpi hpmpi[brent@node2 
> mpi]$ salloc -N 2 -n 4 mpirun ./printenv.openmpi salloc: Granted job 
> allocation 23Hello world! I'm 3 of 4 on node1Hello world! I'm 2 of 4 on 
> node1Hello world! I'm 1 of 4 on node2Hello world! I'm 0 of 4 on node2salloc: 
> Relinquishing job allocation 23[brent@node2 mpi]$ mv node* 
> openmpi/[brent@node2 mpi]$ egrep 
> 'NODEID|NNODES|LOCALID|NODELIST|NPROCS|PROCID|TASKS_PER' openmpi/node1.3.of.4 
> SLURM_JOB_NODELIST=node[1-2]SLURM_NNODES=1SLURM_NODELIST=node[1-2]

Reply via email to