It’s simple, tell folks only to use -n for mpi jobs, and -c otherwise
It’s a big deal if folks use -n when it’s not an mpi program. This is because
the non mpi program is launched n times (instead of once with internal threads)
and will stomp over logs and output files (uncoordinated) leading to poor
performance and incorrect results.
> On Feb 22, 2018, at 1:52 AM, Loris Bennett <loris.benn...@fu-berlin.de> wrote:
> Hi Chris,
> Christopher Samuel <ch...@csamuel.org> writes:
>>> On 22/02/18 18:49, Miguel Gutiérrez Páez wrote:
>>> What's the real meaning of ntasks? Has cpus-per-task and ntasks the
>>> same meaning in sbatch and srun?
>> --ntasks is for parallel distributed jobs, where you can run lots of
>> independent processes that collaborate using some form of communication
>> between the processes (usually MPI for HPC).
>> So inside your batch script you would use "srun" to start up the tasks.
>> However, unless you code is written to make use of that interface then
>> it's not really going to help you, and so for any multithreaded
>> application you need to use --cpus-per-task instead.
> [snip (11 lines)]
> But does it make any difference for a multithreaded program if I have
> #SBATCH --ntasks=4
> #SBATCH --nodes=1-1
> rather than
> #SBATCH --ntasks=1
> #SBATCH --cpus-per-task=4
> Up to now I have only thought of --cpus-per-task in connection with
> hybrid MPI/OpenMP jobs, which we don't actually have. Thus I tend to
> tell users to think always in terms of tasks, regardless of whether
> these are MPI processes or just threads.
> One downside of my approach is that if the user forgets to specify
> --nodes and --ntasks is greater than 1, non-MPI jobs can be assigned to
> multiple nodes.
> Dr. Loris Bennett (Mr.)
> ZEDAT, Freie Universität Berlin Email loris.benn...@fu-berlin.de