Thanks. I thought those threads will not interfere with each other since they have no common variables except std IO. 

Date: Thu, 3 Sep 2009 09:01:28 -0700
Subject: Re: [OMPI users] Help!

guosong wrote:
I am new to open MPI
I am not, but I'm not real familiar with thread-safe MPI programming.  Still, I saw no other replies to your question, so I'll make an attempt to answer.

MPI does not guarantee thread safety.  E.g., see and the ensuing pages.

To do what you want to do, you need to make sure you have thread safety.  There is a standard MPI interface for doing so.  I'm not good at C++, so here is a C example:

#include <stdio.h>
#include <mpi.h>

int main(int argc, char **argv) {
  int provided;

  /* start MPI, asking for support for multiple threads */

  /* report what level of support is actually provided */
  if ( MPI_THREAD_SINGLE     == provided ) printf(" MPI_THREAD_SINGLE\n");
  if ( MPI_THREAD_FUNNELED   == provided ) printf(" MPI_THREAD_FUNNELED\n");
  if ( MPI_THREAD_SERIALIZED == provided ) printf(" MPI_THREAD_SERIALIZED\n");
  if ( MPI_THREAD_MULTIPLE   == provided ) printf(" MPI_THREAD_MULTIPLE\n");

  /* exit */

  return 0;

Run this program.  If the program does not print out "MPI_THREAD_MULTIPLE", you're not getting the level of thread support you require and your program is not guaranteed to run properly.  You have to make sure you're using a thread-safe MPI before you can expect your program to work.

The next question is whether Open MPI is thread safe, and I'll leave you with this:

G ood luck.  Again, I'm not experienced with thread-safe MPI programming (though I understand the general concepts).

Messenger保护盾2.0,更安全可靠的Messenger聊天! 现在就下载!