Created attachment 1709 [details] current slurm.conf Hello, Using slurm-15.08.0-0pre2.el6.x86_64. Is there a way I can set the allocated cores to be more serial? It seems that slurm currently allocates cores between each cpu to fill up a node hoping between each physical cpu until the node cores are all used. For example, using srun: [dmk@gambit collective]$ srun -n 64 osu_allgather H H MPT DSM information MPT MPI_DSM_DISTRIBUTE enabled grank lrank pinning node name cpuid 0 0 no r1i0n0 0 1 1 no r1i0n0 16 2 2 no r1i0n0 1 3 3 no r1i0n0 17 4 4 no r1i0n0 2 5 5 no r1i0n0 18 6 6 no r1i0n0 3 7 7 no r1i0n0 19 8 8 no r1i0n0 4 9 9 no r1i0n0 20 10 10 no r1i0n0 5 I would like to be able to run a job such as this, so that cores are selected serially. [dmk@gambit collective]$ mpirun r1i0n0,r1i0n1 -np 32 ./osu_allgather H H MPT DSM information MPT MPI_DSM_DISTRIBUTE enabled grank lrank pinning node name cpuid 0 0 yes r1i0n0 0 1 1 yes r1i0n0 1 2 2 yes r1i0n0 2 3 3 yes r1i0n0 3 4 4 yes r1i0n0 4 5 5 yes r1i0n0 5 6 6 yes r1i0n0 6 7 7 yes r1i0n0 7 8 8 yes r1i0n0 8 9 9 yes r1i0n0 9 10 10 yes r1i0n0 10 Thanks! dmk
Will you try srun -m block:block. And you may also try adding CR_Pack_Nodes to your SelectTypeParameters. Let me know how these work for you. Thanks, Brian
Ah perfect. the srun -m block:block lined the core allocation properly. I wasn't able to view a difference with the CR_Pack_Nodes. Is there an environment variable I can set to make -m block:block the default? Thank you! dmk
Checkout the SLURM_DISTRIBUTION env variable. You can see the available env variables on the srunan page.
Excellent, Thank you!
Glad to help.
Hi Brian, for consistencies sake, is there a way to get the core allocation to start from 0? It seems slurm now allocates cores on a node from the highest core count to the lowest. [dmk@gambit collective]$ srun -n 10 osu_allgather H H MPT DSM information MPT MPI_DSM_DISTRIBUTE enabled grank lrank pinning node name cpuid 0 0 no r1i0n0 22 1 1 no r1i0n0 23 2 2 no r1i0n0 24 3 3 no r1i0n0 25 4 4 no r1i0n0 26 5 5 no r1i0n0 27 6 6 no r1i0n0 28 7 7 no r1i0n0 29 8 8 no r1i0n0 30 9 9 no r1i0n0 31
I've reopened the ticket while I research why block:block allocates backwards. I'll let you know what I find.
Hi guys, I wondered about this myself when I was working on the code in select/cons_res. It seems to be a decision by the original cons_res developers (HP). There is a cryptic comment in _block_sync_core_bitmap that says "search for the best socket starting from the last one to let more room in the first one for system usage." Maybe there is some performance advantage from trying to leave lower-numbered sockets/cores/cpus for system processes??? To answer David's question, I don't think there is a way to request a lowest-to-highest ordering for block allocation. Martin
This was just fixed in: https://github.com/SchedMD/slurm/commit/f43992a87978be9646536718b767e7c70596cc0d