El software presenta paralelismo escalable si puede utilizar procesadores adicionales para resolver problemas de mayor envergadura; es decir, este término se refiere al software para el cual se cumple la ley de Gustafson . Consideremos un programa cuyo tiempo de ejecución está dominado por uno o más bucles, cada uno de los cuales actualiza todos los elementos de una matriz. Por ejemplo, el siguiente cálculo de plantilla de la ecuación del calor mediante diferencias finitas :
para t := 0 a T hacer para i := 1 a N-1 hacer nuevo(i) := (A(i-1) + A(i) + A(i) + A(i+1)) * .25 // Diferencia directa explícita con R = 0,25 fin para i := 1 a N-1 hacer A(i) := nuevo(i) fin fin
En el código fuente anterior , todas las iteraciones de cada bucle "i" se pueden ejecutar simultáneamente, es decir, convertir cada una en un bucle paralelo . En tales casos, a menudo es posible utilizar el doble de procesadores para un problema con un tamaño de matriz de 2N que para uno con un tamaño de matriz de N. Como en este ejemplo, el paralelismo escalable es típicamente una forma de paralelismo de datos . Esta forma de paralelismo suele ser el objetivo de la paralelización automática de bucles .
Los sistemas de computación distribuida y las arquitecturas de acceso a memoria no uniforme suelen ser los más fáciles de escalar a un gran número de procesadores, por lo que parecen un objetivo natural para el software que exhibe paralelismo escalable. Sin embargo, las aplicaciones con paralelismo escalable pueden no tener un paralelismo de grano suficientemente grueso para ejecutarse eficazmente en dichos sistemas (a menos que el software sea fácilmente paralelizable ). En el ejemplo anterior, el segundo bucle "i" es fácilmente paralelizable, pero en el primer bucle, cada iteración requiere resultados producidos en varias iteraciones anteriores. Por lo tanto, para el primer bucle, la paralelización puede implicar una comunicación o sincronización extensa entre procesadores, y por lo tanto solo resultará en una aceleración neta si dichas interacciones tienen una sobrecarga muy baja, o si el código se puede transformar para resolver este problema (es decir, mediante la optimización combinada de localidad escalable o paralelismo escalable [ 1 ] ).
Idiomas
- Ateji PX : una extensión de Java que posibilita el paralelismo escalable en la máquina virtual de Java (JVM).
- Máquina de flujo de datos modular binaria (BMDFM)
- SequenceL es un lenguaje de programación funcional de propósito general , cuyos principales objetivos de diseño son el rendimiento en hardware multinúcleo, la facilidad de programación y la claridad y legibilidad del código.
Referencias
- ↑ Wonnacott, D. (2000). «Uso de la desviación temporal para eliminar el tiempo de inactividad debido al ancho de banda de la memoria y las limitaciones de la red». Actas del 14.º Simposio Internacional de Procesamiento Paralelo y Distribuido. IPDPS 2000. págs. 171–180 . doi : 10.1109/IPDPS.2000.845979 . ISBN 978-0-7695-0574-9.
- Voss, Michael (26 de octubre de 2006). "Desmitificando el paralelismo escalable con los algoritmos paralelos genéricos de Intel Threading Building Block" . DevX.com . Archivado del original el 5 de febrero de 2012. Consultado el 24 de abril de 2026 .
- Análisis de algoritmos paralelos