Professional Documents
Culture Documents
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
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
Shibu lijack
Shibu lijack
Shibu lijack
Shibu lijack
Shibu lijack
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
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
Shibu lijack
Shibu lijack
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...)
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
Shibu lijack
Cloud Computing
los recursos de todo tipo: es posible tener unos determinados centros de computacin, otros de almacenamiento, otros se servicios software...
Shibu lijack
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
Shibu lijack
Shibu lijack
Shibu lijack
Programacin en OpenMP - C
Shibu lijack
Programacin en OpenMP
Shibu lijack
Shibu lijack
Shibu lijack
Shibu lijack
Shibu lijack
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
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
Shibu lijack
PASO DE MENSAJES
Comunicacin en Paso de Mensajes
Shibu lijack
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
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
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
Shibu lijack
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.
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
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
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
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
E/S
E/S
+ + + +
Red de Interconexin +
E/S
E/S
Shibu lijack
26
11
15
Shibu lijack
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
Shibu lijack
Shibu lijack
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
Nivel de funcin
Func1() { }
Func2() { }
Func3() { }
For() { }
While() { }
Shibu lijack
El S.O quita el proceso que se estaba ejecutando, ejecuta otro y vuelve a colocar el 1 proceso sin darnos cuenta
HardDisc
Shibu lijack
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
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
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
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