Calcolatore della legge di Amdahl
Dati di input
| Parte parallelizzabile | 95 % |
|---|---|
| Processori | 16 |
Calcolatore della legge di Amdahl
Stima l’accelerazione massima di un programma ottenibile con la parallelizzazione tramite la legge di Amdahl, a partire dalla frazione parallelizzabile del lavoro e dal numero di processori.
Dati di input
Carico di lavoro
Risultati
Inserisci un valore per visualizzare i risultati.
Accelerazione
Efficienza
La legge di Amdahl
La legge di Amdahl prevede quanto più velocemente possa essere eseguita un’attività di dimensione fissa quando una sua parte viene eseguita in parallelo su più processori. Risponde a una domanda che ogni ingegnere affronta quando porta il software su un numero maggiore di core: se solo una parte del lavoro può essere parallelizzata, qual è l’accelerazione realistica e a che punto aggiungere hardware smette di essere utile? Il calcolatore prende la frazione parallelizzabile del lavoro e un numero di processori e restituisce l’accelerazione risultante, il limite teorico e l’efficienza parallela.
Il collo di bottiglia sequenziale
La maggior parte dei programmi contiene un misto di lavoro. Alcune parti — iterazioni indipendenti di un ciclo, il rendering di tessere d’immagine separate, l’elaborazione di record distinti — possono essere eseguite simultaneamente. Altre parti — la lettura di un file di configurazione, la costruzione di una struttura dati da cui dipende tutto il resto, un passo finale di riduzione — devono essere eseguite in sequenza. Le parti sequenziali non possono essere accelerate aggiungendo processori, quindi impongono un limite inferiore al tempo di esecuzione totale.
La legge di Amdahl rende tutto questo preciso. Sia la frazione del tempo di esecuzione originale che è parallelizzabile e la frazione sequenziale. Con processori la parte parallela termina in del tempo originale, mentre la parte sequenziale richiede ancora . L’accelerazione complessiva è il tempo originale diviso per il nuovo tempo:
Il limite
Al crescere di , il termine tende a zero, ma il termine sequenziale resta invariato. Passando al limite si ottiene l’accelerazione massima che il programma possa mai raggiungere:
Un programma parallelo al 95% non può mai superare un’accelerazione di 20×, per quanti processori gli si dedichino. Un programma parallelo al 50% si ferma a 2×. È per questo che ridurre la frazione sequenziale — e non semplicemente acquistare più core — è spesso l’ottimizzazione con la leva maggiore.
Esempio svolto
Si supponga che il 95% di un lavoro sia parallelizzabile e che venga eseguito su 16 processori. L’accelerazione è:
S=(1−0.95)+160.951=0.05+0.0593751=0.1093751≈9.14Quindi 16 processori forniscono un’accelerazione di circa 9,1×, ben lontana da un perfetto 16×. Il limite teorico qui è , e l’efficienza parallela è , il che significa che quasi metà della capacità di calcolo aggiunta va persa a causa del collo di bottiglia sequenziale.
Perché l’efficienza è importante
L’efficienza parallela, , indica quanto bene vengono utilizzati i processori aggiuntivi. Un’efficienza vicina al 100% indica uno scaling quasi lineare; un’efficienza che cala rapidamente al crescere di segnala che la frazione sequenziale è dominante e che aggiungere hardware ha uno scarso rapporto valore-costo. La legge di Amdahl descrive lo scaling forte — un carico di lavoro fisso su un numero maggiore di processori. Quando il carico di lavoro stesso cresce con l’hardware, si applica invece la più ottimistica Calcolatrice della legge di Gustafson.
La frazione parallelizzabile va considerata una stima: di solito si misura tramite profilatura e varia spesso con la dimensione del problema e l’hardware, perciò l’accelerazione prevista è una guida al comportamento atteso più che una garanzia.
Domande frequenti (FAQ)
Che cos’è la legge di Amdahl?
La legge di Amdahl, formulata da Gene Amdahl nel 1967, fornisce l’accelerazione teorica di un’attività di dimensione fissa quando una sua parte viene parallelizzata. Se una frazione p del lavoro può essere eseguita in parallelo su N processori e la parte restante 1 − p deve essere eseguita in modo sequenziale, l’accelerazione complessiva è S = 1 / ((1 − p) + p / N).
La parte sequenziale impone un limite assoluto: per quanti processori si aggiungano, il programma non potrà mai essere eseguito più velocemente di 1 / (1 − p) volte il tempo originale.
Perché aggiungere altri processori produce rendimenti decrescenti?
Al crescere del numero di processori, la parte parallela del lavoro tende a zero, ma la parte sequenziale resta costante. Quando la parte parallela diventa piccola rispetto a quella sequenziale, ogni processore aggiuntivo modifica appena il tempo di esecuzione totale.
Per esempio, con il 90% di lavoro parallelizzabile, passare da 1 a 16 processori dà un’accelerazione di circa 6,4×, ma passare da 16 a 1.024 processori raggiunge solo circa 9,9×, ancora al di sotto del limite di 10×.
In che cosa differisce la legge di Amdahl dalla legge di Gustafson?
La legge di Amdahl presuppone una dimensione del problema fissa e si chiede quanto più velocemente venga eseguito con più processori, sottolineando il limite imposto dal lavoro sequenziale.
La legge di Gustafson presuppone che la dimensione del problema cresca con i processori disponibili (un budget di tempo fisso e un carico di lavoro maggiore) e prevede un’accelerazione che scala in modo più favorevole. Entrambe sono corrette: rispondono a domande diverse riguardo allo scaling forte rispetto allo scaling debole.
Come stimo la parte parallelizzabile del mio programma?
La parte parallelizzabile è meglio misurarla che stimarla a occhio. Si profila il programma per determinare quanto tempo di esecuzione effettivo viene speso in codice che può essere eseguito in modo concorrente rispetto al codice che deve essere eseguito in sequenza (configurazione di I/O, catene di dipendenze, sincronizzazione).
Può anche essere dedotta da due tempi di esecuzione misurati con un diverso numero di processori, riorganizzando la formula dell’accelerazione. Qualsiasi stima isolata va considerata approssimativa, poiché la frazione parallelizzabile varia spesso con la dimensione del problema e l’hardware.
Da provare dopo
Calcolatrice della legge di Gustafson
Stima l’accelerazione scalata di un carico di lavoro parallelo mediante la legge di Gustafson, in cui la dimensione del problema cresce con il numero di processori anziché restare fissa.