3
votes

I'm having a bit of a trouble in understanding the following basic concepts:

  • When MPI assigns a rank to identify a computation, who exactly gets assigned the rank: a process, a thread, a cpu, etc?
  • How do I specify that I want to run a mpi job on X amount of cpus, while using slurm, all the parameters I see are for using nodes?
  • What is the difference between using mpirun and using srun?
  • Can I ran an mpi job across multiple partitions?
1
Most production MPI implementations that follow the latest published version of the standard (MPI 3.1) assign ranks to processes. The ability to address individual threads via the so-called endpoints is probably going to become part of MPI 4.0. The rest of the questions are off-topic and do not belong to Stack Overflow.Hristo Iliev

1 Answers

1
votes

When MPI assigns a rank to identify a computation, who exactly gets assigned the rank: a process, a thread, a cpu, etc?

A process

How do I specify that I want to run a mpi job on X amount of cpus, while using slurm, all the parameters I see are for using nodes?

Use the --ntasks parameter

What is the difference between using mpirun and using srun?

Both are used to launch processes on the remote nodes. The former is provided by your MPI implementation while the later is offered by Slurm. Whether or not you can use Slurm's srun to start your MPI job depends on the MPI implementation. See here for details.

Can I ran an mpi job across multiple partitions

No. Slurm will always allocate nodes from a single partition to a job