MPICH és una implementació altament eficaç i portable de l'estàndard MPI (MPI-1, MPI-2, MPI-3). L'objectiu principal de MPICH és proveir una implementació MPI que doni suport eficaçment a les diferents plataformes de comunicació i computació incloent diferents clúster (arquitectures multicore, sistemes de memòria compartida, etc.) , xarxes d'alta velocitat (10 Gib Ethernet, InfiniBand, Myrinet, Quadrics), i sistemes informàtics patentats d'alta gama (Blue Gene, Cray) [1]. Un altre objectiu de MPICH es permetre la investigació de vanguardia en MPI a través d'un marc modular fàcil d'estendre per altres implementacions derivades. És una implementació de codi obert i llicencia gratuïta, i ha estat probada en moltes plataformes com Linux (en IA32 i x86-64), MAC OS/X (PowerPC i Intel),  Solaris (32 i 64 bits) i Windows.

Crystal Clear app winprops bw.pngMPICH

Tipusprogramari lliure Modifica el valor a Wikidata
Versió estable
3.4.1 (26 gener 2021) Modifica el valor a Wikidata
LlicènciaMPICH2 license (en) Tradueix Modifica el valor a Wikidata
Característiques tècniques
Escrit enC Modifica el valor a Wikidata
Més informació
Lloc webWeb oficial (anglès) Modifica el valor a Wikidata
Stack ExchangeEtiqueta Modifica el valor a Wikidata



HistòriaModifica

Les primeres versions de MPICH, conegudes com a MPICH-1, van ser desenvolupades conjuntament pel Laboratori Nacional de Argonne i la Universitat Estatal de Mississippi com un software de domini públic. La part CH del nom ve donada per “Chamaleon”, una biblioteca portàtil de programació paral·lela produïda per William Gropp, un dels fundadors de MPICH.

MPICH va ser originalment creat al 1992 per donar resposta (a través del fòrum) als problemes d'implementació i utilitat que els sorgeixen als usuaris del nou estàndard de MPI. Aquesta implementació es basava en la portabilitat del sistema “Chamaleon” que proporcionava una capa d'implementació més lleugera. Al voltant del 2001, es va començar a produir una nova implementació anomenada MPICH2. MPICH2 va introduir noves característiques de l'estàndard MPI-2 que es va implementar en el MPICH original. La versió final de MPICH original és 1.2.7 pl. Els números de la versió de MPICH2 es van reiniciar en 0.9 i continuen en 1.5, començant amb  la sortida al mercat en el novembre de 2012, el projecte canvia de nom a MPICH amb un numero de versió 3.0.

MPICH és una de les implementacions més populars de MPI. S'utilitza com a base per a la gran majoria de les implementacions MPI, incloent IBM MPI (per a Blue Gene), Intel MPI, Cray MPI, Microsoft MPI, Myricom MPI, OSU MVAPICH / MVAPICH2 i moltes altres.


CanalsModifica

Hi ha varis canals basats en la infraestructura ch3 [1]:

  • Nemesis - Universal, té mòduls entre nodes: elan, GM, IB (infiniband), MX (myrinet express), NewMadeleine, tcp; i diverses variants intra-node de memòria compartida per a missatges grans (interfície LMT).
  • ssm - Sockets i memòria compartida
  • shm - Memòria compartida
  • sock - sockets tcp / ip
  • sctp: canal experimental sobre sockets SCTP


Derivats de MPICHModifica

  • IBM (MPI per a la sèrie Blue Gene i, com a opció, per a clústers de sèries x i p)
  • Cray (MPI per a totes les plataformes Cray)
  • SiCortex (MPI SiCortex)
  • Microsoft (MS-MPI)
  • Intel (Intel MPI)
  • Qlogic (MPICH2-PSM)
  • Myricom (MPICH2-MX)
  • Universitat Estatal d'Ohio (MVAPICH i MVAPICH2)
  • Universitat de Colúmbia Britànica (MPICH2 / SCTP, i MPI de grau fi (FG-MPI) que afegeix suport per a les coroutines)


FuncionamentModifica

Com utilitzar MPICH ?Modifica

En computació d' altes prestacions (HPC) es poden definir les variables d'entorn i el path necessaris carregant el mòdul corresponent al processador i la versió de MPICH que s'utilitzi [4]:

HPC2015 system
Versió MPI Compilador Comanda del mòdul
MPICH 3.1.3 Compilador PGI 15.7 module load mpich/pgi/3.1.3
3.1.4 Compilador Intel module load intel mpich/intel/3.1.4
Compilador GNU (GCC) module load mpich/gcc/3.1.4
3.2.0 Compilador PGI 17.7 module load mpich/pgi/3.2.0
3.2.1 18.5 module load mpich/pgi/3.2.1


Per saber quin compilador s'està fent servir, es pot utilitzar la següent comanda en la consola:

mpicc -v   o   mpicc -V

Cóm executar un programa amb MPICH ?Modifica

A) Execució interactiva (recomanada per fer tests sobre treballs curts):

mpirun -np 20 ./exemple.exec

B) Executar un programa MPICH amb un script PSB. És un petit fitxer de text que conté informació sobre quins recursos requereix un treball, incloent-hi temps, nombre de nodes i memòria. L'script PBS també conté les ordres necessàries per començar a executar la computació desitjada.

Exemple de la execució d'un batch amb un PBS script [3]:

#!/bin/sh

#PBS –N test_mpi

#PBS -q parallel

#PBS -l walltime=00:10:00

#PBS -l nodes=1:ppn=8

#PBS -j oe

cd $PBS_O_WORKDIR

NPROCS=`wc -l < $PBS_NODEFILE`

NNODES=`uniq $PBS_NODEFILE | wc -l`

NCORES=$((NPROCS / NNODES ))

MACHFILE=/tmp/node.job.${PBS_JOBID}

cat $PBS_NODEFILE | uniq |awk -v nc=$NCORES '{print $1":"nc}' > $MACHFILE

mpirun -machinefile ${MACHFILE} -np ${NPROCS} ./program.exe

rm -f ${MACHFILE}


ReferènciesModifica


Enllaços externsModifica