stringtranslate.com

Análisis de algoritmos paralelos

En informática, el análisis de algoritmos paralelos es el proceso de encontrar la complejidad computacional de algoritmos ejecutados en paralelo (la cantidad de tiempo, almacenamiento u otros recursos necesarios para ejecutarlos). En muchos aspectos, el análisis de algoritmos paralelos es similar al análisis de algoritmos secuenciales , pero generalmente es más complejo porque se debe razonar sobre el comportamiento de múltiples subprocesos de ejecución que cooperan entre sí. Uno de los objetivos principales del análisis paralelo es comprender cómo cambia el uso de recursos (velocidad, espacio, etc.) de un algoritmo paralelo a medida que cambia el número de procesadores.

Fondo

Shiloach y Vishkin [1] introdujeron originalmente un marco de trabajo denominado tiempo de trabajo (WT) (a veces llamado profundidad de trabajo o duración del trabajo) para conceptualizar y describir algoritmos paralelos. En el marco de trabajo WT, un algoritmo paralelo se describe primero en términos de rondas paralelas. Para cada ronda, se caracterizan las operaciones que se realizarán, pero se pueden suprimir varios aspectos. Por ejemplo, no es necesario que esté claro el número de operaciones en cada ronda, no es necesario mencionar los procesadores y no es necesario tener en cuenta ninguna información que pueda ayudar con la asignación de procesadores a trabajos. En segundo lugar, se proporciona la información suprimida. La inclusión de la información suprimida está guiada por la prueba de un teorema de programación debido a Brent, [2] que se explica más adelante en este artículo. El marco de trabajo WT es útil ya que, si bien puede simplificar en gran medida la descripción inicial de un algoritmo paralelo, insertar los detalles suprimidos por esa descripción inicial a menudo no es muy difícil. Por ejemplo, el marco WT se adoptó como el marco de presentación básico en los libros de algoritmos paralelos (para el modelo PRAM de máquina de acceso aleatorio paralelo ) [3] y [4] , así como en las notas de clase. [5] La siguiente descripción general explica cómo se puede utilizar el marco WT para analizar algoritmos paralelos más generales, incluso cuando su descripción no está disponible dentro del marco WT.

Definiciones

Supongamos que se ejecutan cálculos en una máquina que tiene p procesadores. Sea T p el tiempo que transcurre entre el inicio y el final del cálculo. El análisis del tiempo de ejecución del cálculo se centra en los siguientes conceptos:

De las definiciones de trabajo, duración y coste se desprenden varios resultados útiles:

Utilizando estas definiciones y leyes, se pueden dar las siguientes medidas de desempeño:

Ejecución en un número limitado de procesadores

El análisis de algoritmos paralelos se lleva a cabo generalmente bajo el supuesto de que se dispone de un número ilimitado de procesadores. Esto no es realista, pero no es un problema, ya que cualquier cálculo que pueda ejecutarse en paralelo en N procesadores se puede ejecutar en p < N procesadores permitiendo que cada procesador ejecute múltiples unidades de trabajo. Un resultado llamado ley de Brent establece que se puede realizar una "simulación" de este tipo en un tiempo T p , acotado por [11]

o, menos precisamente, [6]

Una declaración alternativa de la ley limita T p por encima y por debajo por

.

mostrando que el lapso (profundidad) T y el trabajo T 1 juntos proporcionan límites razonables en el tiempo de cálculo. [2]

Referencias

  1. ^ Shiloach, Yossi; Vishkin, Uzi (1982). "Un algoritmo de flujo máximo paralelo O ( n 2  log  n )". Revista de algoritmos . 3 (2): 128–146. doi :10.1016/0196-6774(82)90013-X.
  2. ^ ab Brent, Richard P. (1974-04-01). "La evaluación paralela de expresiones aritméticas generales". Revista de la ACM . 21 (2): 201–206. CiteSeerX 10.1.1.100.9361 . doi :10.1145/321812.321815. ISSN  0004-5411. S2CID  16416106. 
  3. ^ JaJa, Joseph (1992). Introducción a los algoritmos paralelos. Addison-Wesley. ISBN 978-0-201-54856-3.
  4. ^ Keller, Jorg; Kessler, Cristoph W.; Traeff, Jesper L. (2001). Programación práctica de PRAM. Wiley-Interscience. ISBN 978-0-471-35351-5.
  5. ^ Vishkin, Uzi (2009). Pensar en paralelo: algunos algoritmos y técnicas básicas de datos paralelos, 104 páginas (PDF) . Apuntes de clases de cursos sobre algoritmos paralelos impartidos desde 1992 en la Universidad de Maryland, College Park, la Universidad de Tel Aviv y el Technion.
  6. ^ abcdef Casanova, Henri; Legrand, Arnaud; Robert, Yves (2008). Algoritmos paralelos . Prensa CRC. pag. 10. CiteSeerX 10.1.1.466.8142 . 
  7. ^ Blelloch, Guy (1996). "Programación de algoritmos paralelos" (PDF) . Comunicaciones de la ACM . 39 (3): 85–97. CiteSeerX 10.1.1.141.5884 . doi :10.1145/227234.227246. S2CID  12118850. 
  8. ^ Michael McCool; James Reinders; Arch Robison (2013). Programación paralela estructurada: patrones para computación eficiente . Elsevier. págs. 4-5.
  9. ^ abcdef Cormen, Thomas H. ; Leiserson, Charles E. ; Rivest, Ronald L. ; Stein, Clifford (2009) [1990]. Introducción a los algoritmos (3.ª ed.). MIT Press y McGraw-Hill. págs. 779–784. ISBN 0-262-03384-4.
  10. ^ Kurgalin, Sergei; Borzunov, Sergei (2020). El libro de ejercicios de matemáticas discretas: un manual complementario que utiliza Python . Textos en informática (2.ª ed.). Cham, Suiza: Springer Naturel. ISBN 978-3-030-42220-2.
  11. ^ Gustafson, John L. (2011). "Teorema de Brent". Enciclopedia de computación paralela . pp. 182–185. doi :10.1007/978-0-387-09766-4_80. ISBN . 978-0-387-09765-7.