stringtranslate.com

Aceleración

En arquitectura informática , la aceleración es un número que mide el rendimiento relativo de dos sistemas que procesan el mismo problema. En términos más técnicos, es la mejora en la velocidad de ejecución de una tarea ejecutada en dos arquitecturas similares con diferentes recursos. El concepto de aceleración fue establecido por la ley de Amdahl , que se centró especialmente en el procesamiento en paralelo . Sin embargo, la aceleración se puede utilizar de forma más general para mostrar el efecto sobre el rendimiento después de cualquier mejora de los 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:

dónde

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

dónde

La latencia se mide a menudo en segundos por unidad de carga de trabajo de ejecución. El rendimiento se mide a menudo 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 no tiene dimensiones y se define de forma diferente para cada tipo de cantidad, de modo que se trata de una métrica consistente.

Aceleración en latencia

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

dónde

La aceleración en la latencia se puede predecir mediante la ley de Amdahl o la ley de Gustafson .

Aceleración del rendimiento

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

dónde

Ejemplos

Utilizando tiempos de ejecución

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

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

Uso de 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 bifurcación estándar, que produce un CPI de 3. A continuación, ejecutamos el programa con nuestro predictor de bifurcación modificado, que produce un CPI de 2. En ambos casos, la carga de trabajo de ejecución es la misma y ambas arquitecturas no están en secuencia ni son paralelas. Al usar la fórmula de aceleración, obtenemos

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

Logramos la misma aceleración de 1,5x, 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 aceleración ideal se obtiene cuando S = s . Al ejecutar una tarea con aceleración lineal, al duplicar la aceleración local se duplica la aceleración general. Como esto es ideal, se considera que tiene una escalabilidad muy buena .

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

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 ) [ cita requerida ] 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

En contextos de marketing, las curvas de aceleración se utilizan con más frecuencia, en gran medida porque suben y se dirigen a la derecha y, por lo tanto, parecen mejores para los menos informados.

Aceleración superlineal

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

Una posible razón para la aceleración superlineal en los 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 la cantidad de procesadores, sino también el tamaño de las cachés acumuladas de los diferentes procesadores. Con un mayor tamaño de caché acumulada, más o incluso todo el 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 derivada del cálculo real. [4]

Una situación análoga ocurre cuando se buscan grandes conjuntos de datos, como los datos genómicos buscados por 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 mueva del disco a la RAM, lo que reduce drásticamente el tiempo que requiere, por ejemplo, mpiBLAST para buscarlo. [5]

También pueden producirse aceleraciones superlineales cuando se realiza un retroceso en paralelo: una excepción en un hilo puede provocar que varios otros hilos retrocedan antes de tiempo, antes de llegar a 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 informática: un enfoque cuantitativo . Waltham, MA: Morgan Kaufmann . pp. 46–47. ISBN. 978-0-12-383872-8.
  3. ^ Baer, ​​Jean-Loup (2010). Arquitectura de microprocesadores: desde simples tuberías hasta multiprocesadores de chips . Nueva York: Cambridge University Press . pp. 10. ISBN. 978-0-521-76992-1.
  4. ^ Benzi, John; Damodaran, M. (2007). "Simulación directa tridimensional paralela Monte Carlo para simular microflujos". Dinámica de fluidos computacional paralela 2007: Implementaciones y experiencias en computación a gran escala y en cuadrícula . Dinámica de fluidos computacional paralela. Springer. pág. 95. Consultado el 21 de marzo de 2013 .
  5. ^ http://people.cs.vt.edu/~feng/presentations/030903-ParCo.pdf [ URL básica PDF ]
  6. ^ Speckenmeyer, Ewald (1988). "Aceleración superlineal para retroceso paralelo". Supercomputación . Apuntes de clase en informática. Vol. 297. págs. 985–993. doi :10.1007/3-540-18991-2_58. ISBN . 978-3-540-18991-6.
  7. ^ "Puntos de referencia Gurobi versus CPLEX". cmu.edu . 29 de enero de 2009 . Consultado el 23 de abril de 2018 .