Hi, I would like to make good use of hyperthreaded processors and I already skimmed through a quantity of posts and documentation.
It is pretty clear that Slurm likes to allocate processing units up to the core level, and to be able to allocate threads one has to either : - not declare Sockets/Core/Threads at all, only CPUS and use SelectTypeParameters=CR_CPU_Memory - resort to some trickery to declare threads as cores However, the two options have shortcomings : By not declaring S/C/T, options like --ntasks-per-core seem to get ignored, but some programs would benefit from being able to be isolated on their cores. Not declaring S/C/T (e.g. C=C*T;T=1) as they are in reality also seems to mess up CPU binding since Slurm does not have a real view on the node's topology. When S/C/T are properly declared (with SelectTypeParameters= CR_Core_Memory), I run into other problems since the allocator thinks I want 2 CPUS even if I asked for --ntasks=1. In combination with --mem- per-cpu, this leads to twice memory allocated as was asked for (which resembles bug #3879). Finally, while the documentation explains in several places that processing units should be allocated best by core, I miss an explanation on why. Any other options/advice ? Feel free to correct me if I didn't get something right. Thanks, J.C. Haessig