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