Ejemplo básico de MPI no funciona

Estoy tratando de entender lo que significaba el siguiente ejemplo:

#include "mpi.h" #include  int main(int argc, char *argv[]) { int numtasks, rank, dest, source, rc, count, tag = 1; char inmsg, outmsg = 'x'; MPI_Status Stat; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numtasks); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { dest = 1; source = 1; rc = MPI_Send(&outmsg, 1, MPI_CHAR, dest, tag, MPI_COMM_WORLD); rc = MPI_Recv(&inmsg, 1, MPI_CHAR, source, tag, MPI_COMM_WORLD, &Stat); } else if (rank == 1) { dest = 0; source = 0; rc = MPI_Recv(&inmsg, 1, MPI_CHAR, source, tag, MPI_COMM_WORLD, &Stat); rc = MPI_Send(&outmsg, 1, MPI_CHAR, dest, tag, MPI_COMM_WORLD); } rc = MPI_Get_count(&Stat, MPI_CHAR, &count); printf("Task %d: Received %d char(s) from task %d with tag %d \n", rank, count, Stat.MPI_SOURCE, Stat.MPI_TAG); MPI_Finalize(); } 

Esencialmente copiado desde aquí: https://computing.llnl.gov/tutorials/mpi/

Comstackdo de esta manera:

 $ mpicc -o ./mpi_test ./mpi_test.c 

Corre así:

 $ ./mpi_test 

Da este error:

 Fatal error in MPI_Send: Invalid rank, error stack: MPI_Send(171): MPI_Send(buf=0x7fff787b4d93, count=1, MPI_CHAR, dest=1, tag=1, MPI_COMM_WORLD) failed MPI_Send(97).: Invalid rank has value 1 but must be nonnegative and less than 1 

Para ser honesto, no entiendo por qué el ejemplo debería haber funcionado en primer lugar. ¿Puedes por favor iluminarme? ¿Es incorrecto el ejemplo o se espera el error? Tal vez mi configuración es incorrecta?

PD. Comstackdo con gcc 4.7 en Fedora 18 amd64

Tienes que ejecutar tu progtwig usando mpirun siguiente manera:

 mpirun -np 2 mpi_test