--map-by slot:PE=n fails for n=4 even though

11 views
Skip to first unread message

Noam Bernstein

unread,
Apr 20, 2026, 12:56:56 PMApr 20
to Open MPI users
Can anyone tell me why this works (i.e. I have 64 cores available)
     mpiexec -n 64  --report-bindings --bind-to core --rank-by core --map-by core --mca pml ucx --mca osc ucx --mca btl ^vader,tcp,openib exec
with the expected bindings while this (should also take 16 * 4 = 64 cores)
      mpiexec -n 16  --report-bindings --bind-to core --rank-by core --map-by slot:PE=4 --mca pml ucx --mca osc ucx --mca btl ^vader,tcp,openib exec

Fails with:

A request was made to bind to that would result in binding more
processes than cpus on a resource:

   Bind to:     CORE
   Node:        compute-7-4
   #processes:  2
   #cpus:       1

You can override this protection by adding the "overload-allowed"
option to your binding directive.

Noam Bernstein

unread,
Apr 20, 2026, 1:44:35 PMApr 20
to Open MPI users, Noam Bernstein
Specifically, this is happening on 32 core nodes, and it looks like the second syntax refuses to see the second node.  

The first syntax shows one task bound to each physical core on one node, then one to each physical core on the second node. 

The second works up to 8 tasks, and each are bound to 4 cores on the first node, but as soon as I exceed that it complains, perhaps because it's trying to bind the tasks that are supposed to be on the 2nd node to the 1st node's cores.

This is openmpi 4.1.4, on Rocky 8, BTW

Noam Bernstein

unread,
Apr 20, 2026, 1:49:22 PMApr 20
to Open MPI users, Noam Bernstein
I'm testing 4.1.8 now

Noam Bernstein

unread,
Apr 20, 2026, 1:57:25 PMApr 20
to Open MPI users, Noam Bernstein
Identical behavior for 4.1.8

Noam Bernstein

unread,
Apr 22, 2026, 5:05:33 PMApr 22
to Open MPI users, Noam Bernstein
Does anyone know of a clean way to get binding of each MPI task to a subset of cores (to match the number of OpenMP threads) to work with openmpi 4.1.x? I've gotten it to work by writing a hostfile manually, but that seems cumbersome.  None of the things I've tried based on the docs work when I have more than 1 node - they all claim I'm trying to oversubscribe cores.

Reply all
Reply to author
Forward
0 new messages