Ralph Castain wrote:
>If someone tells us -bind-to-socket, but there is only one socket, then we really cannot bind them to anything. Any check by their code would reveal that they had not, in fact, been bound - raising questions as to whether or not OMPI is performing the request. Our operating standard has been to error out if the user specifies something we cannot do to avoid that kind of confusion. This is what generated the code in the system today.
>Now I can see an argument that -bind-to-socket with one socket maybe shouldn't generate an error, but that decision then has to get reflected in other code areas as well.
>But first we need to resolve the question: should this scenario return an error or not?
From the onset of the -bind-to-X functionality, -bind-to-board -byboard
for a single-board system would result in binding to everything|nothing
-- is the glass completely full or completely empty? In any case, no error.
Consider a single-board, two-socket, quad-core node and these command
lines with 1.3.4r22104:
% mpirun -H mynode -n 1 -bycore -bind-to-core -report-bindings ./a.out
% mpirun -H mynode -n 1 -bysocket -bind-to-socket -report-bindings ./a.out
% mpirun -H mynode -n 1 -byboard -bind-to-board -report-bindings ./a.out
The first binds to "cpus 0001", the second to "socket 0 cpus 000f", and
the third reports no bindings ("bind to everything") and no errors.