Está en la página 1de 106

PROGRAMACIN PARALELA

UNIVERSIDAD NACIONAL DEL SANTA

Haga clic para modificar el estilo de ARQUITECTURA DE COMPUTADORAS subttulo del patrn

Shibu lijack

QU ES PROMAGRAMACIN PARALELA?

Shibu lijack

Shibu lijack

PROBLEMA

INSTRUCCIONES

CPU

Shibu lijack

PUNTO DE PARTIDA

Shibu lijack

Shibu lijack

PROGRAMACION PARALELA PROGRAMACION SECUENCIAL

Shibu lijack

O AS ET S A C TE F AR P

Shibu lijack

Shibu lijack

CARACTERISTICAS

Shibu lijack

Shibu lijack

EJEMPLO DE SPMD

Shibu lijack

Shibu lijack

EJEMPLO DE MPMD

Shibu lijack

RA PA AS ENT R MI NE OS A RR BTE LEL HE RA O PA AS AM GR RO P

Shibu lijack

Shibu lijack

CMO OBTENER UN PROGRAMA PARALELO?

Shibu lijack

Shibu lijack

ALTERNATIVAS DE PROGRAMACIN PARALELA

Shibu lijack

Computacin Paralela - Perspectivas


Nosotros sabemos que los procesadores actuales
son paralelos son paralelos y es muy habitual tener en los procesadores normales tener 4 ncleos, 6 ncleos ya se estn anunciando los procesadores que tendrn 12 ncleos.
ltimos 10 aos, las tendencias en computacin apuntan a la presencia continua de la computacin paralela, dado que las redes de interconexin continan avanzando significativamente en trminos de velocidad de comunicacin y ancho de banda.

Adems de esto, podemos decir que durante los

Shibu lijack

Programacin OpenMP
OpenMP es una API (Application Program
Interface) que posibilita la programacin paralela en entornos multiprocesador con memoria compartida, como es el caso de la mayora de los procesadores actualmente en el mercado. Utilizando modificaciones en los compiladores, esta tecnologa permite el desarrollo incremental de aplicaciones paralelas a partir de cdigo fuente serie. Esta norma est definida por un consorcio que rene importantes fabricantes de hardware y software.
Shibu lijack

Programacin MPI
MPI: (acrnimo de Message Passing Interface) es
una propuesta de estndar para un interface de paso de mensajes para entornos paralelos, especialmente aquellos con memoria distribuida. En este modelo, una ejecucin consta de uno o ms procesos que se comunican llamando a rutinas de una biblioteca para recibir y enviar mensajes entre procesos.

Shibu lijack

Entonces:

Shibu lijack

Programacin Hbrida:
Las aplicaciones en clusters se pueden
programar para utilizar paso de mensajes entre todos los procesadores. Pero es posible obtener mejores prestaciones si se utiliza un modelo hbrido de comunicacin con comparticin de informacin por memoria compartida y con memoria distribuida, a travs de la fusin de MPI con OpenMP. El objetivo de este mdulo ser la presentacin de ejemplos de programacin MPI+OpenMP en sistemas hbridos.
Shibu lijack

Problemas Tpicos en la programacin paralela


Los problemas tpicos que se abordan con la
programacin paralela son: problemas de alto coste, de gran dimensin, en los que se necesita la respuesta en un tiempo mximo.

La computacin paralela se ha convertido en el

paradigma dominante en la arquitectura de computadores, principalmente en los procesadores multincleo. Sin embargo, recientemente, el consumo de energa de los ordenadores paralelos se ha convertido en una preocupacin.
Shibu lijack

Paralelismo en Sistemas actuales de Programacin paralela


Una vez que hemos visto la importancia que
tiene el paralelismo para aumentar las prestaciones de los sistemas computacionales, nos planteamos los tipos de sistemas paralelos que tenemos en la actualidad a nuestro alcance. Algunos de ellos son:

Shibu lijack

Sistemas Multinucleo y Programacin Paralela


Podemos disponer de
varios procesadores en un chip. Esta posibilidad se ha universalizado recientemente, al haber sustituido en la prctica los sistemas multincleo a los monoprocesadores como sistema universal de cmputo

Shibu lijack

Redes de Ambito Local - LAN


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

Shibu lijack

Supercomputacin
Referirse a la resolucin en los sistemas
computacionales ms potentes (supercomputadores) de los problemas que demandan de ms computacin (meteorologa, estudio del genoma, simulacin de molculas...)

Se puede considerar la red como el mayor


supercomputador actual.

Shibu lijack

Computacin Distribuida
Es
computacin con procesadores geogrficamente distribuidos. Estos procesadores constituyen una red, pero para su utilizacin se requiere de unas herramientas ms sofisticadas que en el caso de redes locales.
Shibu lijack

Web Computing P2P


A una computacin paralela donde
se distribuyen 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

Shibu lijack

Cloud Computing
los recursos de todo tipo: es posible tener unos determinados centros de computacin, otros de almacenamiento, otros se servicios software...

A una computacin paralela donde se distribuyen

Shibu lijack

Variantes de la Programacin Paralela - Alternativas

Shibu lijack

Programacin Concurrente
Se habla de Programacin
Concurrente para referirse al caso en que varios procesos o threads colaboran en la resolucin de un problema. Estos procesos pueden compartir el uso de un mismo procesador, en cuyo caso no hablaramos de programacin paralela.

Shibu lijack

Sistemas Paralelos Homogneos


Para nosotros ser programacin paralela la
que se hace usando varios procesadores para acelerar la resolucin de los problemas con que trabajemos. Trabajaremos con algoritmos paralelos, donde se especifica la forma en que los distintos elementos de proceso comparten los datos.

Shibu lijack

Sistemas Paralelos Heterogeneos


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.

Shibu lijack

Sistemas Paralelos Heterogneos

Shibu lijack

Programacin en OpenMP - C

Shibu lijack

Programacin en OpenMP

Shibu lijack

Actualidad y avances en la programacin paralela.


HYPER THREADING

Shibu lijack

Actualidad y avances en la programacin paralela.


Intel Turbo Boost

Shibu lijack

Intell Parallel Studio - XE

Shibu lijack

Intell Parallel Studio - XE


Ofrece los compiladores C/C++ y Fortran lderes del mercado, as como las
siguientes libreras y herramientas de anlisis para aumentar el rendimiento de aplicaciones: Intel Composer XE Nuevo: Mejor desarrollo paralelo con Intel PBB Nuevo: Optimizado para el nuevo procesador Sandy Bridge Nuevo: Ms caractersticas de Fortran 2008 (incluyendo Co-Arrays) y Fortran 2003. Intel Inspector XE Nuevo: Identifica los errores difciles de encontrar en la memoria antes de que ocurran. Intel VTune Amplifier XE Nuevo: Una interfaz ms intuitiva, rpidos grficos estadsticos y visualizacin de la lnea de tiempo. Nuevo: El performance profiler encuentra los cuellos de botella, tanto en cdigo en serie cmo en paralelo, que limitan el rendimiento.

Shibu lijack

ESTILOS DE PROGRAMACIN PARALELA

Shibu lijack

ESTILOS DE P. P.

00 Existen muchos estilos de programacin paralela y los ms usados son paso de mensajes, variables compartidas y paralelismo de datos. Las arquitecturas paralelas se diferencian en el estilo de programacin que ms favorece su implementacin hardware: paso de mensajes para multicomputadores, variables compartidas para multiprocesadores y paralelismo de datos para procesadores matriciales.Shibu lijack

Paso de Mensajes

Shibu lijack

PASO DE MENSAJES
En este estilo se define un conjunto de procesos con su propio espacio de memoria, pero que pueden comunicarse con otros procesos mediante el envo y la recepcin de mensajes a travs de la red de interconexin. El paradigma asume que cualquier proceso puede enviar un mensaje a cualquier otro. La implementacin de esta metodologa se suele realizar utilizando libreras aadidas a los lenguajes de programacin estndar, Shibu lijack fundamentalmente C y Fortran.

PASO DE MENSAJES

Grfico - Estilo de Paso de Mensajes.

Shibu lijack

PASO DE MENSAJES
De la grfica se puede decir que: v Las OPERACIONES y los DATOS se descomponen en PROCESOS. v Los procesos slo tienen acceso directo a los datos privados (locales). v Los datos no locales se acceden mediante intercambio de mensajes entre los procesos (enviando y recibiendo mensajes). v La transferencia de data requiere operaciones cooperativas para ser ejecutada por cada proceso (una operacin de envo debe tener una operacin de recepcin)
Shibu lijack

PASO DE MENSAJES

En el paradigma de paso de mensajes, un programa paralelo se ve como un conjunto de procesos que se intercambian informacin a travs de canales.
Grfico Procesos y Canales.

Shibu lijack

PASO DE MENSAJES
Herramientas de Software de Paso de Mensajes 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; o bibliotecas de funciones que actan de interfaz al sistema de comunicaciones, como MPI (Message Passing Interface - Interfaz de Paso de Mensajes) y PVM (Parallel Virtual Machine Shibu lijack Mquina Virtual Paralela).

PASO DE MENSAJES
Comunicacin en Paso de Mensajes Las funciones bsicas de comunicacin que ofrecen las herramientas software para paso de mensajes han de permitir, al menos, comunicacin entre dos procesos (uno-a-uno). Para ello se utilizan dos funciones: una para enviar y otra para recibir: Send (destino, datos), funciona para enviar datos.
Shibu lijack

PASO DE MENSAJES
Comunicacin en Paso de Mensajes

Grfica Transmisin Sncrona en Paso de Mensajes

Shibu lijack

PASO DE MENSAJES
Comunicacin en Paso de Mensajes

Grfica Transmisin Asncrona en Paso de Mensajes

Shibu lijack

LE S IA B VAR DAS R TI MPA CO

Shibu lijack

VARIABLES COMPARTIDAS

Los programas paralelos ejecutados en sistemas de variables compartidas se descomponen en varios procesos (tareas) que comparten los datos asociados a una porcin de su espacio de direcciones. Cada proceso puede llevar a cabo la ejecucin de un subconjunto de iteraciones de un lazo comn, o bien, de forma ms general, cada proceso puede obtener sus tareas de una cola compartida. Shibu lijack

VARIABLES COMPARTIDAS

Grfico - Estilo de Variables Compartidas

Shibu lijack

VARIABLES COMPARTIDAS

De la grfica se puede decir que: 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.
Shibu lijack

VARIABLES COMPARTIDAS

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 del compilador, como OpenMP.
Shibu lijack

VARIABLES COMPARTIDAS

Herramientas de Software de Variables Compartidas: 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].
Shibu lijack

PARAL ELISM DATOS O DE :


Shibu lijack

PARALELISMO DE DATOS

Es un paradigma de programacin claramente heredado de las mquinas SPMD y se utiliza principalmente para simplificar la programacin de sistemas de memoria distribuida. En esta aproximacin, un programa secuencial en un lenguaje estndar es complementado con directivas o anotaciones insertadas en el programa para guiar al compilador en su tarea de distribuir los datos y las computaciones.
Shibu lijack

PARALELISMO DE DATOS

Grfico - Estilo de Paralelismo de Datos

Shibu lijack

PARALELISMO DE DATOS

De la grfica se puede decir que:

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.
Shibu lijack

PARALELISMO DE DATOS

Herramientas de Software de Paso de Mensajes 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. No obstante, actualmente, la mayor parte de los computadores de altas prestaciones tienen Shibu lijack compiladores para lenguajes con paralelismo

HALIDE

Shibu lijack

HALIDE

Halide es un nuevo lenguaje de programacin diseado para hacer ms fcil para escribir cdigo de alto rendimiento de procesamiento de imagen en las mquinas modernas. Su frontal actual es una inmersin en C + +.
Shibu lijack

ESTRUCTUTAS DE PROGRAMACIN PARALELA

Shibu lijack

ESTRUCTURAS DE P. P.

00 Analizando la estructura (grafo) de las tareas (unidad de trabajo de la aplicacin) y de los procesos (unidades de cdigo en ejecucin) de mltiples programas paralelos, se puede encontrar que hay ciertos patrones que se repiten en distintos programas y dentro de un programa. En estas estructuras de las relaciones entre las tareas o entre procesos representan comunicaciones. Shibu lijack

CLAVO O - ES AESTR M

Shibu lijack

MAESTRO - ESCLAVO
Maestro
Esclav o Esclav o MAESTRO ESCLAVO Esclav o

E/ S

E/ S

Red de Interconexin

E/ S

E/ S

Shibu lijack

MAESTRO - ESCLAVO

En este caso, en la estructura de procesos se distingue un proceso Maestro y mltiples esclavos. El proceso Maestro se encarga de distribuir las tareas de un conjunto (granja) entre el grupo de esclavos, y de ir recolectando los resultados parciales que van calculando los esclavos, con los que el Maestro obtiene el resultado final.
Shibu lijack

DESCO

MPOS ICIN DE DATO S

Shibu lijack

DESCOMPOSICIN DE DATOS

Esta alternativa es muy utilizada para obtener tareas paralelas en problemas en los que se opera con grandes estructuras de datos. La estructura de datos de entrada o la estructura de datos de salida o ambas, se dividen en partes. A partir de esta divisin se derivan las tareas paralelas. Estas generalmente realizan operaciones similares, aunque hay descomposiciones en las que las tareas no realizan exactamente las mismas
Shibu lijack

DESCOMPOSICIN DE DATOS

DESCOMPOSICIN DE DATOS P P

E/S P1 P2 P3 P4

E/S

Red de Interconexin

E/S

E/S

Shibu lijack

C.- DIVIDE Y VENCERS


Dividir un problema P en

subproblemas p1,p2,p3.pn. Resolver cada subproblema, obteniendo soluciones parciales S1,S2,S3Sn Combinar las soluciones y asi resolver el problema. La solucin de los subproblemas se puede hacer en paralelo Fcilmente se obtiene un implementacin SPMD para divide y Shibu lijack

Por

ejemplo un vector cuyo componentes se van a sumar se puede descomponer recursivamente en dos vectores, hasta llegar a vectores de dos componentes

Shibu lijack

Diseo e implementacin
En primer lugar ha de plantearse el
problema de forma que pueda ser descompuesto en k subproblemas del mismo tipo, pero de menor tamao, es decir 0<k<n (n=tamao de la entrada) En segundo lugar han de resolverse independientemente todos los subproblemas, bien directamente si son elementales o bien de forma recursiva. Por ltimo, combinar las soluciones obtenidas en el paso anterior para Shibu lijack

Las tareas presentan una estructura en forma de rbol


DIVIDE Y VENCERAS
P0 Malla 2x2 P2 P3 P P P1

E/S

E/S

+ + + +

Red de Interconexin +

E/S

E/S

Shibu lijack

Suma de 4 nmeros naturales:

26

11

15

Shibu lijack

D.- Segmentada (pipeline) o flujo de datos


Resolver un problema descomponindolo
en una serie de tareas sucesivas Los datos fluyen por la estructura de los procesadores. Cada tarea puede tener un peso diferente y es preferible dedicar distinto nmero de procesadores a cada tarea Este seria un caso tpico para el modo MPMD
P0 P1 P2
Shibu lijack

Por ejemplo, en un decodificador

de imgenes JPEG, se aplica en secuencia a bloques de 8x8 pixeles de una imagen de entrada, las siguientes funciones: Decodificacin De Entropa Cuantificacin Inversa Transformada Del Coseno Inverso Conversin RGB

Shibu lijack

Shibu lijack

PROCESOS DE PROGRAMACIN PARALELA

Shibu lijack

Para obtener una versin paralela de una


aplicacin con una biblioteca de funciones, con directivas o con un lenguaje de programacin, se podran seguir los siguientes pasos:

Descomponer la aplicacin en tareas


independientes Asignar tareas a procesos o a hebras Redactar cdigo paralelo Evaluar prestaciones
Shibu lijack

Shibu lijack

a.- Descomposicin en tareas


Busca unidades de trabajo en la
aplicacin que se puedan ejecutar en paralelo Es conveniente en esta fase representar la estructura de las tareas grficamente mediante un grafo dirigido Los arcos en el grafo representan flujo de datos y de control, y los vrtices, tareas.
T1 T2 T4 Shibu lijack T3

El grafo permite al programador detectar

grficamente las tareas que se pueden ejecutar en paralelo en cada momento y las dependencias entre ellas Esta bsqueda se puede realizar en un cdigo secuencial que resuelva la aplicacin, en diferentes descripciones del problema Si partimos del cdigo secuencial, para extraer paralelismo nos podemos situar en dos niveles de abstraccin Nivel de funcin Nivel de bucle:
Shibu lijack

Nivel de funcin:
Analizando las dependencias entre las funciones del cdigo, encontramos las que son independientes o las que se pueden hacer independientes, y por tanto se pueden ejecutar en paralelo

Nivel de bucle:
Analizando las iteraciones de los bucles dentro de una funcin, podemos encontrar si son o se pueden hacer independientes. Con el anlisis de los bucles, podemos detectar paralelismo Shibu lijack

Grafo de dependencias entre tareas


PROGRAM A

Nivel de funcin

Func1() { }

Func2() { }

Func3() { }

Nivel de Bucle, bloque

For() { }

While() { }

Shibu lijack

B.- Asignar tareas a procesos o hebras


En esta etapa se realiza la asignacin de
las tareas del grafo de dependencias a procesos y a hebras La asignacin a procesos o hebras est ligada con la asignacin a procesadores La Exactitud de los procesos y de las hebras depender del numero de procesadores; cuanto mayor sea su nmero, menos tareas se asignaran a cada proceso Tambin depende del tiempo de comunicacin y sincronizacin
Shibu lijack

La posibilidad de utilizar procesos y/o hebras depende de varios factores:


La arquitectura en la que se va a ejecutar el
programa paralelo. En un SMP y en procesadores multihebra es ms eficiente usar hebras. En arquitectura mixtas, como cluster de SMP, serian conveniente usar tanto hebras como procesos, especialmente si el nmero de procesadores en un SMP es mayor que el nmero de nodos en un cluster El sistema operativo debe ser multihebra para poder utilizar hebras. Algunos ejemplos como Windows , Linux, Unix, Mac OS X.
Shibu lijack

El S.O llama al proceso y se realiza su ejecucin


HardDisc

S.O Usuario CPU

Si el usuario requiere un proceso

El S.O quita el proceso que se estaba ejecutando, ejecuta otro y vuelve a colocar el 1 proceso sin darnos cuenta
HardDisc

Si el usuario Requiere otro proceso


S.O Usuario CPU

Shibu lijack

Para usar hebras, las herramientas de

programacin que utilicemos deben permitir poder crearlas; igualmente, para utilizar procesos, las herramientas deben permitir crearlos. Son ejemplos, Monitor residente, Procesamiento por lotes, Almacenamiento temporal. Como regla bsica, se tiende a asignar las iteraciones de un bucle (paralelismo de datos) a hebras, y las funciones, a procesos (paralelismo de tareas).
Shibu lijack

La asignacin debera repartir la carga de

trabajo (tiempo de clculo) optimizando la comunicacin y sincronizacin, de forma que todos los procesadores empiecen y terminen a la vez En el grafo de tareas, estas representan tiempo de clculo, y los arcos, tiempo de comunicacin y sincronizacin Es conveniente conocer o estimar el tiempo de ejecucin de cada tarea y de las comunicaciones /sincronizaciones entre ellas Replicar Tareas Por un lado, la arquitectura puede ser heterognea u homognea
Shibu lijack

Si es heterognea, consta de

componentes con diferentes prestaciones, por lo que un buen equilibrado debera asignar ms trabajo a los nodos rpidos Una arquitectura homognea, puede ser uniforme o no. Si es uniforme, la comunicacin de los procesadores con memoria (y probablemente con otros componentes) supone el mismo tiempo sean cuales sean los dos componentes que intervienen
Shibu lijack

Si la arquitectura es homognea pero

no uniforme, es ms difcil asignar las tareas (cdigo y datos) de forma que se minimice el tiempo de comunicacin y sincronizacin (arcos en el grafo de tareas) y en general el tiempo de ejecucin Para mejorar el tiempo de ejecucin se pueden eliminar transferencias a travs de la red asignando tareas al mismo procesador (mismo nodo), y disminuir la distancias que se atraviesan en las transferencias
Shibu lijack

La asignacin de tareas a

procesadores (procesos, hebras) se puede realizar de forma esttica (compilacin) y dinmica (ejecucin). La asignacin dinmica es til para evitar repartos estaticos complejos de tareas en entornos heterogneos Permite que acabe una aplicacin aunque falle algn procesador, pero consume un tiempo adicional de comunicacin y sincronizacin
Shibu lijack

Ejemplos Esttico.-

Shibu lijack

Dinmico

Shibu lijack

Escribir el cdigo paralelo


El cdigo va a depender del estilo de
programacin que se utilice(variables compartidas, paso de mensajes, paralelismo de datos), del modo de programacin (SPMD, MPMD, mixto), del punto de partida (versin secuencial, descripcin del problema), de la herramienta software disponible para hacer explicito el paralelismo (lenguajes de programacin, directivas, bibliotecas de funciones, compilador) y de la estructura (granja de tareas, segmentada, Shibu lijack

Crear y terminar procesos (hebras),o

en caso de que se creen de forma esttica, enrolar o desenrolar procesos en el grupo que va a cooperar en el clculo. Localizar paralelismo. Asignar la carga de trabajo conforme a la decisin tomada en el paso anterior. Comunicar y sincronizar los diferentes procesos (hebras).

Shibu lijack

Evaluacin de prestaciones
Una vez redactado el programa

paralelo, se evaluaran sus prestaciones Si las prestaciones alcanzadas no son las que requieren se debe volver a etapas anteriores del proceso de implementacin Si se vuelve a la etapa escritura, se puede elegir otra herramienta de programacin, no todas ofrecen las mismas prestaciones, depende de su nivel de aprovechamiento de la Shibu lijack arquitectura

PROGRAMACIN PARALELA
UNIVERSIDAD NACIONAL DEL SANTA

Haga clic para modificar el estilo de ARQUITECTURA DE COMPUTADORAS subttulo del patrn

Shibu lijack

INTEGRANTES

Lpez Heredia, Johan Ruiz Guzmn, Luis Urtecho Gmez, Jean Yauri Villanueva,

Yarina
Shibu lijack

A todos

Shibu lijack