Per a crear un programa paral·lel per a un cluster de memòria compartida el més comuna és usar una llibreria de pas de missatges per a la intercomunicació dels processos. La Interfície de Pas de Missatges (%u201CMesseging pasing Interface%u201D) MPI és un estàndard que defineix la sintaxi i la semàntica de les funcions per a aquesta comunicació. Les funcions estan definides en una llibreria MPI de la qual hi ha diverses implementacions disponibles dependent de la plataforma, de la xarxa d'interconnexió i de la versió d'estàndard MPI.
Les llibreries instal·lades en ClusterUA són Open MPI, MVAPICH, MVAPICH2 i Intel MPI, tots suportant la xarxa d'interconnexió de baixa latència de tipus Infiniband.
En aquesta part del manual anem a veure com compilar un programa MPI. Més endavant, en l'apartat del gestor de recursos, veurem com manar el treball MPI al cluster.
Mòduls librearías MPI
Per a definir l'entorn de la llibreria MPI que volem usar, simplement fa falta carregar el mòdul corresponents. Els mòduls MPI disponibles són
openmpi-gcc Open MPI per als compiladors de GNU (gcc, g++, gfortran)
openmpi-intel Open MPI per als compiladors d'INTEL (icc, icpc, ifort)
mvapich-gcc MVAPICH per als compiladors de GNU (gcc, g++, gfortran)
mvapich-intel MVAPICH per als compiladors d'INTEL (icc, icpc, ifort)
mvapich2-gcc MVAPICH2 per als compiladors de GNU (gcc, g++, gfortran)
mvapich2-intel MVAPCH2 per als compiladors d'INTEL (icc, icpc, ifort)
impi Intel MPI (només amb icc,icpc, ifortran)
Open MPI
Abans de copilar un programa Open MPI hem de carregar el mòdul d'entorn. Si volem usar un compilador intel executem
$ module lloeu openmpi-intel
o si preferim gcc executem:
$ module lloeu openmpi-gcc
Una vegada carregat el mòdul podem compilar el nostre programa usant un dels següent warppers
mpicc Per a programes en C
mpiCC/mpicxx/mpic++ Per a programes en C++
mpif77 Per a programes en Fortran 77
mpif90 Per a programes en Fortran 90
executant:
$ mpi[cc|CC|cxx|c++|f77|f90] -o
Les opcions de la línia de comando són les mateixes que les del compilador corresponent (gcc, icc, etc.)
MVAPICH
Abans de copilar un programa MVAPICH hem de carregar el mòdul d'entorn. Si volem usar un compilador intel executem
$ module lloeu mvapich-intel
o si preferim gcc executem
$ module lloeu mvapich-gcc
Una vegada carregat el mòdul podem compilar el nostre programa usant un dels següent warppers
mpicc Per a programes en C
mpiCC/mpicxx/mpic++ Per a programes en C++
mpif77 Per a programes en Fortran 77
mpif90 Per a programes en Fortran 90
executant
$ mpi[cc|CC|cxx|c++|f77|f90] -o
Les opcions de la línia de comando són les mateixes que les del compilador corresponent (gcc, icc, etc.)
MVAPICH2
Abans de compilar un programa MVAPICH2 hem de carregar el mòdul d'entorn. Si volem usar un compilador Intel executem
$ module lloeu openmpi-intel
o si preferim gcc executem
$ module lloeu openmpi-gcc
Una vegada carregat el mòdul podem compilar el nostre programa usant un dels següent warppers
mpicc Per a programes en C
mpicxx Per a programes en C++
mpif77 Per a programes en Fortran 77
mpif90 Per a programes en Fortran 90
executant:
$ mpi[cc|cxx|f77|f90] -o
Les opcions de la línia de comando són les mateixes que les del compilador corresponent (gcc, icc, etc.)
Intel MPI
Abans de compilar un programa Intel MPI hem de carregar el mòdul d'entorn. Si volem usar un compilador intel executem:
$ module lloeu impi
Una vegada carregat el mòdul podem compilar el nostre programa usant un dels següent warppers
mpiicc Per a programes en C
mpiicxx Per a programes en C++
mpiifort Per a programes en Intel Fortran
mpif77 Per a programes en GNU Fortran g77
mpif90 Per a programes en GNU Fortran g90
mpifc Per a programes en GNU f2c
mpigcc/mpicc Per a programes en GNU gcc
mpigxx/mpicxx Per a programes en GNU g++
executant
$ mpi[icc|icxx|ifort|cc|gcc|cxx|gxx|f77|f90] -o
Les opcions de la línia de comando són les mateixes que les del compilador corresponent (gcc, icc, etc.)