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

