Descargar

Modelos de programación paralela. Paradigmas de programación paralela

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida

    edu.red

    Las variaciones entre los paradigmas están motivadas por varios factores: ? Diferencia de esfuerzo invertido en escribir programas paralelos. Algunos lenguajes requieren menos esfuerzo para el programador, mientras que otros requieren menos trabajo pero generan un código menos eficiente. ? Un determinado paradigma de programación puede ser más eficiente que otros al programar sobre determinadas arquitecturas paralelas. ? Distintas aplicaciones tienen diferentes tipos de paralelismo y por tanto se han desarrollado diferentes lenguajes de programación para explotarlos. Tipos de paralelismo

    edu.red

    Explícito : El algoritmo paralelo debe especificar explícitamente cómo cooperan los procesadores para resolver un problema específico. La tarea del compilador es sencilla, en cambio la del programador es bastante difícil. Implícito: Se usa un lenguaje de programación secuencial y el compilador inserta las instrucciones necesarias para ejecutar el programa en un computador paralelo. El compilador tiene que analizar y comprender las dependencias para asegurar un mapeo eficiente en el computador paralelo.

    Paralelismo implícito/explícito

    edu.red

    Espacio de direcciones compartido: Los programadores ven el programa 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

    edu.red

    Paso de mensajes: Los programadores ven su programa como una colecció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

    edu.red

    Muchos lenguajes de programación para memoria compartida o paso de mensajes son básicamente lenguajes secuenciales aumentados mediante un conjunto de llamadas de sistema especiales. Estas 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. Recientemente han aparecido librerías como PVM, MPI, OpenMP, con primitivas independientes del computador. Paso de mensajes/espacio de direcciones compartido

    edu.red

    Paralelismo de datos: Aplicaciones en las que los datos están sujetos a idéntico procesamiento. Es más apropiado para ejecutar en máquinas SIMD. También se pueden ejecutar en computadores MIMD. Se requiere sincronización global después de cada instrucción, lo que resulta en un código ineficiente. Solución: relajar la ejecución síncrona de las instrucciones. Modelo SPMD. Cada procesador ejecuta el mismo programa asíncronamente. Los 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. Aunque el código generado por estas construcciones no es tan eficiente como el obtenido usando primitivas de bajo nivel. Paralelismo de datos/de control

    edu.red

    Paralelismo de control: Ejecución simultánea de 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 mapear en MIMD ya que el paralelismo de control requiere múltiples cadenas de instrucciones. Paralelismo de datos/de control

    edu.red

    Paso de mensajes Extensiones básicas: Son extensiones en los lenguajes secuenciales para soportar el paso de mensajes.

    Existen dos primitivas básicas de comunicació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, y flag indica si la operación del SEND es bloqueante o no-bloqueante.

    edu.red

    Paso de mensajes La primitiva RECEIVE lee un mensaje del buffer de comunicación en la memoria. Su forma general es: RECEIVE (message, messagesize, source, type, flag) messsage indica el lugar donde se almacenan los datos, messagesize indica el número máximo de bytes a poner en mensaje, source indica la etiqueta del procesador cuyo mensaje se va a leer, type especifica el tipo de mensaje que se va a leer. Puede haber más de un mensaje en el buffer de comunicación de los procesadores fuente. El parámetro type selecciona un determinado mensaje para leer, flag especifica si la operación de recibir es bloqueante o no bloqueante.

    edu.red

    Lenguajes de paralelismo de datos: facilitar al programador la tarea de expresar el paralelismo disponible en un programa de manera independiente de la arquitectura.

    Características: Se genera una sola cadena de instrucciones. Ejecución síncrona de instrucciones. Más fácil escribir y depurar programas de paralelismo de datos puesto que los bloqueos son imposibles. El programador especifica el paralelismo en el código. Asocia un procesador virtual con una unidad fundamental de paralelismo. El programador expresa la computación en términos de las operaciones realizadas por los procesadores virtuales. Permite que cada procesador tenga acceso a las posiciones de memoria de otros procesadores. Paralelismo de datos

    edu.red

    Los compiladores para los lenguajes de paralelismo de datos deben mapear los procesadores virtuales en procesadores físicos, generar código para comunicar datos y esforzarse para la ejecución síncrona de instrucciones. Los procesadores virtuales son emulados por procesadores físicos. Si el número de procesadores virtuales es mayor que el número de procesadores físicos, cada procesador físico emula varios procesadores virtuales. Algunos lenguajes de paralelismo de datos contienen primitivas que permiten al programador especificar el mapeo deseado de los procesadores virtuales en los físicos. Paralelismo de datos

    Partes: 1, 2
    Página siguiente