Gabriele,
If you want to write portable MPI applications then I think you should
stick with what the standard say. In other words for hybrid
programming, and if only one thread will make MPI calls you need
either MPI_THREAD_FUNNELED or MPI_THREAD_SERIALIZED.
Now, that being said, I don't know any operating systems nor MPI
implementations that make strong assumptions about this. Not anymore !
Usually the thread support is either ON or OFF. MPI_THREAD_MULTIPLE is
the only one that will activate the internal locks in the MPI library.
For every other mode, you have to make sure that at ANY moment only
one thread is making ANY kind of MPI calls.
MPI_THREAD_SINGLE Only one thread will execute.
MPI_THREAD_FUNNELED The task can be multi-threaded, but only the
main thread
will make MPI calls (all MPI calls are
"funneled" to the
main thread).
MPI_THREAD_SERIALIZED The task can be multi-threaded and multiple
threads may
make MPI calls, but only one at a time: MPI
calls are not
made concurrently from two distinct threads
(all MPI calls
are "serialized" by explicit application thread
synchronizations).
MPI_THREAD_MULTIPLE Multiple threads can call MPI with no
restrictions.
If you only need this as a temporary solution and if you only use Open
MPI, then MPI_THREAD_SINGLE should be enough if there is only one
thread making MPI calls at ANY moment. Looking at the example from
your original mail, as only the master thread call the MPI function
you are safe.
george.
On Sep 29, 2008, at 11:03 AM, Gabriele Fatigati wrote:
Hi George.
So is it dangerous to use hybrid program ( MPI+OpenMP) without
enable threads support?
2008/9/29 George Bosilca <bosi...@eecs.utk.edu>
Gabriele,
The thread support has to be explicitly requested at build time, or
it will be disabled. Add --enable-mpi-threads (configure --help will
give you more info) to your configure. If you plan to use threads
with Open MPI I strongly suggest to update to the 1.3. This version
is not yet released, but you can download the source from the
nightly build section.
george.
On Sep 29, 2008, at 9:58 AM, Gabriele Fatigati wrote:
Another question about MPI_INIT_THREAD.
At the moment, as said, my OpenMPi version supports only level 0:
MPI_THREAD_SINGLE. Suppose that i have this code:
#pragma omp barrier
#pragma omp master
MPI_Send(buf,...);
#pragma omp barrier
Due my OpenMPI configuration, is it dangerous use this type of code?
What does it means that OpenMPI doesn't support all thread levels of
MPI_INIT_THREAD?
2008/9/29 Gabriele Fatigati <g.fatig...@cineca.it>
Dear OpenMPi developers,
i've noted that OpenMPI 1.25 and 1.2.6 version doesn't supports
thread initialization function shows below:
int MPI_Init_thread(int *argc, char *((*argv)[]), int required, int
*provided)
used in hybrid programming MPI+OpenMP. Returned vales provided is
0, so the unique thread level supported is MPI_THREAD_SINGLE.
Whitch is the newest OpenMPI version that has full support for
MPI_THREAD_SINGLE, MPI_THREAD_FUNNELED, MPI_THREAD_SERIALIZED and
MPI_THREAD_MULTIPLE?
Thanks in advance.
--
Ing. Gabriele Fatigati
CINECA Systems & Tecnologies Department
Supercomputing Group
Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy
www.cineca.it Tel: +39 051 6171722
g.fatig...@cineca.it
--
Ing. Gabriele Fatigati
CINECA Systems & Tecnologies Department
Supercomputing Group
Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy
www.cineca.it Tel: +39 051 6171722
g.fatig...@cineca.it
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users
--
Ing. Gabriele Fatigati
CINECA Systems & Tecnologies Department
Supercomputing Group
Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy
www.cineca.it Tel: +39 051 6171722
g.fatig...@cineca.it
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users