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.
> Cheers,
> Loris
> -- 
> Dr. Loris Bennett (Mr.)
> ZEDAT, Freie Universität Berlin         Email loris.benn...@fu-berlin.de

Reply via email to