MODELLI DI PROGRAMMAZIONE PARALLELA
Lo scopo principale della programmazione parallela e' quello di
utilizzare tutti i processori e di ridurre il tempo di esecuzione di un
programma.
Non esiste pero' un software capace di assorbire
le differenze esistenti nelle varie architetture parallele e quindi un
unico modello di programmazione parallela, che viene a dipendere
percio' dal tipo di architettura si sta programmando:
Symmetric Multiprocessor (SMP):
e' riferibile generalmente ad architetture con memoria
condivisa.
-
si utilizza lo stesso indirizzamento di memoria, e' quindi facile riferirsi
a dati modificati da altri processi
Massively Parallel Processor (MPP):
e' riferibile generalmente ad architetture con memoria
distribuita.
in questo modello di programmazione parallela, solitamente realizzato
con le librerie Message Passing, a causa della presenza di:
-
comunicazione tra i processi
-
carichi di lavoro sbilanciati
-
sincronizzazione tra i processi
generalmente il tempo impiegato a svolgere ogni parte parallela e' piu'
dispendioso di quando questa parte di codice e' svolta in un calcolo seriale.
Riferendoci sempre al modello MPP, ci sono ulteriori (sotto)categorie
di programmazione parallela che qui rappresentiamo per poi commentarle:
-
(a) Single Program Multiple Data (SPMD): In questo modello vi e' un solo
programma ed ogni processo utilizza lo stesso eseguibile su differenti
insiemi di dati;
-
(b) Multiple Programs Multiple Data (MPMD) Master/Worker: in questo
modello esiste un processo principale che fa eseguire un certo numero di
compiti agli altri processi per poi raccogliere ed utilizzare i risultati
ottenuti;
-
(c) Multiple Programs Multiple Data (MPMD) Coupled analysis: in questo
modello vari programmi eseguono compiti differenti in un contesto unico.