Open MPI currently has minimal use of hidden "progress" threads, but
we will likely be experimenting with more usage of them over time
(previous MPI implementations have shown that progress threads can be
a big performance win for large messages, although they do tend to
add a bit of latency).
To answer your direct question, when you ask Open MPI for N processes
(E.g., "mpirun -np <n> a.out"), you'll get N unix processes. Open
MPI will not create N threads (or split threads across nodes without
oversubscription such that you get a total of N ranks in
Previous MPI implementations have tried this kind of scheme
(launching threads as MPI processes), but (IMHO) it violated the Law
of Least Astonishment (see http://www.canonical.org/~kragen/tao-of-
programming.html) in that the user's MPI application was then subject
to the constraints of multi-threaded programming.
So most (all?) modern MPI implementations that I am aware of deal
with operating system processes as individual MPI_COMM_WORLD ranks
(as opposed to threads).
On Mar 21, 2007, at 5:29 PM, David Burns wrote:
> I have used POSIX threading and Open MPI without problems on our
> 2216 Cluster (4 cores per node). Moving to core-level parallelization
> with multi threading resulted in significant performance gains.
> Sam Adams wrote:
>> I have been looking, but I haven't really found a good answer about
>> system level threading. We are about to get a new cluster of
>> dual-processor quad-core nodes or 8 cores per node. Traditionally I
>> would just tell MPI to launch two processes per dual processor single
>> core node, but with eight cores on a node, having 8 processes seems
>> My question is this: does OpenMPI sense that there are multiple cores
>> on a node and use something like pthreads instead of creating new
>> processes automatically when I request 8 processes for a node, or
>> should I run a single process per node and use OpenMP or pthreads
>> explicitly to get better performance on a per node basis?
> users mailing list