On 10/19/06, Corey Edwards <[EMAIL PROTECTED]> wrote:
That depends on what exactly MPI is. From the code I get the impression
that it's a library that handles parallel execution, in which case the
whole point is to have multiple processes fork off and remain running.
If that's the case I believe my code is correct. It could also be that
each child is supposed to run MPI_Finalize, signalling that it has
exited and should no longer be included in the process pool. Googling
around for MPI seems to indicate something along those lines.

Good point, I hadn't considered that maybe MPI_Finalize was meant to
be called for each process. If that's the case, I'd move the
MPI_Finalize call up into the if statement and keep the return. Also
correcting the if statement so that it's the *children* who execute
the block:

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

 void main (int argc, char *argv[])
 {
     int myrank, size,x;
     MPI_Init(&argc, &argv);

     for(x = 0; x < 10; x++){
         if(fork()){
             /* do parent stuff */
         } else {
             /* do child stuff -- I assume it's
              * each child that does this, rather
              * than the parent doing it ten times
              */
             MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
             MPI_Comm_size(MPI_COMM_WORLD, &size);
             printf("Processor %d of %d: Running!\n", myrank, size);
             MPI_Finalize();
             return;
         }
     }
 }

Jacob Fugal

/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to