Вы находитесь на странице: 1из 69

UNIVERSIDAD NACIONAL DEL SANTA

Programacin
Paralela
INTEGRANTES:
Mondoedo Torres, Valerie
Perez Soto, Juan
Vasquez Alvarez, Esteban
Vasquez Silva, Jonnel

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

Los procesadores ejecutan la misma instruccin

SPMD

Los datos en cada procesador son distintos


Los procesadores ejecutan la instruccin en
simultaneo
No debe existir dependencia de datos

Los procesadores ejecutan distintas


instrucciones

MPMD

Los datos en cada procesador son distintos

Los procesadores operan en simultaneo

Es el modelo con mas aceptacin

MPMD

SPMD

MAESTRO-ESCLAVO

Programacin para computadoras


paralelas
En los sistemas multiprocesadores, cada procesador puede
acceder a toda la memoria, es decir, hay un espacio de
direccionamiento compartido.

MEMORIA COMPARTIDA

Programacin para computadoras


paralelas
la memoria esta distribuida entre los procesadores, es
decir, cada procesador tiene acceso a su propia
memoria.

PASO DE MENSAJES

PROCESOS
FINITOS

COMUNICA
CIN ENTRE
PROCESAD
ORES

PROGRAMA
PARALELO

DISTRIBUIR
CARGA

LOCALIZAR
PARALELIS
MO

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 un
programa 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 programa
secuencial y lo hacen explicito, evitando la intervencin del
programador.

Alternativas de
Programacin
Paralela

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.

REDES DE MBITO 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

EXPOSITOR: Jonnel D. Vsquez Silva.

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
supercomputador actual.

red

como

el

mayor

EXPOSITOR: Jonnel D. Vsquez Silva.

COMPUTACIN DISTRIBUIDA

EXPOSITOR: Jonnel D. Vsquez Silva.

CLOUD COMPUTING

Pasamos 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

EXPOSITOR: Jonnel D. Vsquez Silva.

VARIANTES DE LA P. PARALELA

Homogneos
Para 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.

VARIANTES DE LA P. PARALELA

Heterogneos
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.

EXPOSITOR: Jonnel D. Vsquez Silva.

ACTUALIDAD Y AVANCES EN PROGRAMACIN


PARALELA

EXPOSITOR: Jonnel D. Vsquez Silva.

HYPER THREADING
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%

EXPOSITOR: Jonnel D. Vsquez Silva.

TURBO BOOST 2.0


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.

EXPOSITOR: Jonnel D. Vsquez Silva.

PPP (Unidad de Proceso Fsico)

EXPOSITOR: Jonnel D. Vsquez Silva.

ESTILO DE PROGRAMACIN
PARALELA

Las aplicaciones paralelas deben ser escritas siguiendo un


estilo o paradigma de programacin.
Existen muchos estilos de programacin paralela, los ms
usados son:

Paso de mensajes
Variables compartidas
Paralelismo de datos

Las arquitecturas paralelas se diferencian en el estilo de


programacin que ms favorece su implementacin hardware:

Paso de mensajes

Multicomputadores

Variables compartidas

Multiprocesadores

Paralelismo de datos

Procesadores Matriciales

PASOS 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,
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 se


ve como un conjunto de procesos que se intercambian
informacin 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 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.

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

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

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. En estas estructuras estn:
Maestro esclavo o granja de tareas.
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 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.
Usualmente no hay comunicacin entre los esclavos. Si todos los
esclavos ejecutan el mismo cdigo, la aplicacin se puede
implementar con dos programas, uno para el

Maestro

MAESTRO ESCLAVO

Esclavo

Esclavo

Esclavo

E/S

E/S

Red de Interconexin

E/S

E/S

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 operaciones. Nos podemos encontrar aplicaciones en las que
se 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.

DESCOMPOSICIN DE DATOS

E/S

P1

P2

P3

E/S

P4
Red de Interconexin

E/S

E/S

Divide y vencers o descomposicin


recursiva
Esta estructura se utiliza cuando un problema se puede dividir en dos o
ms sub-problemas de forma que cada uno se puede resolver
independientemente, combinndose los resultados para obtener el
resultado final. Si los sub-problemas son instancias ms pequeas del
original, entonces se podran subdividir a su vez recursivamente. Las
tareas presentan una estructura en forma de rbol.

Los programas secuenciales recursivos tienen una implementacin paralela


divide y vencers (paralelismo de tareas). Tambin podemos encontrar esta
estructura descomponiendo los datos de un problema recursivamente
(paralelismo de datos).

DIVIDE Y VENCERAS
P1

P0
Malla
2x2
P2

P3

E/S

E/S

+
Red de Interconexin
+

E/S

E/S

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.

ASIGNACIN
o 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 PARALELO


o 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.