This web mail archive is frozen.
This page is part of a frozen web archive of this mailing list.
You can still navigate around this archive, but know that no new mails
have been added to it since July of 2016.
Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.
On Thursday 04 March 2010 01:32:39 Yuanyuan ZHANG wrote:
> Hi guys,
> Thanks for your help, but unfortunately I am still not clear.
> > You are right Dave, FUNNELED allows the application to have multiple
> > threads but only the man thread calls MPI.
> My understanding is that even if I use SINGLE or MPI_Init, I can still
> have multiple threads if I use OpenMP PARALLEL directive, and only
> the main thread makes MPI calls. Am I correct?
Actually if your application asks for MPI_THREAD_SINGLE, it specifies that it
won't use any thread, so you shouldn't use OpenMP threads. If you asked SINGLE
and use threads (even if only the main thread calls MPI) the behavior is
unspecified (we can imagine that some MPI implementation cannot support any
thread within the process for some reason).
> > An OpenMP/MPI hybrid program that makes MPI calls only in between
> > parallel sections is usually a FUNNELED user of MPI
> For an OpenMP/MPI hybrid program, if I only want to make MPI calls using
> the main thread, ie., only in between parallel sections, can I just use
> SINGLE or MPI_Init? What's the benefit of FUNNELED?
Asking for the FUNNELED thread-safety level informs the MPI library that your
application is going to run threads. If you ask for SINGLE, then you say "I
promise, I won't use any thread". The difference may be unclear from an
application developer point of view, but it is important from the MPI library
point of view.
However, I guess most modern MPI libraries support FUNNELED by default and the
performance should be the same for FUNNELED and SINGLE