On Thu, 18 Mar 2010, John Peterson wrote: > On Thu, Mar 18, 2010 at 12:57 PM, Roy Stogner <[email protected]> > wrote: >> >> I'd like to instead just "enforce" the current restrictions - set a >> Threads::_now_multithreaded bool to true at the start of and false at >> the end of any Threads::parallel_* call, and then do a >> assert(!Threads::now_multithreaded()) in every Parallel:: call. > > This sounds like a good approach. I have no idea what happens if you > accidentally make an MPI call in a threaded section of code... > probably nothing good, so it's best to avoid it.
Reading up on the standard for thread-safe MPI, it looks like (assuming your implementation supports thread-safety) the result of calls from multiple threads is guaranteed to be the same as if the calls all came from the same thread "in some order, even if their execution is interleaved". I just can't think of where we'd find such behavior useful enough to want to try it. Maybe in the MeshRefinement synchronization code? But even if we thread the evaluation of received data it wouldn't mean we have to thread the send_receive calls. --- Roy ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Libmesh-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-devel
