Three things are usually important when starting to learn to use MPI. First, you must initialize the library when you are ready to use it (you also need to finalize it when you are done). Second, you will want to know the size of your communicator (the thing you use to send messages to other processes). Third, you will want to know your rank within that communicator (which process number are you within that communicator).
#include <mpi.h>
#include <stdio.h>
int main(int argc, char **argv) {
int size, rank;
int res;
res = MPI_Init(&argc, &argv);
if (res != MPI_SUCCESS)
{
fprintf (stderr, "MPI_Init failed\n");
exit (0);
}
res = MPI_Comm_size(MPI_COMM_WORLD, &size);
if (res != MPI_SUCCESS)
{
fprintf (stderr, "MPI_Comm_size failed\n");
exit (0);
}
res = MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (res != MPI_SUCCESS)
{
fprintf (stderr, "MPI_Comm_rank failed\n");
exit (0);
}
fprintf(stdout, "Hello World from rank %d of %d~\n", rank, size);
res = MPI_Finalize();
if (res != MPI_SUCCESS)
{
fprintf (stderr, "MPI_Finalize failed\n");
exit (0);
}
}
If you run this program like this:
mpiexec -n 2 ./hello
You would expect to get output like this:
Hello World from rank 0 of 2!
Hello World from rank 1 of 2!
You could also get that output backward (see http://stackoverflow.com/a/17571699/491687) for more discussion of this:
Hello World from rank 1 of 2!
Hello World from rank 0 of 2!