Académique Documents
Professionnel Documents
Culture Documents
TEMA:
PROGRAMACION PARALELA
CICLO:
VIII
ESTUDIANTE:
MONDOEDO TORRES Marlene Valerie
PEREZ SOTO Juan
VASQUEZ ALVAREZ Esteban
VASQUEZ SILVA
Jonnel
DEDICATORIA
ATTE El Grupo
AGRADECIMIENTO
INGENIERIA DE SISTEMAS E INFORMATICA ARQUITECTURA DE
COMPUTADORAS
PRESENTACIN
INGENIERIA DE SISTEMAS E INFORMATICA ARQUITECTURA DE
COMPUTADORAS
INDICE
I.
INTRODUCCIN:
INGENIERIA DE SISTEMAS E INFORMATICA ARQUITECTURA DE
COMPUTADORAS
II.
PROGRAMACIN PARALELA:
1. MODOS DE PROGRAMACIN
1.1 HERRAMIENTAS PARA OBTENER PROGRAMAS PARALELOS
1.2 COMO OBTENER UN PROGRAMA PARALELO
2. ALTERNATIVAS DE PROGRAMACIN PARALELA
2.1 ANCHO DE BANDA:
2.2 PROBLEMAS TPICOS EN LA PROGRAMACIN PARALELA
2.3 VARIANTES DE LA PROGRAMACIN PARALELA
2.4
PARALELA.
LINKOGRAFA
INTRODUCCIN
La PROGRAMACIN PARALELA consiste en usar mltiples recursos
simultneamente para resolver un problema dado:
Programacin en serie:
A mediados de
supercomputadoras
PROGRAMACIN PARALELA
INTRODUCCIN:
Si queremos entender el funcionamiento y/o construccin de un programa
paralelo podemos partir de:
INGENIERIA DE SISTEMAS E INFORMATICA ARQUITECTURA DE
COMPUTADORAS
Ejemplo:
Si tenemos una aplicacin escrita en C que requiere realizar el clculo
del nmero para luego utilizarlo en otro bloque de cdigo (mtodo,
funcin, procedimiento, etc).
La versin paralela va a depender de la descripcin del problema que
se ha utilizado en la versin secuencial de partida.
Ventajas de la conversin al paralelismo:
Se conoce el tiempo de ejecucin real de las diferentes funciones o
tareas que consta la aplicacin, lo que facilita la distribucin
equilibrada de la carga de trabajo entre procesadores.
Permite encontrar las partes de la aplicacin que requieren ms
esfuerzo de paralelizacin (Suponen ms tiempo).
b. Y por definicin de la
PROGRAMACIN PARALELA
Tradicionalmente, los programas se han escrito para el cmputo en serie.
Para resolver un problema, se construye un algoritmo y se implementa
como un flujo en serio de instrucciones. Estas instrucciones se ejecutan en
una unidad central de procesamiento (CPU). Solo puede ejecutarse una
procesadores,
computadoras
procesadores
con
multi-core,
sistemtica a una
PARALELISMO DE DATOS
El paralelismo de datos es el paralelismo inherente en programas
con ciclos, que se centra en la distribucin de los datos entre los diferentes
nodos computacionales que deben tratarse en paralelo. La paralelizacin
de ciclos conduce a menudo a secuencias similares de operaciones no
necesariamente idnticas o funciones que se realizan en los elementos
de una gran estructura de datos. Muchas de las aplicaciones cientficas y
de ingeniera muestran paralelismo de datos.
Una dependencia de terminacin de ciclo es la dependencia de una
iteracin de un ciclo en la salida de una o ms iteraciones anteriores. Las
dependencias de terminacin de ciclo evitan la paralelizacin de ciclos. Por
ejemplo, considere el siguiente pseudocdigo que calcula los primeros
nmeros de Fibonacci:
1:
2:
3:
4:
5:
6:
7:
PREV1 := 0
PREV2 := 1
do:
CUR := PREV1 + PREV2
PREV1 := PREV2
PREV2 := CUR
while (CUR < 10)
PARALELISMO DE TAREAS
El paralelismo de tareas es la caracterstica de un programa paralelo en la
que clculos completamente diferentes se pueden realizar en cualquier
conjunto igual o diferente de datos. Esto contrasta con el paralelismo de
datos, donde se realiza el mismo clculo en distintos o mismos grupos de
datos. El paralelismo de tareas por lo general no escala con el tamao de
un problema.
10
1. MODOS DE PROGRAMACIN:
Se pueden distinguir dos modos de programacin:
A. Modo SPMD ( Single Program Multiple Data):
Llamado tambin Paralelismo de Datos. Se escribe un solo programa
y todos los procesadores ejecutaran el mismo programa. Multiples
Datos significa que los datos se dividen en pedazos y se asignan a
cada procesador. Los resultados obtenidos al final son aglomerados
(juntados), a pesar de ejecutar todos el mismo programa
(instruccin) los resultados sern distintos debido a los datos que
usan al ejecutar dicho programa.
Principales caracteristicas:
11
12
C. Modo Mestro-Esclavo
En los programas paralelos se pueden utilizar combinaciones MPMD
y SPMD. La programacin
puede considerar una variante del modo MPMD). En este modo, hay
un programa dueo que se encarga de distribuir trabajo (tareas)
entre procesos esclavos
Todos
los
procesadores
se
encuentran
igualmente
13
1.1
14
PROGRAMACIN
PARALELA
Utilizacin de un lenguaje secuencial, y una biblioteca de funciones,
la cual requiere mayor implicacin del programador, con lo que se
hace explicito el paralelismo.
sita al
secuenciales
Las bibliotecas estn disponibles para todos los sistemas
paralelos
Las bibliotecas estn ms cerca al hardware y dan al
programador un control a ms bajo nivel.
Se pueden utilizar a la vez bibliotecas para programar con
hebras y bibliotecas para programar con procesos.
Ejemplos de bibliotecas son: Pthread, MPI, PVM y OpenMP.
B. PARALELIZACION AUTOMATICA
La paralelizacin automtica de un programa secuencial por
un compilador es el santo grial de la computacin paralela. A pesar
de dcadas de trabajo por parte de los investigadores, la
paralelizacin automtica ha tenido un xito limitado.
Los principales lenguajes de programacin en paralelo
permanecen explcitamente paralelos o en el mejor de los
casos parcialmente implcitos, en los que un programador le da al
INGENIERIA DE SISTEMAS E INFORMATICA ARQUITECTURA DE
COMPUTADORAS
15
C. COMPILADORES PARALELOS
en
2. ALTERNATIVAS
DE
PROGRAMACIN
PARALELA
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.
INGENIERIA DE SISTEMAS E INFORMATICA ARQUITECTURA DE
COMPUTADORAS
16
Adems de esto, podemos decir que durante los 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.
MPI:
MPI:
(acrnimo
de
Message
Passing
17
2.2. PROBLEMAS
TPICOS
EN
LA
PROGRAMACIN
PARALELA
Los problemas tpicos que se abordan con la programacin paralela
son: problemas de alto coste, o problemas de no tan alto coste pero de
gran dimensin, o problemas de tiempo real, 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,
procesadores
principalmente
multincleo.
Sin
en
los
embargo,
A. PROCESADOR MULTINUCLEO:
Aunque los procesadores son cada vez ms rpidos, existen numerosas
aplicaciones para las que la velocidad de clculo de un nico procesador
resulta insuficiente. La alternativa adecuada para esas aplicaciones es el
uso de paralelismo.
INGENIERIA DE SISTEMAS E INFORMATICA ARQUITECTURA DE
COMPUTADORAS
18
velocidad,
formndose
un
cluster,
que
se
utiliza
con
los
datos
en
la
memoria
generen
las
19
Se
habla
de
ms
potentes
(supercomputadores)
de
los
20
21
22
multincleo
procesadores
grficos).
Algunos
que
permiten
trabajar
muchos
threads
de
sistemas
no
cunticas
y
en
la
de
las
partculas
Computacin
para
Biolgica
acelerar
se
la
utilizan
23
2.3.
24
25
los
trabajos
que
otros
usuarios
mandan
A. PROGRAMACIN EN OPEN MP
Analizaremos la programacin
paralela
bsicamente
con
para
OpenMP,
sistemas
26
B. PROGRAMACIN EN MPI
MPI
(acrnimo de
Message
Passing
Interface)
es
propuesta
estndar
una
de
para
un
C. 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.
INGENIERIA DE SISTEMAS E INFORMATICA ARQUITECTURA DE
COMPUTADORAS
27
28
29
30
31
32
33
B. 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.
INGENIERIA DE SISTEMAS E INFORMATICA ARQUITECTURA DE
COMPUTADORAS
34
35
36
4. 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 (Master-Slave) o granja de tareas (Task-Farming).
Descomposicin de datos
Divide y vencers (divide and conquer) o descomposicin recursiva
37
Hay estructuras entre las que no hay un lmite totalmente claro. Por otra parte,
nos podemos encontrar dentro de un mismo programa paralelo varias de estas
estructuras en diferentes niveles.
38
MAESTRO ESCLAVO
Maestro
Esclavo
Esclavo
P
E/S
Esclavo
E/S
Red de Interconexin
E/S
M
P
E/S
M
P
39
B. 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.
INGENIERIA DE SISTEMAS E INFORMATICA ARQUITECTURA DE
COMPUTADORAS
40
DESCOMPOSICIN DE DATOS
P
E/S
P1
P2
P3
E/S
P4
Red de Interconexin
E/S
E/S
a0 a11 a2
a3
C
a4
a5
a6
a7
41
DIVIDE Y VENCERAS
UNIVERSIDAD NACIONAL DEL SANTA
a0 a1 a2 a3
a4
a5 a6 a7
P3
P2
P1
5. PROCESO DE PARALELIZACIN
Para quin es importante?
o
o
P0
Diseadores de Algoritmos
Disear algoritmos que corran bien en sistemas reales.
Programadores
Comprender dnde radican las claves del rendimiento para obtener el
grados de libertad.
Importante para el diseo y la evaluacin.
42
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.
Aun desde el punto de vista arquitectnico, necesitamos abrir la caja
o
o
Procesador:
o Elemento fsico en el que se ejecutan los procesos.
o Los procesos constituyen la mquina virtual para el programador.
INGENIERIA DE SISTEMAS E INFORMATICA ARQUITECTURA DE
COMPUTADORAS
+
43 +
+
+
+
5.1. Descomposicin:
o Divisin del programa en tareas que sern distribuidas entre los
procesos.
o Las tareas pueden estar dispuestas para ejecucin dinmicamente.
INGENIERIA DE SISTEMAS E INFORMATICA ARQUITECTURA DE
COMPUTADORAS
44
5.2. 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.
45
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.
5.4. 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.
46
LINKOGRAFA
- http://ocw.uc3m.es/ingenieriainformatica/arquitectura-de-computadoresii/materiales-de-clasee/mc-f-002-ii
- http://www.fing.edu.uy/inco/cursos/hpc/materi
al/clases/Criba.pdf
- http://atc2.aut.uah.es/~rduran/Areinco/pdf/n_t
ema5.pdf
- http://www.cs.buap.mx/~mtovar/doc/ProgCon
c/ProgramacionParalela.pdf
- http://www.qft.iqfr.csic.es/curso_paralelo.pdf
47