Tablets
Modelos de programación paralela
Paradigmas de programación
paralela
• Tipos de paralelismo
• Paso de mensajes
• Paralelismo de datos
• Memoria compartida
tipos de paralelismo
Las variaciones entre los paradigmas:
• Diferencia de esfuerzo en escribir programas. Algunos
lenguajes menos esfuerzo para el programador. Otros
requieren menos trabajo pero generan uncódigo menos
eficiente.
• Un determinado paradigma puede ser más eficiente que
otro al programar sobre determinadas arquitecturas
paralelas.
• Distintas aplicaciones tienen diferentes tipos de
paralelismo.
Paralelismo implícito/explícito
• Explícito :
– El algoritmo paralelo debe especificar
explícitamente cómo cooperan los procesadores.
– La tarea del compilador es sencilla. La delprogramador es bastante difícil.
• Implícito:
– Un lenguaje de programación secuencial y el
compilador inserta las instrucciones necesarias
para ejecutar el programa en un sistema paralelo.
– El compilador tiene que analizar y comprender las
dependencias para asegurar un mapeo eficiente.
Paso de mensajes/espacio de direcciones
compartido
Espacio de direcciones compartido:
• El programa seve como una colección de procesos
accediendo a una zona central de variables
compartidas.
• Más de un proceso podría acceder a la misma zona
compartida en el mismo instante produciendo
resultados impredecibles. Los lenguajes proporcionan
primitivas para resolver estos problemas de exclusión
mutua.
Paso de mensajes/espacio de direcciones
compartido
Paso de mensajes:
• El programa es unacolección de procesos con
variables locales privadas y la posibilidad de enviar y
recibir datos mediante paso de mensajes.
• Los computadores de espacio de direcciones
compartido también se pueden programar usando el
paradigma de paso de mensajes.
Paso de mensajes/espacio de direcciones
compartido
• Los lenguajes de programación para memoria
compartida o paso de mensajes son normalmentelenguajes secuenciales aumentados mediante un
conjunto de llamadas de sistema especiales.
• Las llamadas producen primitivas de bajo nivel para el
paso de mensajes, sincronización de procesos,
exclusión mutua, etc.
• El problema de estos lenguajes es la portabilidad entre
arquitecturas.
• Librerías como PVM, MPI, OpenMP, con primitivas
independientes del computador.
Paralelismo dedatos/de control
Paralelismo de datos:
• Aplicaciones en las que los datos están sujetos a idéntico
procesamiento.
• Apropiado para máquinas SIMD.
• También se pueden ejecutar en computadores MIMD. Se requiere
sincronización global después de cada instrucción ⇒ código
ineficiente. Solución: relajar la ejecución síncrona de las
instrucciones ⇒ Modelo SPMD: cada procesador ejecuta el mismoprograma asíncronamente.
• Lenguajes de paralelismo de datos ofrecen construcciones de alto
nivel para compartir información y manejar concurrencia. Programas
más fáciles de escribir y comprender. El código generado por estas
construcciones no es tan eficiente como el obtenido usando
primitivas de bajo nivel.
Paralelismo de datos/de control
Paralelismo de control:
• Ejecución simultáneade cadenas de
instrucciones diferentes. Las instrucciones se
pueden aplicar sobre la misma cadena de datos
aunque normalmente se aplican a cadenas de
datos diferentes.
• Adecuados para MIMD ya que requiere múltiples
cadenas de instrucciones.
Paso de mensajes
Extensiones básicas: Son extensiones en los lenguajes secuenciales
para soportar el paso de mensajes.
• Dos primitivas básicas decomunicación: SEND y RECEIVE.
La forma general de send es:
SEND (message, messagesize, target, type, flag)
– message contiene los datos que se envían,
– messagesize indica el tamaño en bytes,
– target es la etiqueta del procesador o procesadores destino,
– type es una constante con la que se distingue entre varios
tipos de mensajes,
– flag indica si la operación del SEND es bloqueante o...
Regístrate para leer el documento completo.