La ley de Amdahl establece que la aceleración máxima que se puede lograr al paralelizar un programa está limitado por la parte del programa que * no puede * ser paralelo. Vamos a desglosarlo:
* porción serie: Algunas partes de un programa inherentemente requieren una ejecución secuencial. Por ejemplo, un solo bucle que depende del resultado de la iteración anterior no puede ser paralelo de manera efectiva. Esta es la fracción del programa que sigue siendo secuencial, a menudo denotada como 'F'.
* porción paralela: Esta es la fracción del programa que * puede * ser paralelizado, (1 - f).
* Número de procesadores: 'n' representa el número de procesadores utilizados.
Fórmula de ley de Amdahl:
Aceleración =1 / (f + (1 - f) / n)
Por qué es relevante para las computadoras paralelas:
No importa cuántos procesadores ('n') agregue, si incluso una pequeña porción del programa ('f') es inherentemente secuencial, la aceleración se limitará. Por ejemplo:
* Si el 10% del programa es secuencial (F =0.1), incluso con un número infinito de procesadores (n enfoques infinitos), la aceleración máxima es solo 1 / 0.1 =10. Nunca obtendrá una velocidad superior a 10 veces, no importa cuánto hardware le arroje.
Por lo tanto, la ley de Amdahl no se trata de computadoras paralelas * no * está sujeta a sus principios; Se trata de resaltar sus limitaciones inherentes en la aceleración. La programación paralela efectiva requiere minimizar la porción secuencial ('F') para maximizar los beneficios de la paralelización. Ignorar la ley de Amdahl conduce a expectativas poco realistas sobre las ganancias de rendimiento que se pueden alcanzar a través del procesamiento paralelo.