ScholarGate
Asistente

Memoria Compartida y Paralelismo de Datos

El paralelismo de memoria compartida implica que múltiples hilos operan en un espacio de direcciones común, mientras que el paralelismo de datos aplica la misma operación a muchos elementos de datos simultáneamente.

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

Definition

En el modelo de memoria compartida, los hilos de ejecución paralelos se comunican implícitamente leyendo y escribiendo una memoria común, coordinándose a través de primitivas de sincronización; el paralelismo de datos es el caso especial en el que el mismo cálculo se aplica de forma independiente a los elementos de una estructura de datos.

Scope

Este tema abarca el modelo de espacio de direcciones compartido y sus interfaces de programación (hilos, OpenMP), las primitivas de sincronización que coordinan los hilos (bloqueos, barreras, atómicos) y los peligros que gestionan (condiciones de carrera de datos, interbloqueo, falso compartimiento), las construcciones de paralelismo de datos y de bucles, y los entornos de ejecución basados en tareas con planificadores de robo de trabajo. Trata el aspecto de la programación cuyas bases teóricas aparecen bajo los modelos de memoria compartida.

Core questions

  • ¿Cómo coordinan los hilos el acceso a los datos compartidos sin condiciones de carrera o interbloqueo?
  • ¿Cómo se pueden expresar los bucles y las operaciones de matriz para la ejecución paralela?
  • ¿Cómo se equilibran eficientemente las tareas generadas dinámicamente entre los núcleos?

Key theories

Sincronización y consistencia de la memoria
Los programas correctos de memoria compartida se basan en primitivas de sincronización y en la comprensión del modelo de memoria que rige cuándo las escrituras de un hilo se vuelven visibles para otro, y una mala gestión puede causar condiciones de carrera o interbloqueo.
Paralelismo de datos basado en directivas
OpenMP permite a los programadores anotar código secuencial con directivas que paralelizan bucles y regiones sobre un espacio de direcciones compartido, proporcionando una ruta portátil e incremental hacia el paralelismo de memoria compartida.
Planificación de tareas con robo de trabajo
Los entornos de ejecución basados en tareas programan las tareas creadas dinámicamente haciendo que los procesadores inactivos roben trabajo de los ocupados, logrando un buen equilibrio de carga demostrable y una sobrecarga limitada para cálculos paralelos irregulares.

Clinical relevance

La programación de memoria compartida y de paralelismo de datos es la forma en que el software cotidiano explota las CPU multinúcleo y cómo los núcleos científicos, las simulaciones y las cargas de trabajo intensivas en matrices logran aceleraciones en un solo nodo, lo que la convierte en la forma más extendida de programación paralela.

History

El multiprocesamiento de memoria compartida maduró con el modelo de hilos y el estándar OpenMP de 1998 para el paralelismo basado en directivas portátiles; los planificadores de robo de trabajo del proyecto Cilk (a partir de 1996) proporcionaron un paralelismo eficiente basado en tareas, y estas ideas ahora sustentan la programación multinúcleo en todos los lenguajes.

Key figures

  • Maurice Herlihy
  • Nir Shavit
  • Charles Leiserson
  • Vipin Kumar

Related topics

Seminal works

  • herlihy2008
  • grama2003
  • blumofe1996

Frequently asked questions

¿Qué es una condición de carrera de datos y por qué es peligrosa?
Una condición de carrera de datos ocurre cuando dos hilos acceden a la misma ubicación de memoria concurrentemente y al menos uno escribe, sin sincronización. El resultado es indefinido y puede variar entre ejecuciones, produciendo errores intermitentes y difíciles de reproducir, por lo que la sincronización es esencial en los programas de memoria compartida.

Methods for this concept

Related concepts