I can't speak for the developers. However, I think it's to do with the library internals.
>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, > > Yuanyuan > > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users