Just a couple of observations
1) Naively you can create a skeleton sbatch template which normal jobs would use by default, and another that multi-thread jobs must specifically request. Populate the templates via a wrapper script or submit plugin - use only sbatch, not srun. Other option would be to alias srun='srun --hint=nomultithread' and use the non-aliased srun by specifying full path. Not recommended, unless you educate your users to always use your wrappers/aliases or rename the srun/sbatch to hide the underlying actual commands.
2) I'd look into slurm.conf's *SelectTypeParameters=**CR_Core
*According to the man page:
Cores are consumable resources. On nodes with hyper-threads, each thread is counted as a CPU to satisfy a job's resource requirement, but multiple jobs are not allocated threads on the same core. The count of CPUs allocated to a job may be rounded up to account for every CPU on an allocated core.
So if you know the use case and you always need multithreads for same job, this might solve your issue.


On 01/06/2016 01:33 AM, Kris Kersten wrote:
SLURM, hyperthreads, and hints
I'm trying to better understand the use of SLURM with hyperthreads. On a system with hyperthreads enabled (i.e., in BIOS), by default SLURM presents all hyperthreads to a user application. The user can restrict an application to using a single hyperthread per core with the srun --hint=nomultithread option.

The documentation also states that the reverse is possible, that a user can request to use all hyperthreads per core by calling srun --hint=multithread. What I can't find is a configuration option to make the --hint=nomultithread behavior the default, so that multiple hyperthreads per core are made available only when specifically requested with --hint=multithread. Is this possible? something in slurm.conf? or elsewhere?

Thanks,
Kris


Reply via email to