Legge di Amdahl
Da Wikipedia, l'enciclopedia libera.

La legge di Amdahl, che ha preso il nome del progettista di computer Gene Amdahl, viene usata per trovare il miglioramento atteso massimo in un sistema informatico quando vengono migliorate solo alcune parti del sistema. Viene usata spesso nell'informatica parallela per predire l'aumento massimo teorico di velocità che si ottiene usando più processori.
La legge di Amdahl può essere interpretata in modo più tecnico, ma in parole povere significa che è l'algoritmo a decidere l'aumento di velocità, non il numero di processori. Prima o poi si raggiunge un punto in cui non si può parallelizzare ulteriormente l'algoritmo.
La legge di Amdahl è una dimostrazione della legge dei rendimenti calanti: anche se si potesse aumentare la velocità di una parte di un computer di cento o più volte, se tale parte influisce solamente sul 12% dell'elaborazione complessiva, al massimo l'accelerazione può essere di un fattore .

Più tecnicamente, la legge riguarda l'aumento di velocità ottenibile da un miglioramento a un calcolo che influisce per una proporzione P di quel calcolo, dove il miglioramento riduce il tempo di calcolo di un fattore S. (Per esempio, se un miglioramento può velocizzare il 30% del calcolo, P sarà 0.3; se il miglioramento raddoppia la velocità della porzione modificata, S sarà 2.) La legge di Amdahl afferma che l'aumento di velocità complessivo prodotto dal miglioramento sarà
.
Per vedere come si arriva a questa formula, supponiamo che il tempo di esecuzione del vecchio calcolo sia 1, in una data unità di tempo. Il tempo di esecuzione del nuovo calcolo sarà il tempo impiegato per la frazione non migliorata (che è 1 − P) più il tempo impiegato dalla frazione migliorata. Il tempo impiegato dalla parte del calcolo migliorata è il tempo di esecuzione della parte non ancora migliorata diviso per il fattore di accelerazione, ossia P/S. L'aumento finale di velocità è calcolato dividendo il vecchio tempo di esecuzione per il nuovo tempo di esecuzione, ottenendo così la formula sopra.
Ecco un altro esempio. Abbiamo un compito scomponibile nelle seguenti quattro parti: P1 = 0,11 ossia 11%, P2 = 0,18 ossia 18%, P3 = 0,23 ossia 23%, P4 = 0,48 ossia 48%, aventi come somma 100%. Poi, non miglioriamo P1, perciò S1 = 1 ossia 100%, acceleriamo P2 di un fattore 5, perciò S2 = 5 ossia 500%, acceleriamo P3 di un fattore 20, perciò S3 = 20 ossia 2000%, e acceleriamo P4 di un fattore 1,6, perciò S4 = 1,6 ossia 160%. Usando la formula , troviamo che il tempo di esecuzione è
ossia un po' meno della metà del tempo di esecuzione originale che sappiamo essere 1. Perciò l'accelerazione complessiva è
, ossia, usando la formula
, poco più del doppio della velocità originale. Si noti come le accelerazioni 20x e 5x non hanno un grande effetto sull'accelerazione e sul tempo di esecuzione complessivi, dato che oltre la metà del compito viene accelerato solo di un fattore 1,6 o non viene accelerato affatto.
[modifica] Parallelismo
Nel caso speciale del parallelismo, la legge di Amdahl afferma che se F è la frazione di un calcolo che è sequenziale (cioè che non può beneficiare dal parallelismo), e (1 − F) è la frazione che può essere parallelizzata, allora l'aumento massimo di velocità che si può ottenere usando N processori è
.
Al limite, al tendere di N all'infinito, l'accelerazione tende a 1/F. In pratica, il rapporto prezzo/prestazioni scende rapidamente al crescere di N, dato che (1 − F)/N diventa piccolo rispetto a F.
Per fare un esempio, se F è solamente il 10%, la velocità del calcolo può essere al massimo decuplicata, indipendentemente dal valore di N. Per questa ragione, il calcolo parallelo è utile solamente o per piccoli numeri di processori o per problemi con valori molto bassi di F. Gran parte della ricerca sul calcolo parallelo consiste nel tentativo di ridurre F al valore più piccolo possibile.