I can't speak for the developers. However, I think it's to do with the
>From here: http://www.mpi-forum.org/docs/mpi-20-html/node165.htm
"Advice to implementors.
"If provided is not MPI_THREAD_SINGLE then the MPI library should not
invoke C/ C++/Fortran library calls that are not thread safe, e.g., in
an environment where malloc is not thread safe, then malloc should not
be used by the MPI library.
"Some implementors may want to use different MPI libraries for different
levels of thread support. They can do so using dynamic linking and
selecting which library will be linked when MPI_INIT_THREAD is invoked.
If this is not possible, then optimizations for lower levels of thread
support will occur only when the level of thread support required is
specified at link time. ( End of advice to implementors.)"
On Wed, 2010-03-03 at 16:33 +0900, Yuanyuan ZHANG wrote:
> Hi all,
> I am a beginner of MPI and a little confused with
> MPI_Init_thread() function:
> If we use MPI_Init() or MPI_Init_thread(MPI_THREAD_SINGLE, provided)
> to initialize MPI environment, when we use OpenMP
> PARALLEL directive each process is forked to multiple
> threads and when an MPI function is called, one thread
> is used to execute the call. It seems that this
> has same effect when we use MPI_Init_Thread(MPI_THREAD_FUNNELED,
> provided). So what's the difference between MPI_Init() and
> MPI_Init_thread(MPI_THREAD_FUNNELED, provided)?
> Thanks in advance,
> users mailing list