jsquyres_at_[hidden] wrote:
> On Feb 2, 2007, at 6:02 AM, Davide Cesari wrote:
>
>> If the second holds, then your request is pointless, in my knowledge,
>> LAM does not make anything particular to attach processes to CPUs in a
>> SMP system, it just starts as many processes as requested, then it
>> is up
>> to the operating system to balance them among the available
>> processors,
>
> This is correct. LAM simply starts up the Right number of processes
> and does not bind them to any particular CPUs.
>
>> this is the essence of Symmetric Multi Processing; AFAIK, there is no
>> such a concept (and no need too) of starting a process on a particular
>> CPU in a plain SMP system.
>
>> If you are using the Linux kernel, then recent versions should have a
>> tunable scheduler which tries to attach processes to CPUs as much as
>> possible (the so-called CPU affinity) to improve performance on
>> SMP, but
>> it is not guaranteed either that a given process will always run on
>> the
>> same CPU.
>> If you have a NUMA (Non Uniform Memory Access) system, then things
>> are
>> more complex, but I have no direct experience of that.
Most recent linux versions include a useful taskset command:
mpirun -np 8 taskset -c 8-15 ./a.out
which should be fairly effective at placing your processes on that group
of processors within each node. The purpose of using taskset usually is
to improve efficiency through cache or NUMA memory affinity, but it
could be used to do what OP appears to be requesting.
The latest schedulers, included in RHEL4_U4 and CentOS 4.4, generally
accomplish efficient scheduling without requiring taskset, but that
doesn't appear to be what OP is asking.
|