La ley de Amdahl
En arquitectura informática, la ley de Amdahl (o argumento de Amdahl) es una fórmula que proporciona la aceleración teórica en latencia de la ejecución de una tarea con una carga de trabajo fija que se puede esperar de un sistema cuyos recursos se han mejorado. Establece que "la mejora general del rendimiento obtenida mediante la optimización de una sola parte de un sistema está limitada por la fracción de tiempo en que se usa realmente la parte mejorada". Lleva el nombre del científico informático Gene Amdahl y se presentó en la Conferencia informática conjunta de primavera de la Federación Estadounidense de Sociedades de Procesamiento de la Información (AFIPS) en 1967.
La ley de Amdahl se utiliza a menudo en computación paralela para predecir la velocidad teórica al usar múltiples procesadores. Por ejemplo, si un programa necesita 20 horas para completar el uso de un solo hilo, pero una porción de una hora del programa no puede ser paralizada, por lo tanto sólo las 19 horas restantes" (p = 0,95) tiempo de ejecución se puede paralizar, entonces independientemente de cuántos hilos se dedican a una ejecución paralela de este programa, el tiempo mínimo de ejecución no puede ser menos de una hora. Por lo tanto, la velocidad teórica se limita a la mayoría de 20 veces el rendimiento del hilo único, ()11− − p=20){displaystyle left({dfrac {1}{1-p}=20right)}.
Definición
La ley de Amdahl se puede formular de la siguiente manera:
- Slatencia()s)=1()1− − p)+ps{displaystyle S_{text{latency}(s)={frac {1}{(1-p)+{frac {}}}}
dónde
- Slatencia es la aceleración teórica de la ejecución de toda la tarea;
- s es la aceleración de la parte de la tarea que se beneficia de la mejora de los recursos del sistema;
- p es la proporción del tiempo de ejecución que la parte que se beneficia de mejores recursos originalmente ocupados.
Además,
- {}Slatencia()s)≤ ≤ 11− − plims→ → JUEGO JUEGO Slatencia()s)=11− − p.{displaystyle {begin{cases}S_{text{latency}(s)leq {dfrac {1}{1-p}\[8pt]lim limits _{sto infty }S_{text{latency}} {dfrac]={dfrac {1}{1-p}.end{cases}}
muestra que la aceleración teórica de la ejecución de toda la tarea aumenta con la mejora de los recursos del sistema y que, independientemente de la magnitud de la mejora, la aceleración teórica siempre está limitada por la parte de la tarea que no puede beneficiarse de la mejora.
La ley de Amdahl se aplica solo a los casos en los que el tamaño del problema es fijo. En la práctica, a medida que hay más recursos informáticos disponibles, tienden a usarse en problemas más grandes (conjuntos de datos más grandes), y el tiempo dedicado a la parte paralelizable a menudo crece mucho más rápido que el trabajo inherentemente en serie. En este caso, la ley de Gustafson da una evaluación menos pesimista y más realista del desempeño paralelo.
Derivación
Una tarea ejecutada por un sistema cuyos recursos son mejorados en comparación con un sistema similar inicial se puede dividir en dos partes:
- a part that does not benefit from the improvement of the resources of the system;
- una parte que se beneficia de la mejora de los recursos del sistema.
Un ejemplo es un programa de computadora que procesa archivos. Una parte de ese programa puede escanear el directorio del disco y crear una lista de archivos internamente en la memoria. Después de eso, otra parte del programa pasa cada archivo a un subproceso separado para su procesamiento. La parte que escanea el directorio y crea la lista de archivos no se puede acelerar en una computadora paralela, pero la parte que procesa los archivos sí.
El tiempo de ejecución de toda la tarea antes de la mejora de los recursos del sistema se denota como T{displaystyle T}. Incluye el tiempo de ejecución de la parte que no se beneficiaría de la mejora de los recursos y el tiempo de ejecución del que se beneficiaría de ella. La fracción del tiempo de ejecución de la tarea que se beneficiaría de la mejora de los recursos se denota por p{displaystyle p}. Por lo tanto, el que se refiere a la parte que no se beneficiaría de ella es 1− − p{displaystyle 1-p}. Entonces:
- T=()1− − p)T+pT.{displaystyle T=(1-p)T+pT}
Es la ejecución de la parte que se beneficia de la mejora de los recursos que se acelera por el factor s{displaystyle s} después de la mejora de los recursos. En consecuencia, el tiempo de ejecución de la parte que no se beneficia de ella sigue siendo el mismo, mientras que la parte que se beneficia de ella se convierte en:
- psT.{fnMicroc} T.
El tiempo de ejecución teórica T()s){displaystyle T(s)} de toda la tarea después de la mejora de los recursos es entonces:
- T()s)=()1− − p)T+psT.{displaystyle T(s)=(1-p)T+{frac T.
La ley de Amdahl da la velocidad teórica de la latencia de la ejecución de toda la tarea volumen fijo W{displaystyle W., que rinde
- Slatencia()s)=TWT()s)W=TT()s)=11− − p+ps.{displaystyle ¿Qué? {1}{1-p+{frac.
Programas paralelos
Si el 30% del tiempo de ejecución puede ser objeto de una aceleración, p será 0,3; si la mejora hace que la parte afectada sea dos veces más rápida, s será 2. La ley de Amdahl establece que la aceleración general de la aplicación de la mejora será:
- Slatencia=11− − p+ps=11− − 0.3+0.32=1.18.{displaystyle S_{text{latency}={frac {1}{1-p+{frac {} {fn}}={fnMic} {1}{1-0.3+{frac {0.3}}=1.18.}
Por ejemplo, supongamos que se nos asigna una tarea en serie que se divide en cuatro partes consecutivas, cuyos porcentajes de tiempo de ejecución son p1 = 0,11, p2 = 0,18, p3 = 0,23, y p4 = 0,48 respectivamente. Luego se nos dice que la primera parte no se acelera, entonces s1 = 1, mientras que la segunda parte se acelera 5 veces, entonces s2 = 5, la tercera parte se acelera 20 veces, entonces s3 = 20, y la cuarta parte se acelera 1,6 veces, por lo que s4 = 1,6. Al usar la ley de Amdahl, la aceleración general es
- Slatencia=1p1s1+p2s2+p3s3+p4s4=10.111+0.185+0.2320+0.481.6=2.19.{displaystyle S_{text{latency}={frac {1}{frac} {p1}{s1}+{frac} {p2}{s2}+{frac} {p3}{s3}+{frac} {p4}{s4}}={frac} {1}{frac {0.11}{1}}+{frac} {f} {f} {f}} {f} {f}} {f}}}} {f}}} {f}}}}}} {f} {f} {f} {f} {f} {f}f}f}f} {f} {f}f} {f}f}f}f}f}f}f}f} {f}f} {f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f} {f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f {0.18}{5}+{frac} {0.23}{20}+{frac {0.48}}=2.19}
Observe cómo la aceleración de 5 y 20 veces en la segunda y tercera parte respectivamente no tiene mucho efecto en la aceleración general cuando la cuarta parte (48 % del tiempo de ejecución) se acelera solo 1,6 veces.
Programas de serie
Por ejemplo, con un programa serial en dos partes A y B para el cual T<sub A = 3 s y TB = 1 segundo,
- si parte B está hecho para correr 5 veces más rápido, eso es s = 5 y p = TB/(TA + TB) = 0,25, entonces
- Slatencia=11− − 0,25+0,255=1.25;{displaystyle S_{text{latency}={frac {1}=1.25}
- si parte A está hecho para correr 2 veces más rápido, eso es s = 2 y p = TA/(TA + TB) = 0,75, entonces
- Slatencia=11− − 0,75+0,752=1.60.{displaystyle S_{text{latency}={frac {1}=1.60.}
Por lo tanto, hacer que la parte A se ejecute 2 veces más rápido es mejor que hacer que la parte B se ejecute 5 veces más rápido. El porcentaje de mejora en la velocidad se puede calcular como
- Porcentaje de mejora=100()1− − 1Slatencia).{displaystyle {text{fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {f}displaystyle {\\fnMicrosoft {fnMicrosoft {fnMicrosoft {\fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {\\fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {\\fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {\\\fnMicrosoft {fnMicrosoft {fnMicro mejora}=100left(1-{frac {1}{S_{text{latency}}right).}
- Mejora de la parte A por un factor de 2 aumentará la velocidad global del programa por un factor de 1.60, lo que lo hace 37,5% más rápido que el cálculo original.
- Sin embargo, mejorar la parte B por un factor de 5, que presumiblemente requiere más esfuerzo, logrará un factor de aceleración global de 1,25 solamente, lo que lo hace 20% más rápido.
Optimización de la parte secuencial de programas paralelos
Si la parte no paralelizante es optimizada por un factor O{displaystyle O., entonces
- T()O,s)=()1− − p)TO+psT.{displaystyle T(O,s)=(1-p){frac {T}}+{frac} T.
De la ley de Amdahl se deduce que la aceleración debida al paralelismo está dada por
- Slatencia()O,s)=T()O)T()O,s)=()1− − p)1O+p1− − pO+ps.{displaystyle ¿Qué? {1} {fn} {fnMicroc} {fnK}} {f}}} {fn}}} {f}}} {fn}} {fn}}}}} {fn}} {fn}}}}} {f} {f}}}}}}} {f} {f}}}}}}} {f}}}}}}} {f}}}}}} {f}}}}}} {f}} {f} {f}}} {f} {f} {f} {f}}}}}}}}}}}}}}}}}}}} {f}} {f} {f}}}}}} {f}}}} {f} {f} {f} {f} {f}}}}}}}}}}}}}}}}}}}}}} {f}}}}}}}}} {1-p} {}+{frac}.
Cuando s=1{displaystyle s=1}, tenemos Slatencia()O,s)=1{displaystyle S_{text{latency}(O,s)=1}, significa que la velocidad es medido con respecto al tiempo de ejecución después de que la parte no parallelizable sea optimizada.
Cuando s=JUEGO JUEGO {displaystyle s=infty},
- Slatencia()O,JUEGO JUEGO )=T()O)T()O,s)=()1− − p)1O+p1− − pO+ps=1+p1− − pO.{displaystyle ¿Qué? {1} {fn} {fnMicroc} {fnK}} {f}}} {fn}}} {f}}} {fn}} {fn}}}}} {fn}} {fn}}}}} {f} {f}}}}}}} {f} {f}}}}}}} {f}}}}}}} {f}}}}}} {f}}}}}} {f}} {f} {f}}} {f} {f} {f} {f}}}}}}}}}}}}}}}}}}}} {f}} {f} {f}}}}}} {f}}}} {f} {f} {f} {f} {f}}}}}}}}}}}}}}}}}}}}}} {f}}}}}}}}} {1-p} {}+{frac} {p}}=1+{frac} Oh.
Si 1− − p=0,4{displaystyle 1-p=0.4}, O=2{displaystyle O=2} y s=5{displaystyle s=5}, entonces:
- Slatencia()O,s)=T()O)T()O,s)=0,412+0.60,42+0.65=2.5.{displaystyle ¿Qué? {{0.4}{frac} {1}{2}+0.6}{frac} {fnMic} {fnK}} {fn}}}}} {fn}} {fn} {fn} {fn} {fn}} {fn}}}} {f}}}}} {fn}}}}}} {f}}}}}}}}}}}}}}}}}}}}}}}}}} {m}}} {f}}}}}}} {f}}} {f}}}}}} {f}} {f} {f} {f} {f} {f}} {f} {f} {f} {f} {f} {f}} {f} {f}}} {f} {f} {f}} {f} {f} {f}}}}}}}}}}}}}}}}}}}} {0.4}{2}+{frac} {0.6}}=2.5}
Transformar partes secuenciales de programas paralelos en paralelizables
A continuación, consideramos el caso en el que la parte no paralelable se reduce por un factor de O.{displaystyle O., y la parte paralelizable se aumenta correspondientemente. Entonces...
- T.()O.,s)=1− − pO.T+()1− − 1− − pO.)Ts.{displaystyle T'(O',s)={frac #T+left(1-{frac {1-p} {} {fnMicroc {}}} {fnMicroc}} {fnMicrosoft Sans Serif} {fnMicroc}} {fnMicroc} {fnMicrosoft Sans Serif}} {fnMicroc} {f}} {fnMicroc} {f}}}} {f} {f}}}}}} {f}}}}} {f}}}}} {f}}} {f} {f}}} {f} {f}}}}}}}} {f}}}}} {f}}}}}}}}}}} {f} {f}} {f}}} {f}}}}}}}}}}}}}}f}}}}}}}}}}}}}}}}}f}}}}}}}}}}}}}}f}}}}}}}}
De la ley de Amdahl se deduce que la aceleración debida al paralelismo está dada por
- Slatencia.()O.,s)=T.()O.)T.()O.,s)=11− − pO.+()1− − 1− − pO.)1s.{displaystyle S'_{text{latency}} {frac {frac}{T'(O',s)}}={frac {1}{frac {frac}{frac {1-p}{O'}+left(1-{frac {1-p} {}derecha){frac.
La derivación anterior está de acuerdo con el análisis de Jakob Jenkov del equilibrio entre el tiempo de ejecución y la aceleración.
Relación con la ley de rendimientos decrecientes
La ley de Amdahl a menudo se combina con la ley de rendimientos decrecientes, mientras que solo un caso especial de aplicación de la ley de Amdahl demuestra la ley de rendimientos decrecientes. Si uno elige de manera óptima (en términos de la aceleración lograda) lo que se debe mejorar, entonces verá mejoras monótonamente decrecientes a medida que mejora. Sin embargo, si uno elige de manera no óptima, después de mejorar un componente subóptimo y pasar a mejorar un componente más óptimo, puede ver un aumento en el rendimiento. Tenga en cuenta que a menudo es racional mejorar un sistema en un orden que es "no óptimo" en este sentido, dado que algunas mejoras son más difíciles o requieren mayor tiempo de desarrollo que otras.
La ley de Amdahl representa la ley de rendimientos decrecientes si uno está considerando qué tipo de rendimiento obtiene al agregar más procesadores a una máquina, si está ejecutando un cálculo de tamaño fijo que usará todos los procesadores disponibles para su capacidad. Cada nuevo procesador agregado al sistema agregará menos energía utilizable que el anterior. Cada vez que se duplique la cantidad de procesadores, la tasa de aceleración disminuirá, ya que el rendimiento total se acercará al límite de 1/(1 − p).
Este análisis ignora otros posibles cuellos de botella, como el ancho de banda de la memoria y el ancho de banda de E/S. Si estos recursos no escalan con la cantidad de procesadores, simplemente agregar procesadores proporciona rendimientos aún más bajos.
Una implicación de la ley de Amdahl es que para acelerar las aplicaciones reales que tienen partes tanto en serie como en paralelo, se requieren técnicas de computación heterogéneas. Hay nuevos modelos de aceleración y consumo de energía basados en una representación más general de la heterogeneidad, denominada heterogeneidad de forma normal, que admiten una amplia gama de arquitecturas heterogéneas de muchos núcleos. Estos métodos de modelado tienen como objetivo predecir la eficiencia energética del sistema y los rangos de rendimiento, y facilitan la investigación y el desarrollo a nivel de hardware y software del sistema.
Contenido relacionado
ETag HTTP
Exclusión mutua
Brian Kernighan