MPICH č una popolare implementazione dello standard MPI-1, sviluppata dal Argonne National Laboratory e dal Mississippi State University, al cui successo ha contribuito in maniera considerevole la sua ampia portabilitą.
MPICH deriva la sua portabilitą dalla sua architettura a strati. Alla sommitą si trova l'interfaccia MPI come definita dallo standard MPI-1. Immediatamente sotto c'č il livelo MPICH che implementa l'interfaccia MPI. La maggior parte del codice č indipendente dai supporti di rete o dai meccanismi di gestione dei processi locali. Tra le funzionalitą implementate a questo livello troviamo il controllo errori e la manipolazione di vari costrutti tipo MPI_Communicator, MPI_Type, ecc. Tutte le altre funzionalitą sono passate al livello sottostante chiamato Abstract Device Interface.
L'Abstract Device Interface (ADI) č l'interfaccia sulla quale sono costruite le funzioni al livello MPICH indipendentemente dalla particolare architettura sottostante. Tutti gli ADI esternamente forniscono le stesse funzionalitą, ma cambiano nel modo in cui le implementano, in funzione del particolare hardware o del particolare canale di comunicazione. Quindi per eseguire programmi MPI su piattaforme diverse č sufficiente installare l'ADI appropriata. Ad esempio il device ch_p4 č quello per cluster di macchine omogenee, LAN di workstation, workstation singole. Il device ch_shmem rigurda processori simmetrici a memoria condivisa.
MPICH-G2 non č altro che una particolare implementazione di ADI, chiamata globus2, che utilizza GlobusToolkit come canale di comunicazione in ambiente Grid.
Vediamo i due principali meccanismi per il mascheramento della eteorgeneitą : Gestione Processi e Comunicazione.