MPI Example

Docklet provides MPICH2 to develop MPI program.

Assume the user's vcluster has two nodes: host-0 and host-1.

Open WEB Terminal to check /etc/hosts file

$ cat /etc/hosts
127.0.0.1       localhost
172.16.0.46     host-0  host-0.tee
172.16.0.45     host-1  host-1.tee

We can get the node list by the following command:

$ cat /etc/hosts | grep -v localhost | awk '{print $2}'
host-0
host-1

Now the WEB Terminal is running on host-0, the first node in the vcluster. Edit mpihello.c on host-0

#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>
#define  MASTER     0

int main (int argc, char *argv[])
{
    int   numtasks, taskid, len;
    char hostname[MPI_MAX_PROCESSOR_NAME];

    MPI_Init(&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
    MPI_Comm_rank(MPI_COMM_WORLD,&taskid);
    MPI_Get_processor_name(hostname, &len);
    printf ("Hello from task %d on %s!\n", taskid, hostname);
    if (taskid == MASTER)
        printf("MASTER: Number of MPI tasks is: %d\n",numtasks);
    MPI_Finalize();
    return 0 ;
}

Open WEB Terminal and run:

$ mpicc mpihello.c -o mpihello
$ mpirun -n 2 -hosts host-0,host-1 mpihello
Hello from task 0 on host-0! 
MASTER: Number of MPI tasks is: 2 
Hello from task 1 on host-1!

results matching ""

    No results matching ""