Ralph Castain wrote:

On Apr 12, 2010, at 8:42 AM, Eugene Loh wrote:
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.
Only because we haven't really implemented bind-to-board yet

Well, we have implemented it. It's accepted by "mpirun" and listed by "mpirun --help". So, there's a bug. Shall I fill a trac ticket?

- once we do (should that happen), then it would indeed generate an 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.


Reply via email to