Remove ads
implementazione libera e portabile del protocollo MPI Da Wikipedia, l'enciclopedia libera
MPICH è una implementazione libera e portabile di MPI, un protocollo di comunicazione utilizzato nelle applicazioni per sistemi a memoria distribuita per il Calcolo parallelo. MPICH è Software libero ed è disponibile per varie versioni di Unix (incluso Linux e macOS) e Microsoft Windows.
La prima implementazione di MPICH si chiama MPICH1 che implementa lo standard MPI-1.1. Attualmente l'ultima implementazione si chiama MPICH2 la quale implementa lo standard MPI-2.0, ma non supporta ancora la traduzione dei dati da differenti tipi di architetture hardware.
Per poter usare le implementazioni di MPICH-2 è necessario effettuare alcuni passaggi.
Prima di tutto, bisogna creare un file .mpd.conf da piazzare nella home dell'utente e aggiungere una parola segreta.
cd $HOME touch .mpd.conf chmod 600 .mpd.conf echo "MPD_SECRETWORD=mr45-j9z" > .mpd.conf
Dopo questo passaggio, bisogna specificare le macchine che verranno usate in fase di esecuzione. Proprio per questo, le macchine vengono inserite in un apposito file mpd.hosts. All'interno di tale file vengono inseriti gli indirizzi IP oppure gli hostname.
Fatto questo passaggio, non resta che avviare il tutto con:
mpdboot -n <numero nodi> -f mpd.hosts
È possibile usare MPICH-2 con i linguaggi C, C++ e Fortran. Vediamo di seguito, dei piccoli codici di esempio.
#include <stdio.h>
#include <mpi.h>
int main (int argc, char* argv[])
{
int rank, size;
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &size);
printf( "Hello world dal processo %d di %d\n", rank, size );
MPI_Finalize();
return 0;
}
Per compilare ed eseguire questo programma su 5 nodi, è necessario lanciare questi 2 comandi:
mpicc -o exe_c mpi_c.c mpiexec -l -n 5 ./exe_c
In output si avrà una cosa del genere:
0: Hello world dal processo 0 di 5 1: Hello world dal processo 1 di 5 3: Hello world dal processo 3 di 5 2: Hello world dal processo 2 di 5 4: Hello world dal processo 4 di 5
program hello
include 'mpif.h'
integer rank, size, ierror, tag, status(MPI_STATUS_SIZE)
call MPI_INIT(ierror)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror)
print*, 'nodo', rank, ': Hello world'
call MPI_FINALIZE(ierror)
end
Per compilare ed eseguire questo programma su 5 nodi, è necessario lanciare questi 2 comandi:
mpif90 -o exe_f mpi_f.f mpiexec -l -n 5 ./exe_f
In output si avrà una cosa del genere:
1: nodo 1 : Hello world 2: nodo 2 : Hello world 3: nodo 3 : Hello world 0: nodo 0 : Hello world 4: nodo 4 : Hello world
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.