Articulo de referencia

Aceleración

En arquitectura de computadoras , la aceleración es un valor que mide el rendimiento relativo de dos sistemas que procesan el mismo problema. En términos más técnicos, se refier...

En arquitectura de computadoras , la aceleración es un valor que mide el rendimiento relativo de dos sistemas que procesan el mismo problema. En términos más técnicos, se refiere a la mejora en la velocidad de ejecución de una tarea en dos arquitecturas similares con recursos diferentes. El concepto de aceleración se estableció con la ley de Amdahl , que se centraba especialmente en el procesamiento paralelo . Sin embargo, la aceleración puede utilizarse de forma más general para mostrar el efecto en el rendimiento tras cualquier mejora de recursos.

Definiciones

La aceleración se puede definir para dos tipos diferentes de cantidades: latencia y rendimiento . [ 1 ]

La latencia de una arquitectura es el recíproco de la velocidad de ejecución de una tarea:

L=1v=TW,{\displaystyle L={\frac {1}{v}}={\frac {T}{W}},}

dónde

  • v es la velocidad de ejecución de la tarea;
  • T es el tiempo de ejecución de la tarea;
  • W es la carga de trabajo de ejecución de la tarea.

El rendimiento de una arquitectura es la tasa de ejecución de una tarea:

Q=ρvA=ρAWT=ρAL,{\displaystyle Q=\rho vA={\frac {\rho AW}{T}}={\frac {\rho A}{L}},}

dónde

  • ρ es la densidad de ejecución (por ejemplo, el número de etapas en una tubería de instrucciones para una arquitectura segmentada );
  • A es la capacidad de ejecución (por ejemplo, el número de procesadores para una arquitectura paralela).

La latencia se suele medir en segundos por unidad de carga de trabajo de ejecución. El rendimiento se suele medir en unidades de carga de trabajo de ejecución por segundo. Otra unidad de rendimiento son las instrucciones por ciclo (IPC), y su recíproco, los ciclos por instrucción (CPI), es otra unidad de latencia.

La aceleración es adimensional y se define de forma diferente para cada tipo de magnitud, de modo que sea una métrica consistente.

Aumento de la latencia

La aceleración en la latencia se define mediante la siguiente fórmula: [ 2 ]

Sestado latente=L1L2=T1W2T2W1,{\displaystyle S_{\text{latencia}}={\frac {L_{1}}{L_{2}}}={\frac {T_{1}W_{2}}{T_{2}W_{1}}},}

dónde

  • La latencia S es la aceleración en la latencia de la arquitectura 2 con respecto a la arquitectura 1;
  • L 1 es la latencia de la arquitectura 1;
  • L 2 es la latencia de la arquitectura 2.

La mejora en la latencia se puede predecir a partir de la ley de Amdahl o la ley de Gustafson .

Aumento de la velocidad de procesamiento

La aceleración del rendimiento se define mediante la fórmula: [ 3 ]

Srendimiento=Q2Q1=ρ2A2T1W2ρ1A1T2W1=ρ2A2ρ1A1Sestado latente,{\displaystyle S_{\text{throughput}}={\frac {Q_{2}}{Q_{1}}}={\frac {\rho _{2}A_{2}T_{1}W_{2}}{\rho _{1}A_{1}T_{2}W_{1}}}={\frac {\rho _{2}A_{2}}{\rho _{1}A_{1}}}S_{\text{latency}},}

dónde

  • El rendimiento S es la aceleración en el rendimiento de la arquitectura 2 con respecto a la arquitectura 1;
  • Q 1 es el rendimiento de la arquitectura 1;
  • Q 2 es el rendimiento de la arquitectura 2.

Ejemplos

Utilizando tiempos de ejecución

Estamos probando la efectividad de un predictor de bifurcaciones en la ejecución de un programa. Primero, ejecutamos el programa con el predictor de bifurcaciones estándar en el procesador, lo que produce un tiempo de ejecución de 6,75 segundos. A continuación, ejecutamos el programa con nuestro predictor de bifurcaciones modificado (y esperamos que mejorado) en el mismo procesador, lo que produce un tiempo de ejecución de 4,50 segundos. En ambos casos, la carga de trabajo de ejecución es la misma. Usando nuestra fórmula de aceleración, sabemos

Sestado latente=LviejoLnuevo=6,75 s4.50 s=1.5.{\displaystyle S_{\text{latencia}}={\frac {L_{\text{antiguo}}}{L_{\text{nuevo}}}}={\frac {6.75~\mathrm {s} }{4.50~\mathrm {s} }}=1.5.}

Nuestro nuevo predictor de bifurcaciones ha proporcionado una aceleración de 1,5 veces con respecto al original.

Utilizando ciclos por instrucción e instrucciones por ciclo.

También podemos medir la aceleración en ciclos por instrucción (CPI), que es una latencia. Primero, ejecutamos el programa con el predictor de bifurcaciones estándar, que produce un CPI de 3. A continuación, ejecutamos el programa con nuestro predictor de bifurcaciones modificado, que produce un CPI de 2. En ambos casos, la carga de trabajo de ejecución es la misma y ambas arquitecturas no son segmentadas ni paralelas. Usando la fórmula de aceleración se obtiene

Sestado latente=LviejoLnuevo=3 IPC2 IPC=1.5.{\displaystyle S_{\text{latencia}}={\frac {L_{\text{antiguo}}}{L_{\text{nuevo}}}}={\frac {3~{\text{CPI}}}{2~{\text{CPI}}}}=1.5.}

También podemos medir la aceleración en instrucciones por ciclo ( IPC ), que es un rendimiento y el inverso del CPI. Usando la fórmula de aceleración se obtiene

Srendimiento=QnuevoQviejo=0,5 IPC0,33 IPC=1.5.{\displaystyle S_{\text{throughput}}={\frac {Q_{\text{new}}}{Q_{\text{old}}}}={\frac {0.5~{\text{IPC}}}{0.33~{\text{IPC}}}}=1.5.}

Logramos la misma aceleración de 1,5 veces, aunque medimos cantidades diferentes.

Detalles adicionales

Sea S la aceleración de ejecución de una tarea y s la aceleración de ejecución de la parte de la tarea que se beneficia de la mejora de los recursos de una arquitectura. La aceleración lineal o ideal se obtiene cuando S = s . Al ejecutar una tarea con aceleración lineal, duplicar la aceleración local duplica la aceleración global. Como esto es ideal, se considera una muy buena escalabilidad .

La eficiencia es una métrica de la utilización de los recursos del sistema mejorado definido como

η=Ss.{\displaystyle \eta ={\frac {S}{s}}.}

Su valor suele estar entre 0 y 1. Los programas con aceleración lineal y los programas que se ejecutan en un solo procesador tienen una eficiencia de 1, mientras que muchos programas difíciles de paralelizar tienen una eficiencia como 1/ln( s ) que se acerca a 0 a medida que aumenta el número de procesadores A = s .

En contextos de ingeniería, las curvas de eficiencia se utilizan con más frecuencia para gráficos que las curvas de aceleración, ya que

  • Toda el área del gráfico es útil (mientras que en las curvas de aceleración se desperdicia la mitad del espacio);
  • Es fácil ver lo bien que está funcionando la mejora del sistema;
  • No es necesario trazar una curva de "aceleración perfecta".

En el ámbito del marketing, las curvas de aceleración se utilizan con mayor frecuencia, principalmente porque ascienden hacia la derecha y, por lo tanto, resultan más atractivas para quienes tienen menos conocimientos sobre el tema.

aceleración superlineal

En ocasiones, se observa una aceleración superior a A al utilizar A procesadores en la computación paralela , lo que se denomina aceleración superlineal . La aceleración superlineal rara vez ocurre y suele confundir a los principiantes, quienes creen que la aceleración máxima teórica debería ser A cuando se utilizan A procesadores.

Una posible razón para la aceleración superlineal en cálculos de bajo nivel es el efecto de caché resultante de las diferentes jerarquías de memoria de un ordenador moderno: en la computación paralela, no solo cambia el número de procesadores, sino también el tamaño de las cachés acumuladas de los diferentes procesadores. Con un tamaño de caché acumulado mayor, una mayor parte, o incluso la totalidad, del conjunto de trabajo puede caber en las cachés y el tiempo de acceso a la memoria se reduce drásticamente, lo que provoca una aceleración adicional además de la del cálculo en sí. [ 4 ]

Una situación análoga se produce al buscar en grandes conjuntos de datos, como los datos genómicos que buscan las implementaciones de BLAST . En este caso, la RAM acumulada de cada uno de los nodos de un clúster permite que el conjunto de datos se transfiera del disco a la RAM, reduciendo así drásticamente el tiempo que requiere, por ejemplo, mpiBLAST para buscarlo. [ 5 ]

También pueden producirse aceleraciones superlineales al realizar retrocesos en paralelo: una excepción en un hilo puede provocar que varios otros hilos retrocedan anticipadamente, antes de que ellos mismos alcancen la excepción. [ 6 ]

También pueden producirse aceleraciones superlineales en implementaciones paralelas de ramificación y acotación para optimización: [ 7 ] el procesamiento de un nodo por un procesador puede afectar el trabajo que otros procesadores necesitan hacer para los otros nodos.

Véase también

Referencias

  1. Martin, Milo. "Rendimiento y evaluación comparativa" (PDF) . Consultado el 5 de junio de 2014 .
  2. Hennessy, John L.; David A., Patterson (2012). Arquitectura de computadoras: un enfoque cuantitativo . Waltham, MA: Morgan Kaufmann . págs. 46-47 . ISBN  978-0-12-383872-8.
  3. Baer, ​​Jean-Loup (2010). Arquitectura de microprocesadores: De tuberías simples a multiprocesadores en chip . Nueva York: Cambridge University Press . pp. 10. ISBN  978-0-521-76992-1.
  4. Benzi, John; Damodaran, M. (2007). "Simulación directa Monte Carlo tridimensional paralela para la simulación de microflujos" . Dinámica de fluidos computacional paralela 2007: Implementaciones y experiencias en computación a gran escala y en malla . Dinámica de fluidos computacional paralela. Springer. pág. 95. Consultado el 21 de marzo de 2013 . 
  5. "Green Destiny + mpiBLAST = Bioinfomagic" (PDF) . Archivado del original (PDF) el 21 de febrero de 2008.
  6. Speckenmeyer, Ewald (1988). "Aceleración superlineal para retroceso paralelo". Supercomputing . Lecture Notes in Computer Science. Vol. 297. pp. 985–993 . doi : 10.1007/3-540-18991-2_58 . ISBN   978-3-540-18991-6.
  7. "Comparación entre los estándares de Gurobi y CPLEX" . cmu.edu . 29 de enero de 2009. Consultado el 23 de abril de 2018 .