Académique Documents
Professionnel Documents
Culture Documents
V: METODOLOGA DE LA
PROGRAMACIN PARALELA
INTEGRANTES:
Yovana Velsquez cruz
Andrea mollinedo castillo
Lisbeths d. caldern garrido
2013- 39095
2013- 39080
2013- 39080
CONCURRENCIA: En lugar de especificar una secuencia de pasos, un algoritmo paralelo describe la ejecucin
simultanea de un conjunto de pasos de computo, lo cual lleva implcito la resolucin de problemas de sincronizacin
y comunicacin.
ASIGNACIN DE DATOS Y CDIGOS A LOS PROCESADORES: Muchas de las partes del cmputo que se ejecutarn
simultneamente deben asignarse de forma inteligente a diferentes procesadores para aprovechar el sistema
paralelo.
ACCESO SIMULTNEO A DATOS COMPARTIDOS: En muchas ocasiones, mltiples tareas de un algoritmo paralelo
necesitarn acceder a datos que son comunes a dichas tareas, y habr que establecer mecanismos de sincronizacin
que protejan la integridad de los datos compartidos.
ESCALABILIDAD: Para cumplir esta deseable propiedad, denominada escalabilidad, es necesario que las decisiones
tomadas durante el diseo de un algoritmo paralelo no limiten la explotacin eficiente de sistemas hardware de
mayor envergadura(importancia).
FIGURA1:
ESQUEMA
GENERAL
DEL
ENFOQUE
DE
DISEO
PARALELO
5.2.3DESCOMPOSICIN FUNCIONAL
DIRIGIDA POR EL FLUJO DE DATOS
Esta tcnica es la ms lgica e intuitiva.
Podemos aplicar cuando la resolucin de un problema se puede
descomponer en fases diferenciales, donde cada fase ejecuta
generalmente un algoritmo diferente.
Se ajusta a la propia arquitectura de la aplicacin a paralelizar.
Pasos a aplicar, cuando se utiliza este enfoque:
Se identifican las partes funcionales del clculo que se desea resolver en
paralelo.
Se asigna una tarea para la realizacin de cada fase, se analiza los requisitos de
datos de dichas tareas.
Una vez dividida la computacin en diferentes tareas, se examinan los
requisitos de datos de dichas tareas.
5.2.3DESCOMPOSICIN FUNCIONAL
DIRIGIDA POR EL FLUJO DE DATOS
Tras la descomposicin funcional del clculo, se obtiene como
resultado un grafo de dependencia. Este grafo podr exhibir
diferentes topologas, la ms simple y utilizada es el cauce
segmentado de tareas (pipeline).
Cada tarea se puede considerar como un algoritmo secuencial, si
fuera necesario sera posible trabajar a un segundo nivel,
descomponiendo cada tarea en sub tareas mediante otra tcnica de
descomposicin.
La descomposicin funcional, tambin es usada como tcnica de
estructuracin de programas.
5.2.3DESCOMPOSICIN FUNCIONAL
DIRIGIDA POR EL FLUJO DE DATOS
EJEMPLO:
- Cauce paralelo para filtrar una lista de enteros
Dada una serie de m nmeros enteros primos,
, , , y una lista de n nmeros enteros, ,
, , , , se desea encontrar aquellos nmeros de la
lista que son mltiplos de todos los m nmeros primos. Se
supone que n es varios rdenes de magnitud mayor que m.
5.2.3DESCOMPOSICIN FUNCIONAL
DIRIGIDA POR EL FLUJO DE DATOS
5.2.4DESCOMPOSICIN RECURSIVA
Un problema se divide en dos o ms sub problemas que se pueden
resolver de forma independiente y sus resultados se combinan para dar
un resultado final, los sub problemas son instancias ms pequeas del
problema original, por lo que se pueden volver a dividir de la misma
forma, de forma recursiva.
La fuente de paralelismo en este tipo de casos se debe a que la
resolucin de diferentes sub problemas es completamente
independiente, estos problemas se pueden resolver concurrentemente
por tareas diferentes que no requieren ninguna interaccin entre s.
Para implementar esta tcnica es muy comn usar algn tipo de
esquema de planificacin basado en granja de tareas. En este
esquema, las tareas captan sub problemas de una estructura de datos
compartida.
5.2.4DESCOMPOSICIN RECURSIVA
Cuando se resuelve un sub problema pueden ocurrir dos
cosas:
Si el sub problema no se puede dividir ms, o no interesa que se
divida ms se obtiene un resultado parcial para el problema global.
En otro caso, se obtienen nuevos sub problemas que se insertan en
la estructura compartida.
EJEMPLO:
aproximar numricamente el valor de la integral:
I=
donde f es una funcin continua en [a, b].
5.2.4DESCOMPOSICIN RECURSIVA
5.2.4DESCOMPOSICIN RECURSIVA
5.2.4DESCOMPOSICIN RECURSIVA
EL MODELO DE MEMORIA
COMPARTIDA
INTEGRANTES:
ELVIS VARGAS RAMOS
JERSON CORDOVA
JUAN HERENCIA
JESUS CCALLI
INTRODUCCIN
Abstraccin del multiprocesador con memoria compartida.
Idealizar caractersticas que un programador necesita para escribir
programas paralelos.
EL PRAM(Parallel Random Acces Machine) es la primera idea del
modelo de memoria compartida.
REFINAMIENTOS
E = Exclusive
(exclusivo)
C =Concurrent (concurrente)
R = Read (lectura)
W =Write (escritura)
REFINAMIENTOS
PRAM EREW : No puede contener instrucciones que referencien la
misma posicin de memoria , ni para lectura ni escritura
REFINAMIENTOS
PRAM ERCW : No pueden contener instrucciones que referencien a la
misma posicin de memoria para lectura
PRAM CRCW: Un programa puede contener instrucciones que
referencien a la misma posicin de memoria, para lectura o escritura
NUEVOS REFINAMIENTOS
Para el caso de los modelos PRAM ERCW y PRAM CRCW se describen
los siguientes protocolos
Common : Tratan de escribir la misma informacin. Si la informacin
es diferente la instruccin fracasa.
Arbitrary: Se escribe uno de ellos al azar y el resto no se escribe
Priority: Se escribe con una prioridad preestablecida y el resto no se
escribe
Sum: Se escribe la suma.
CARENCIAS Y VIRTUDES
El modelo PRAM destaca por su sencillez, robustez, capacidad de
simular el comportamiento de una gran variedad de mquinas.
Permite la implementacin sencilla de algoritmos paralelos que sigan
ciertos estndares, facilitando la labor del programador.
Su inconveniente es la incapacidad de acceder a cualquier posicin de
memoria en un tiempo constante, modelar mquinas de memoria
distribuida y simular sistemas paralelos con memoria cach.
Si pr=0 entonces
m[i]=m
n[i]=n-1
B[j,i]=b[j]
finpara
finpara
finsi
10
tb[pr]=m[pr]/p
11
12
f[pr]=i[pr]+pr*tb[pr]
13
x[f[pr]]=0;
14
15
16
x[f[pr]]=x[f[pr]]+A[f[pr]]*B[j[pr],pr]
finpara
Ciclos consumidos
10
11
12
13
14
15
Nc = 3 + 4 + 2 + 3 + 2
CARENCIAS Y VIRTUDES
El modelo PRAM destaca por su sencillez, robustez, capacidad de
simular el comportamiento de una gran variedad de mquinas.
Permite la implementacin sencilla de algoritmos paralelos
que sigan ciertos estndares, facilitando la labor del
programador.
Su inconveniente es la incapacidad de acceder a cualquier
posicin de memoria en un tiempo constante, modelar
mquinas de memoria distribuida y simular sistemas paralelos
con memoria cach.
EJEMPLOS DE PROGRAMAS
La escritura y funcionamiento de diferentes programas paralelos escritos en pseudocdigo, que resuelven un
mismo problema y tratan de ilustrar la forma de funciones de los distintos modelos PRAM
Consideremos el problema de escribir y evaluar un algoritmo PRAM que calcule el producto matriz-vector,
x=Ab, donde A es una matriz real,m*n , y es un vector de n componentes. Supongase que m es un mltiplo
del nmero de procesadores, p Expresamos el programa en forma de funcin que devuelve en memoria el
vector x Los parmetros de entrada estn tambin inicialmente en memoria Junto a los datos, A, b y sus
tamaos, m, n, se pasa como parmetro el ndice pr del procesador que ejecuta el cdigo. Recuerde que
cada procesador ejecuta un cdigo que depende de su ndice Se ha supuesto que el nmero de
procesadores p es una variable reconocible referenciable por todo los procesadores. Los ndices de las filas y
columnas de la matriz A varian de 0 a m-1 y de 0 a n-1, respectivamente, y el ndice de las componentes
del vector b varia de 0 a n-1 .
OpenMP
Trata de unificar el uso de directivas dando mayor compatibilidad y
legibilidad a los distintos compiladores existentes hasta el momento.
El estndar ha sido adoptado por la mayor parte de los fabricantes, por
lo que podemos considerarlo una herramienta fundamental para
programar este tipo de maquinas.
Directivas
Parallel
Seccin de cdigo a ejecutar en paralelo.
Sections
Secciones independientes en paralelo
For
Ciclo subdividido en paralelo
Single
Cdigo ejecutado por un nico thread
Estndar OpenMP
Empresas/Organizaciones involucradas:
Compaq / Digital
Hewlett-Packard Company
Intel Corporation
International Business Machines (IBM)
Kuck & Associates, Inc. (KAI)
Silicon Graphics, Inc.
Sun Microsystems, Inc.
U.S. Department of Energy ASC program
Otras
Compiladores OpenMP
GNU: gcc (4.3.2)
Free and open source - Linux, Solaris, AIX, MacOSX, Windows
Compile with -fopenmp
IBM XL C/C++ / Fortran (BlueGene)
Windows, AIX and Linux.
Compile with -qsmp=omp
Intel C/C++ / Fortran
Windows, Linux, and MacOSX.
Compile with -Qopenmp on Windows, or just
-openmp on Linux or Mac OSX
METODOLOGIAS DE LA
PROGRAMACION PARALELA
DESCOMPOSICION EXPLORATORIA
2011-119055
2011-119052
2011-119010
2010-
DESCOMPOSICION EXPLORATORIA :
Apropiado para descomponer clculos basado en la
bsqueda de un espacio de soluciones.
En estos casos puede que no sea posible aplicar
descomposicin de dominio, ya que no se tiene
demasiada informacin sobre la principal estructura de
datos del problema.
Tcnica:
Consiste en ir descomponiendo el espacio de bsqueda en
partes de menor tamao (Conforme se va explorando) para, a
continuacin, asignar cada parte a una tarea diferente.
De esta forma la bsqueda en cada una de las partes se realiza
concurrentemente con la bsqueda en el resto de partes, hasta
encontrar la solucin o soluciones deseadas.
Representacin de un subconjunto C c C
Se indexan los valores enteros de C. Cada ai queda
identificado unvocamente con un i (i=0,,n-1).
Un conjunto C de C queda representado de forma
univoca mediante una secuencia de n dgitos.
Descomposicin
Especulativa
Ejemplo
Supongamos una aplicacin en la que cada cierto tiempo
se debe realizar el procesamiento rpido de un elemento
de un conjunto de datos. Dicho procesamiento se
estructura en dos fases, una fase inicial en la cual se
establece que tipo de elemento es, y una fase posterior en
la que se procesa dicho elemento. Teniendo en cuenta el
tipo. Para obtener el resultado deseado.
Inicio
Seleccin
de tipo
Inicio
Estimacin
Tipo estimado
Procesamiento
tipo
Procesamiento tipo
con retroceso
condicional
Resultado
Resultado
Seleccin tipo
En resumen:
En este tipo de descomposicin se adelanta clculo que hay que
realizar selectivamente (todas las ramas o las estimadas ms
probables) para reducir el tiempo medio de respuesta.
Enfoques mixtos
NUMERO DE TAREAS OBTENIDAS. Interesa que el nmero de tareas sea suficientemente grande para no perder
flexibilidad en la asignacin de tareas a procesadores.
Si se conoce cual es el nmero mximo de procesadores que tiene la maquina, es
aconsejable obtener un orden de magnitud ms de tareas que de procesadores,
Lo ideal es que el nmero de tareas escale con el tamao del problema
CONSIDERACIONES SOBRE EL TAMAO DE LAS TAREAS
Generalmente interesa que todas las tareas tengan un cose similar para facilitar la
etapa de asignacin de tareas
Tambin resulta de enorme inters, de cara a establecer un buen esquema de
asignacin, conocer el tamao de las tareas o poder estimarlo antes de la
ejecucin
Patrones Locales/Globales
Un calculo paralelo presenta un patrn de comunicacin local cuando
cada tarea necesita interactuar con un conjunto pequeo de tareas
para realizar dicho calculo.
Se presenta un patrn de comunicacin global cuando mltiples
tareas deben aportar datos para realizar un calculo en paralelo
El diseo de este tipo de estructuras de comunicacin conlleva a la
transformacin de los patrones de interaccin globales en estructuras de
comunicacin algo mas complejas pero que sigan patrones de interaccion
local
Comunicacin unilateral/bilateral:
Anlisis de Algoritmos
Paralelos
Integrantes:
-
119040
2011-
2010-35548
2012-36182
2010-35529
ANALISIS DE ALGORITMOS
Se llama eficiencia de un algoritmo a la relacin entre lo recursos que consume y los resultados que obtiene.
Robustez
Posibilidad de reutilizacin
Portabilidad
Facilidad de mantenimiento
Se intenta que los programas se ejecuten en poco tiempo y usen poca memoria.
Estudio a posteriori:
preferible utilizar en la
Experimental.
El estudio terico puede ser a priori o a posteriori, mientras que el experimental solo se puede hacer
a posteriori.
tiempo mnimo.
El tiempo en el caso ms desfavorable ( ()): es el tiempo de ejecucin con la entrada que produce
el tiempo mximo.
El tiempo promedio ( ()): se calcula contando las operaciones y multiplicando cada operacin por la
probabilidad de que se ejecute.
Tiempos de ejecucin
El tiempo de ejecucin se define como el tiempo que transcurre desde que empieza la ejecucin del
programa hasta que se obtienen los resultados.
Si no se puede estimar el tiempo, se puede intentar acotarlo o calcular la forma en que crece. Los tiempos
en el caso ms favorable y el caso ms desfavorable nos sirven como cotas del tiempo de ejecucin.
Ocupacin de Memoria
Estudio terico
En muchos casos la ocupacin no depende del contenido de la entrada, mientras que el
tiempo s.
El coste del tiempo de ejecucin suele ser mayor que el de la ocupacin de memoria.
Conteo de instrucciones
Decidir las instrucciones que se quieren contar.
Se puede decidir contar las instrucciones, pero asignando costes distintos a instrucciones de
distinto tipo.
Si tenemos llamadas a funciones, primero se cuenta el nmero de instrucciones de las funciones
y en cada llamada se sustituye ese nmero.
En el caso de bucles se pueden expresar con un sumatorio, con ndices que indican los sucesivos
pasos por el bucle.
Si tenemos una bifurcacin, habr que contar el nmero de veces que se pasa por cada rama, y
si no es posible se puede utilizar el numero de instrucciones de la rama mas costosa para
obtener una cota superior, y el de la menos costosa para obtener una cota inferior.
Notaciones asintticas
El coste de las instrucciones y la memoria que se necesita para almacenar un dato depende
de diversos factores externos al algoritmo.
Cuando el tamao de la entrada crece, los trminos de menor orden en la frmula terica
pierden importancia, y cuando estudiamos el tiempo nos interesa poder predecirlo para los
distintos tamaos de la entrada.
Notacin O
Se utiliza para acotar superiormente, salvo constantes y asintticamente la forma en que
crece la funcin.
Notacin
Se utiliza para acotar inferiormente la forma en que crece la funcin.
La Notacin
La notacin se utiliza para acotar inferiormente la forma en la que crece
una funcin.
Definicin
Dada una funcin f: R+ b llamaremos de f al conjunto de todas las
funciones de N en R+ acotadas inferiormente por un mltiplo real positivo de f
para valores de n suficientemente grandes. Se denota (f) y se define como:
(f) (g)
(f) (g)
La Notacin
Dada una funcin f : N
R+, llamamos orden exacto de f al conjunto de todas las
funciones de N en R+ que crecen (salvo constantes y asintticamente) de la misma forma
que f. Se denota (f), y ser:
()
= { : lim
1
()
Ecuaciones de Recurrencia
En el anlisis de algoritmos se suele llegar a ecuaciones de recurrencia que se presentan
como:
Ley de Amdahl
Definicin
Evala como cambia el rendimiento al mejorar una parte de la
computadora.
Alternativamente
Speedup
Universidad de Sonora
Arquitectura de Computadoras
110
Factores
El speedup depende de dos factores:
1. La fraccin del proceso original que puede ser mejorado.
Si la mejora afecta 20 segundos de un proceso que tarda 60
segundos, entonces Fraccinmejora = 20/60.
2. Aceleracin de la fraccin que puede ser mejorada.
Si la mejora hace que la parte que tardaba 20 segundos ahora tarde
12, Speedupmejora = 20/12.
Universidad de Sonora
Arquitectura de Computadoras
111
Tiempo de ejecucin
El tiempo de ejecucin mejorado es igual al tiempo que no se usa la
mejora mas el tiempo que si usa la mejora.
Fraccinmejora
Universidad de Sonora
Arquitectura de Computadoras
112
Ejemplo
Tiempo de ejecucin original: 60 segundos.
Mejora: 20 segundos se hacen ahora en 12.
Fraccinmejora: 20/60 = 0.333.
Speedupmejora: 20/12 = 1.667.
Tiempo de ejecucin con la mejora:
60 x ((1 0.333) + 0.333/1.667) =
60 x (0.667 + 0.2) =
60 x (0.867) =
52
Universidad de Sonora
Arquitectura de Computadoras
113
Speedup global
El speedup global es:
Tiempo de ejecucinoriginal
Speedupglobal
Tiempo de ejecucinmejora
Alternativamente:
Speedupglobal
(1 - Fraccinmejora)
Universidad de Sonora
Arquitectura de Computadoras
Fraccinmejora
Speedupmejora
114
Ejemplo
Fraccinmejora: 20/60 = 0.333.
Speedupmejora: 20/12 = 1.667.
Tiempo de ejecucin original: 60 segundos.
Tiempo de ejecucin con la mejora: 52 segundos.
Speedupglobal = 60 / 52 = 1.15.
Speedupglobal = 1 / ((1 0.333) + (0.333 / 1.667)) = 1.15.
Universidad de Sonora
Arquitectura de Computadoras
115
Otro ejemplo
Un programa tarda 100 segundos en correr.
El programa pasa 80 segundos en un procedimiento.
Qu tanto se debe mejorar ese procedimiento para que todo el
programa corra 5 veces ms rpido?
Universidad de Sonora
Arquitectura de Computadoras
116
Otro ejemplo
Usamos la ley de Amdahl:
Fraccinmejora
Universidad de Sonora
Arquitectura de Computadoras
117
Otro ejemplo
20 = 100 x ((1 0.8) + (0.8 / Speedupmejora))
20 = 100 x (0.2 + 0.8 / Speedupmejora)
20 = 20 x 80 / Speedupmejora
20 20 = 80 / Speedupmejora
0 = 80 / Speedupmejora
No hay forma de que el programa mejorado corra en 20 segundos.
Universidad de Sonora
Arquitectura de Computadoras
118
1
Speedupglobal
1 - Fraccinmejora
Cmo se interpreta ese lmite cuando Fraccinmejora es 1?
Universidad de Sonora
Arquitectura de Computadoras
119
Ejemplo
Se tiene un servidor de Web.
Se le cambia la CPU por una CPU que es 10 veces ms rpida que la
antigua.
La CPU antigua estaba 40% del tiempo haciendo clculos y 60% ociosa
esperando I/O.
Cul es el speedup global con la nueva CPU?
Universidad de Sonora
Arquitectura de Computadoras
120
Ejemplo
Fraccin que se puede mejorar: 40% = 0.4.
Speedup de la mejora: 10.
El corolario de la ley de Amdahl limita el speedup
global:
Speedupglobal < 1 / (1 0.4) = 1.67
Usando la ley de Amdahl, el speedup global es:
Speedupglobal
(1 - Fraccinmejora)
Universidad de Sonora
Arquitectura de Computadoras
Fraccinmejora
Speedupmejora
121
Ejemplo
El speedup global es:
1 / ((1 0.4) + (0.4 / 10)) = 1.56
El servidor con la nueva CPU es 1.56 veces ms rpido que el servidor
con la antigua CPU.
Universidad de Sonora
Arquitectura de Computadoras
122
Aplicaciones
Universidad de Sonora
Arquitectura de Computadoras
123
Aplicaciones
Se usa la ley de Amdahl:
Speedupglobal
1
(1 - Fraccinmejora)
Fraccinmejora
Speedupmejora
Opcin 1:
Fraccinmejora = 0.2
Speedupmejora = 10
Speedupglobal = 1 / ((1 0.2) + (0.2 / 10)) = 1.219
Universidad de Sonora
Arquitectura de Computadoras
124
Aplicaciones
Opcin 2:
Fraccinmejora = 0.5
Speedupmejora = 1.6
Speedupglobal = 1 / ((1 0.5) + (0.5 / 1.6)) = 1.231
Universidad de Sonora
Arquitectura de Computadoras
125