Naloge MPI

MPI, oziroma “message passing interface” definira knjžnice za programiranje razpršenih programov, ki hrati tečejo na več vozliščih.

Prevajalniki za MPI so: mpicc, mpicxx, mpif77, mpif90

Kako zagnati program MPI?  mpirun, mpiexec (nekateri programi podpirajo oba, nekateri samo enega od njiju)

Zagon programa MPI uporabite ustrezno okolje (RTE): npr. za OpenMPI 2.0.2, navedite ta RTE (preverite ime, saj se med gručami imena RTE-jev razlikujejo:

  (runtimeenvironment = "APPS/BASE/OPENMPI-2.0.2")

Primer helloworld: hellompi.xrsl:

&
(count = 4)
(jobname = "hellompi")
(inputfiles =
  ("hellompi.sh" "")
  ("hellompi.c" "")
)
(executable = "hellompi.sh")
(stdout = "hellompi.log")
(join = yes)
(walltime = "15 minutes")
(gmlog = log)
(memory = 2000)
(runtimeenvironment = "APPS/BASE/OPENMPI-2.0.2")

Program:

/* C Example */
#include <stdio.h>
#include <mpi.h> 


int main (argc, argv)
     int argc;
     char *argv[];
{
  int rank, size;

  MPI_Init (&argc, &argv);      /* starts MPI */
  MPI_Comm_rank (MPI_COMM_WORLD, &rank);        /* get current process id */
  MPI_Comm_size (MPI_COMM_WORLD, &size);        /* get number of processes */
  printf( "Hello world from process %d of %d\n", rank, size );
  MPI_Finalize();
  return 0;
}

Skripta za zagon programa hellompi.sh:

#!/bin/bash
#this is to debug
env

#start time
date
#compile
echo "Compiling example"
mpicc -o hello hellompi.c
echo "Done."

#run
echo "Running example:"
mpiexec -np 1 ${PWD}/hello
echo "Done."
#time when finised
date