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.
Top Related