S8-Programacion-Paralela

download S8-Programacion-Paralela

of 69

description

computacion paralela.

Transcript of S8-Programacion-Paralela

  • Programacin

    Paralela

    INTEGRANTES:

    Mondoedo Torres, Valerie Perez Soto, Juan Vasquez Alvarez, Esteban Vasquez Silva, Jonnel

    UNIVERSIDAD NACIONAL DEL SANTA

  • INTRODUCCION

  • PROGRAMACION SECUENCIAL

    COMPUTADORAS CON UN CPU

    PROBLEMAS DIVIDIDOS EN INSTRUCCIONES

    SE EJECUTA UNA INSTRUCCIN A LA VEZ

    SE EJECUTA UNA INSTRUCCIN A LA VEZ

  • PROGRAMACION PARALELA

    COMPUTADORAS CON VARIOS CPU

    PROBLEMAS DIVIDIDOS EN PARTES

    LAS PARTES SE DIVIDEN EN INSTRUCCIONES

    EJECUTA INSTRUCCIONES SECUENCIALES

    EJECUTA LAS PARTES EN SIMULTANEO

  • PROGRAMACION SECUENCIAL PROGRAMACION PARALELA

  • SPMD

    Los procesadores ejecutan la misma instruccin

    Los datos en cada procesador son distintos

    Los procesadores ejecutan la instruccin en

    simultaneo

    No debe existir dependencia de datos

  • MPMD

    Los procesadores ejecutan distintas

    instrucciones

    Los datos en cada procesador son distintos

    Los procesadores operan en simultaneo

    Es el modelo con mas aceptacin

  • MAESTRO-ESCLAVO

    SP

    MD

    MP

    MD

  • Programacin para computadoras

    paralelas

    MEMORIA COMPARTIDA

    En los sistemas multiprocesadores, cada procesador puede

    acceder a toda la memoria, es decir, hay un espacio de

    direccionamiento compartido.

  • Programacin para computadoras

    paralelas

    PASO DE MENSAJES

    la memoria esta distribuida entre los procesadores, es

    decir, cada procesador tiene acceso a su propia

    memoria.

  • PROGRAMA PARALELO

    PROCESOS FINITOS

    LOCALIZAR PARALELIS

    MO

    DISTRIBUIR CARGA

    COMUNICACIN ENTRE PROCESAD

    ORES

  • BIBLIOTECA DE FUNCIONES

    El nivel de abstraccin ms bajo, se escribe con lenguaje secuencial.

    PARALELIZACION AUTOMATICA

    Permiten ahorrar trabajo al programador en el proceso de

    paralelizacin incrementando el nivel de abstraccin.

    COMPILADORES PARALELOS

    Buscan automticamente el paralelismo implcito en unprograma secuencial y lo hacen explicito, evitando la

    intervencin del programador.

  • BIBLIOTECA DE FUNCIONES PARA PROGRAMACION PARALELA

    El nivel de abstraccin ms bajo, se escribe con lenguaje secuencial.

    LENGUAJES PARALELOS Y DIRECTIVAS DEL COMPILADOR

    Permiten ahorrar trabajo al programador en el proceso de paralelizacin incrementando el nivel de abstraccin.

    COMPILADORES PARALELOS

    Buscan automticamente el paralelismo implcito en un programasecuencial y lo hacen explicito, evitando la intervencin delprogramador.

  • Alternativas de

    Programacin

    Paralela

    EXPOSITOR: Jonnel D. Vsquez Silva.

  • EXPOSITOR: Jonnel D. Vsquez Silva.

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    PROGRAMACIN HBRIDA

    Es un tipo de programacin donde se pueden mezclar dos tipos de lenguaje de programacin. Sirve

    cuando el cdigo del ensamblador dificulta la estructura del programa, entonces lo que hace es

    aprovechar las ventajas del lenguaje ensamblador, y de alto nivel para escribir programas mas rpidos

    y eficientes.

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    PROGRAMACIN HBRIDA

    VENTAJAS:

    - Se realiza en menor tiempo el desarrollo del cdigo.

    - Puede interactuar mas con el usuario.

    - Mejora la escalabilidad, hacer mejoras sin afectar el rendimiento.

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    PROBLEMAS TPICOS

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    SISTEMAS PARALELOS

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    SISTEMAS MULTINUCLEO Podemos disponer de varios

    procesadores en un chip. Esta

    posibilidad se ha universalizado

    recientemente.

    MONOPROCESADORES

    SISTEMAS MULTINCLEO

    Sistema universal de Cmputo

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    En las redes de mbito local (Local Area Networks, LAN) se conectan

    varios procesadores por medio de una red de conexin de alta velocidad,

    formndose un cluster, que se utiliza con programacin por paso de

    mensajes, pero puede llegar a poderse utilizar OpenMP

    REDES DE MBITO LOCAL (LAN)

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    SUPERCOMPUTACIN

    Referirse a la resolucin en los sistemas computacionalesms potentes (supercomputadores) de los problemas que

    demandan de ms computacin (meteorologa, estudio

    del genoma, simulacin de molculas...)

    Se puede considerar la red como el mayorsupercomputador actual.

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    COMPUTACIN DISTRIBUIDA

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    CLOUD COMPUTING

    Pasamos a una computacin paralela donde sedistribuyen los recursos de todo tipo: es

    posible tener unos determinados centros de

    computacin, otros de almacenamiento, otros

    se servicios software..., de manera que un

    usuario podra solicitar un determinado

    software de un centro, tomar o almacenar datos

    en otro centro, y requerir de otro que resolviera

    el problema con que est trabajando. La

    combinacin de todos estos elementos

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    VARIANTES DE LA P. PARALELA

    HomogneosPara nosotros ser programacin paralela la que se hace

    usando varios procesadores para acelerar la resolucin

    de los problemas con que trabajemos. Trabajamos con

    algoritmos paralelos, donde se especifica la forma en que

    los distintos elementos de proceso comparten los datos, y

    cmo colaboran en la resolucin de los problemas. En

    general consideraremos que los procesadores son todos

    del mismo tipo, con lo que tendremos sistemas paralelos

    homogneos

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    En los sistemas heterogneos los componentes bsicos

    pueden tener distinta velocidad, capacidades de memoria

    diferentes, o incluso la representacin de los datos ser

    distinta. Los mismos programas de paso de mensajes

    utilizados en otros sistemas se pueden utilizar aqu, pero

    las prestaciones vendrn marcadas por la velocidad del

    procesador ms lento.

    VARIANTES DE LA P. PARALELA

    Heterogneos

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    ACTUALIDAD Y AVANCES EN PROGRAMACIN

    PARALELA

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    Esta tecnologa consiste en

    simular dos procesadores

    lgicos dentro de un nico

    procesador fsico. El resultado es

    una mejora en el rendimiento del

    procesador, puesto que al simular

    dos procesadores se pueden

    aprovechar mejor las unidades de

    clculo mantenindolas ocupadas

    durante un porcentaje mayor de

    tiempo. Esto conlleva una mejora

    en la velocidad de las aplicaciones

    que segn Intel es

    aproximadamente de un 30%

    HYPER THREADING

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    La Tecnologa Intel Turbo Boost 2.01 acelera el

    desempeo del procesador y de grficos para cargas

    mximas, ya que incrementa, de forma automtica, la

    velocidad de procesamiento de los ncleos por encima de

    la frecuencia operativa nominal si no se han alcanzado

    los lmites especificados de energa, corriente y

    temperatura. La activacin del procesador en la

    Tecnologa Intel Turbo Boost 2.0 y el tiempo durante el

    cual el procesador se mantiene en ese estado dependen

    de la carga de trabajo y del entorno operativo.

    TURBO BOOST 2.0

  • EXPOSITOR: Jonnel D. Vsquez Silva.

    PPP (Unidad de Proceso Fsico)

  • ESTILO DE PROGRAMACIN PARALELA

  • Las aplicaciones paralelas deben ser escritas siguiendo unestilo o paradigma de programacin.

    Existen muchos estilos de programacin paralela, los msusados son:

    Paso de mensajes

    Variables compartidas

    Paralelismo de datos

  • Las arquitecturas paralelas se diferencian en el estilo deprogramacin que ms favorece su implementacin hardware:

    Paso de mensajes Variables compartidas Paralelismo de datos

    Multicomputadores Multiprocesadores Procesadores Matriciales

  • PASOS DE MENSAJES

    En este estilo se define un conjunto de procesos con su propio espaciode memoria, pero que pueden comunicarse con otros procesosmediante el envo y la recepcin de mensajes a travs de la red deinterconexin.

    El paradigma asume que cualquier proceso puede enviar un mensaje acualquier otro.

    La implementacin de esta metodologa se suele realizar utilizandolibreras aadidas a los lenguajes de programacin estndar,fundamentalmente C y Fortran.

  • Grfico - Estilo de Paso de Mensajes

    Las OPERACIONES y los DATOS se descomponen en PROCESOS. Los procesos slo tienen acceso directo a los datos privados (locales). Los datos no locales se acceden mediante intercambio de mensajes entre los

    procesos (enviando y recibiendo mensajes).

  • Grfico Procesos y Canales.

    En el paradigma de paso de mensajes, un programa paralelo seve como un conjunto de procesos que se intercambianinformacin a travs de canales.

  • a. HERRAMIENTAS DE SOFTWARE DE PASOS DE MENSAJE

    Para redactar cdigo paralelo basado en paso de mensajes, se dispone de diversas herramientas software:

    Como los lenguajes de programacin antes mencionados, as como Ada u Occam.

    Bibliotecas de funciones que actan de interfaz al sistema de comunicaciones.

    MPI (Message Passing Interface - Interfaz de Paso de Mensajes).

    PVM (Parallel Virtual Machine - Mquina Virtual Paralela).

  • VARIABLES COMPARTIDAS

    Los programas paralelos ejecutados en sistemas devariables compartidas se descomponen en varios procesos(tareas) que comparten los datos asociados a una porcin desu espacio de direcciones.

    Cada proceso puede llevar a cabo la ejecucin de unsubconjunto de iteraciones de un lazo comn, o bien, deforma ms general, cada proceso puede obtener sus tareasde una cola compartida.

  • Grfico - Estilo de Variables Compartidas.

    Las operaciones se descomponen en tareas. Los datos son compartidos por todas las tareas. La sincronizacin es obtenida controlando la escritura y lectura a las

    variables compartidas.

  • a. HERRAMIENTAS DE SOFTWARE DE VARIABLES COMPARTIDAS

    Hay diversas herramientas software para redactar cdigo paralelo basado en variables compartidas:

    Ada 95 (tipos protegidos) y Java

    O bibliotecas de funciones, como Pthread (POSIX-Thread) u OpenMP

    Y alternativas que usan lenguaje secuencial ms directivas dl compilador, como OpenMP.

    POSIX-Pthread es un estndar, introducido en 1996 por el comit de estndares del IEEE, basado en funciones. OpenMP es una biblioteca de funciones, directivas y variables, desarrollado por un grupo representativo de vendedores de hardware y software [OpenMP Home].

  • PARALELISMO DE DATOS

    Es un paradigma de programacin claramente heredado de lasmquinas SPMD y se utiliza principalmente para simplificar laprogramacin de sistemas de memoria distribuida.

    En esta aproximacin, un programa secuencial en un lenguajeestndar es complementado con directivas o anotaciones insertadasen el programa para guiar al compilador en su tarea de distribuir losdatos y las computaciones.

  • Grfico - Estilo de Paralelismo de datos.

    Distintos procesos aplican las mismas operaciones a una parte diferente de la misma estructura de datos.

    Usa un enfoque Single Program, Multiple Data (SPMD). Es una modificacin del algoritmo secuencial.

  • a. HERRAMIENTA DE SOFTWARE DE PARALELISMO DE DATOS

    Los lenguajes con paralelismo de datos, como C* (C start), aparecieron ligados a procesadores matriciales. Estas mquinas son arquitecturas SPMD. Desde su aparicin en 1960 los procesadores

    matriciales se han encontrado dentro de la gama de los supercomputadores, pero en 1997 dejaron de aparecer en la lista

    TOP500.

    Fortran 90, basado en Fortran 77, permite al programador implementar paralelismo de datos utilizando operaciones con

    vectores y matrices.Actualmente los lenguajes de paralelismo de datos ms populares

    son CM-Fortran (Connection Machine Fortran), Fortran D, Craft, Vienna Fortran] y especialmente el considerado como estndar

    High-Performance Fortrun (HPF).

  • ESTRUCTURA DE PROGRAMACIN PARALELA

  • Maestro esclavo o granja de tareas.

    Analizando la estructura (grafo) de las tareas (unidad de trabajo de laaplicacin) y de los procesos (unidades de cdigo en ejecucin) demltiples programas paralelos, se puede encontrar que hay ciertospatrones que se repiten en distintos programas y dentro de unprograma.

    En estas estructuras de las relaciones entre las tareas o entreprocesos representan comunicaciones. En estas estructuras estn:

    Descomposicin de datos

    Divide y vencers o descomposicin recursiva

  • Maestro esclavo o granja de tareas

    En este caso, en la estructura de procesos se distingue unproceso Maestro y mltiples esclavos. El proceso Maestro seencarga de distribuir las tareas de un conjunto (granja) entre elgrupo de esclavos, y de ir recolectando los resultados parcialesque van calculando los esclavos, con los que el Maestro obtieneel resultado final.

    Usualmente no hay comunicacin entre los esclavos. Si todos losesclavos ejecutan el mismo cdigo, la aplicacin se puedeimplementar con dos programas, uno para el

  • PE/S M

    P

    E/S M

    P

    E/S M

    P

    E/S M

    Red de Interconexin

    Maestro

    Esclavo Esclavo Esclavo

    MAESTRO ESCLAVO

  • Descomposicin de datos

    Esta alternativa es muy utilizada para obtener tareas paralelas enproblemas en los que se opera con grandes estructuras de datos. Laestructura de datos de entrada o la estructura de datos de salida oambas, se dividen en partes. A partir de esta divisin se derivan lastareas paralelas.

    Estas generalmente realizan operaciones similares, aunque haydescomposiciones en las que las tareas no realizan exactamente lasmismas operaciones. Nos podemos encontrar aplicaciones en las quese pueden realizar distintas descomposiciones de datos alternativas.

  • Los algoritmos con imgenes, por ejemplo, fcilmente admiten a una descomposicin de datos. Una estructura de procesos para esta alternativa seria la representada en la figura. Los procesos pueden englobar varias tareas.

    Los diferentes procesos ejecutan tpicamente el mismo cdigo (SPMD), aunque cada uno trabaja sobre un conjunto de datos distintos.

  • PE/S M

    P

    E/S M

    P

    E/S M

    P

    E/S M

    Red de Interconexin

    P1 P2 P3 P4

    DESCOMPOSICIN DE DATOS

  • Divide y vencers o descomposicin recursiva

    Esta estructura se utiliza cuando un problema se puede dividir en dos oms sub-problemas de forma que cada uno se puede resolverindependientemente, combinndose los resultados para obtener elresultado final. Si los sub-problemas son instancias ms pequeas deloriginal, entonces se podran subdividir a su vez recursivamente. Lastareas presentan una estructura en forma de rbol.

  • Los programas secuenciales recursivos tienen una implementacin paraleladivide y vencers (paralelismo de tareas). Tambin podemos encontrar estaestructura descomponiendo los datos de un problema recursivamente(paralelismo de datos).

  • PE/S M

    P

    E/S M

    P

    E/S M

    P

    E/S M

    Red de Interconexin

    +

    +

    ++

    +

    + +

    Malla

    2 x 2

    P0 P1

    P2 P3

    DIVIDE Y VENCERAS

  • Para quin es importante? Diseadores de Algoritmos

    Disear algoritmos que corran bien en sistemas reales.

    Programadores Comprender dnde radican las claves del rendimiento para obtener el

    mejor posible en un sistema dado.

    Arquitectos Comprender las cargas, las interacciones, y la importancia de los

    grados de libertad.

    Importante para el diseo y la evaluacin.

  • Importancia de la programacin

    Diseamos mquinas para que ejecuten programas. As pues, stos: Ayudan a tomar decisiones en el diseo hardware; Ayudan a evaluar los cambios en los sistemas.

    Son la clave que dirige los avances en la arquitectura uniprocesador. Caches y diseo del conjunto de instrucciones. Mayor importancia en multiprocesadores. Nuevos grados de libertad.

    Mayor penalizacin si hay desacoplo entre programas y arquitectura. Ms espacio para optimaciones en software.

  • Algunos conceptos importantes

    TAREA: Orden de trabajo que no puede descomponerse en subrdenes ejecutables en paralelo. Se ejecuta secuencialmente; la concurrencia solo se da entre tareas. Granularidad fina frente a granularidad gruesa, dependiendo de la cantidad de trabajo

    que suponga la realizacin de la tarea.

    PROCESO(THREAD) Entidad abstracta que ejecuta las tareas que le son asignadas. Un programa paralelo est constituido por muchos procesos cooperando. Hay una comunicacin y sincronizacin en los procesos para la ejecucin de las tareas.

    PROCESADOR: Elemento fsico en el que se ejecutan los procesos. Los procesos constituyen la mquina virtual para el programador.

  • Descomposicin Divisin del programa en tareas que sern distribuidas entre los

    procesos.

    Las tareas pueden estar dispuestas para ejecucin dinmicamente. El nmero de tareas disponibles puede variar con el tiempo.

    Identificar la concurrencia y decidir a qu nivel se va a explotar.

    Objetivo: Suficientes tareas para mantener ocupados los procesos pero no demasiadas. El nmero de tareas disponibles en un momento define el lmite del

    speedup que podemos conseguir.

  • ASIGNACINo Mecanismo especfico para dividir el trabajo entre procesos.

    Junto con la descomposicin recibe el nombre de particin.

    Objetivos:

    o equilibrar la carga;

    o minimizar comunicacin y coste de la gestin de la asignacin.

    o Aproximarse a las estructuras suele ser buena idea.

    Inspeccin del cdigo (paralelizar bucles).

    Existen procesos heursticos ya establecidos.

    Asignacin esttica frente a asignacin dinmica.

    o La particin es la primera preocupacin del programador.

    Generalmente independiente de la arquitectura o el modelo de programacin.

    Pero el coste y complejidad de las primitivas usadas puede afectar a la decisin.

  • ESCRIBIR EL CDIGO PARALELOo Para ejecutar las tareas asignadas, los procesos necesitan mecanismos para:

    referirse y acceder a los datos;

    intercambiar datos con otros procesos (comunicacin);

    sincronizar las actividades.

    o Las decisiones tomadas en la redaccion del cdigo son muy dependientes

    Del modelo de programacin

    De la eficiencia con que las primitivas del modelo estn implementadas.

    o En esta parte se incluyen, entre otras cosas:

    cmo organizar las estructuras de datos;

    Cmo planificar temporalmente las tareas asignadas a un proceso para explotar la

    localidad de datos

    Cmo organizar la comunicacin entre procesos resultantes de la asignacin.

  • o Objetivos

    Reducir el coste de comunicacin y sincronizacin.

    Preservar las referencias a datos locales (organizacin de las

    estructuras de datos).

    Programar las tareas para satisfacer rpidamente las dependencias.

    Reducir la sobrecarga que introduce el paralelismo.

    o Cercanos a la Arquitectura (y al modelo de programacin)

    La eleccin depende mucho de la comunicacin, eficiencia y las

    primitivas.

    La arquitectura debe proporcionar las primitivas adecuadas de

    manera eficiente.

  • EVALUACIN

    o Despus de escribir el cdigo ya tenemos un programa

    paralelo.

    o Dos aspectos del mapeado:

    Qu procesos se ejecutarn en el mismo procesador.

    Qu procesos se ejecutan en un procesador determinado.

    El mapeado se realiza en una topologa determinada.