ScholarGate
Asistente

Modelos de Programación Paralela

Los modelos de programación paralela son las abstracciones a través de las cuales los programadores expresan y coordinan la computación en múltiples procesadores para obtener velocidad.

Encontrar tema con PaperMindPróximamenteFind papers & topics
Tools & resources
Descargar diapositivas
Learn & explore
VídeoPróximamente

Definition

Un modelo de programación paralela es una abstracción de una computadora paralela que define cómo se descompone la computación en tareas concurrentes, cómo se comunican y sincronizan esas tareas, y cómo se comparten o distribuyen los datos entre los procesadores, lo que permite resolver un problema más rápidamente utilizando múltiples unidades de procesamiento.

Scope

Esta área cubre los principales modelos de programación paralela —memoria compartida y paralelismo de datos (hilos, OpenMP), paso de mensajes (MPI) y programación de aceleradores/GPU (CUDA, OpenCL)—, junto con la taxonomía de Flynn de arquitecturas paralelas, el diseño de algoritmos paralelos y las leyes de rendimiento (Amdahl y Gustafson) y métricas (aceleración, eficiencia, escalabilidad) que delimitan y miden su beneficio. Es el complemento de computación paralela al lado de sistemas distribuidos del subcampo.

Sub-topics

Core questions

  • ¿Cómo se debe descomponer una computación en tareas y asignarlas a los procesadores?
  • ¿Qué modelo de programación —memoria compartida, paso de mensajes o acelerador— se ajusta a una arquitectura y problema dados?
  • ¿Qué limita la aceleración alcanzable mediante el paralelismo y cómo se mide la escalabilidad?

Key theories

Taxonomía de Flynn
Las arquitecturas paralelas se clasifican por sus flujos de instrucciones y datos en SISD, SIMD, MISD y MIMD, un marco que todavía organiza el pensamiento sobre máquinas vectoriales, GPU y multinúcleo.
Leyes de Amdahl y Gustafson
La ley de Amdahl limita la aceleración por la fracción serial del programa para un tamaño de problema fijo, mientras que la reformulación de Gustafson señala que los problemas más grandes pueden mantener más procesadores útilmente ocupados, enmarcando juntos los límites y la promesa del paralelismo.
Patrones de diseño paralelo
Estrategias recurrentes —descomposición de tareas y datos, tuberías (pipelines), descomposición geométrica y maestro-trabajador— proporcionan un vocabulario estructurado para diseñar programas paralelos en diferentes modelos.

Clinical relevance

Los modelos de programación paralela son la base de la computación de alto rendimiento y científica, el entrenamiento de aprendizaje automático en GPU y la explotación cotidiana de procesadores multinúcleo; la elección del modelo determina el rendimiento y la portabilidad alcanzables en diferentes tipos de hardware.

History

La taxonomía de Flynn de 1972 y el argumento de aceleración de Amdahl de 1967 enmarcaron la computación paralela desde el principio; los modelos estandarizados surgieron con MPI y OpenMP en la década de 1990 y la computación GPU en la década de 2000, mientras que libros de texto como el de Grama y sus colegas codificaron el diseño y análisis de algoritmos paralelos.

Debates

Memoria compartida versus paso de mensajes como modelo predeterminado
Los modelos de memoria compartida son más fáciles de programar pero escalan con menos facilidad y conllevan el riesgo de sutiles condiciones de carrera de datos, mientras que el paso de mensajes escala a grandes clústeres a costa de una comunicación explícita; los modelos híbridos combinan ambos, y el modelo predeterminado correcto sigue dependiendo de la carga de trabajo y la arquitectura.

Key figures

  • Gene Amdahl
  • Michael Flynn
  • Vipin Kumar
  • John Gustafson

Related topics

Seminal works

  • grama2003
  • amdahl1967
  • flynn1972

Frequently asked questions

¿Por qué añadir más procesadores no puede hacer que cualquier programa sea arbitrariamente rápido?
La ley de Amdahl muestra que la porción serial de una computación —trabajo que no puede ser paralelizado— limita la aceleración total. Si incluso una pequeña fracción es inherentemente secuencial, esta domina a medida que aumenta el número de procesadores, limitando la aceleración alcanzable.

Methods for this concept

Related concepts