Hi 

I got a problem of MPI. 

I donot know whether it can be resolved in boost MPI.

My program has 5 processes. 

All of them can run MPI_Finalize() and return 0. 

But, the whole program cannot be completed. 

In the MPI cluster job queue, it is still in running status. 

If I use 1 process to run it, no problem.

Why ? 

My program:

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

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myRank);
MPI_Comm_size(MPI_COMM_WORLD, &mySize);
MPI_Comm world;
world = MPI_COMM_WORLD;

if (myRank == 0)
        {
do some things. 
}

if (myRank != 0)
       {
do some things. 
}

cout << " I am rank " << rank << " I am before MPI_Finalize()" << endl;

MPI_Finalize();

cout << " I am rank " << rank << " I am after MPI_Finalize()" << endl;
         return 0;
}

I can get the output " I am rank 0 (1, 2, ....) I am before MPI_Finalize() ". 

and 

" I am rank 0 I am after MPI_Finalize() "

But, other processes do not printed out "I am rank ... I am after MPI_Finalize()" .

It is weird. The process has reached the point just before MPI_Finalize(), why they are hanged there ? 

Are there other better ways to check this ? 

Any help is appreciated. 


And, some output files get wrong codes, which can not be readible. 
In 1-process case, the program can print correct results to these output files . 

Any help is appreciated. 

thanks

Jack

Oct. 24 2010