Vous êtes sur la page 1sur 125

CAP.

V: METODOLOGA DE LA
PROGRAMACIN PARALELA
INTEGRANTES:
Yovana Velsquez cruz
Andrea mollinedo castillo
Lisbeths d. caldern garrido

2013- 39095
2013- 39080
2013- 39080

5.1 VISIN GLOBAL DEL PROCESO DEL


DISEO PARALELO
El diseo de algoritmos para sistemas multiprocesador es una tarea mucho ms compleja que en mbito secuencial, ya
que presenta una serie de aspectos aadidos, entre los que cabe destacar los siguientes:

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

5.1 VISIN GLOBAL DEL PROCESO DEL


DISEO PARALELO

FIGURA1:

ESQUEMA

GENERAL

DEL

ENFOQUE

DE

DISEO

PARALELO

5.2 DESCOMPOSICIN EN TAREAS


En programacin paralela, la descomposicin de un clculo
consiste en trocearlo en partes de menor tamao con objetivo
de que muchas de esas partes se puedan realizar de forma
independiente entre s. Cada una de las partes que resulta de
una descomposicin se encapsula en unidades de cmputo de
tamao arbitrario que aqu denominaremos tareas. Cada tarea
puede incluir sub clculos del clculo principal, as como parte
de los datos requeridos por dichos sub clculos.

5.2 DESCOMPOSICIN EN TAREAS


EJEMPLO DE DESCOMPOSICIN EN TAREAS DE UNA
EVALUACIN POLINOMIAL:

5.2 DESCOMPOSICIN EN TAREAS:


GRANULARIDAD DE UNA DESCOMPOSICIN
Las tareas que resultan de una descomposicin podran ser de
diferentes tamaos considerando su coste computacional como
media. Cuando la descomposicin genera un nmero elevado de
pequeas tareas se dice que presenta una granularidad fina, y se
habla de granularidad gruesa cuando se obtienen pocas tareas de
gran tamao.
EJEMPLO:

5.2 DESCOMPOSICIN EN TAREAS: GRAFO DE


DEPENDENCIAS Y GRADO DE CONCURRENCIA
Se pretende que la mayora de las tareas que resultan de una descomposicin sean independientes. No
obstante, es muy comn que existan tareas que necesitan datos de otras tareas y que como consecuencia,
no se puedan ejecutar hasta que las tareas de las que dependen de hayan ejecutado. Este tipo de
dependencias se puede describir como un grafo de dependencias. Un grafo de dependencia es un grafo
acclico dirigido (si fuera cclico revelara situaciones de interbloqueo entre tareas ) donde los nodos
representan tareas.
Estudiando el grafo de dependencias, se podra determinar el grado de concurrencia que exhibe un
algoritmo paralelo. Este factor determina en gran medida la calidad de la descomposicin en tareas que se
hecho del problema. En una o diferentes reas de grado de dependencias se presenta el mayor nmero de
tareas cuya ejecucin se podra realizar al mismo tiempo. Este nmero se le conoce como el mximo
grado de concurrencia del algoritmo.
Al indicador que depender de la forma y tamao del grafo de dependencias, se le denomina grado medio
de concurrencia.

5.2 DESCOMPOSICIN EN TAREAS: GRAFO


DE DEPENDENCIAS Y GRADO DE CONCURRENCIA

EJEMPLO DEL GRADO MEDIO DE CONCURRENCIA:

5.2 DESCOMPOSICIN EN TAREAS:


COMUNICACIN Y SINCRONIZACIN: ESTRUCTURA
DE COMUNICACIN
Para reflejar con precisin la forma en que
las tareas actan entre s se debe definir
un grafo que represente la estructura de
comunicacin de las tareas.
Los nodos representan tareas, mientras
las aristas conectan tareas entre las que
existe una relacin de comunicacin o
sincronizacin.
En muchos casos las aristas son dirigidas
para indicar el sentido del flujo de datos.

5.2.1 TCNICAS DE DESCOMPOSICIN


Las tcnicas de programacin paralela aplican estrategias de
DESCOMPOSICIN o PARTICIONAMIENTO de datos y de
cmputo, para dividir un problema en subproblemas de menor
complejidad.
Segn se enfoque principalmente en la descomposicin de
datos o de tareas, resulta una tcnica diferente de
programacin paralela.
Las tcnicas ms difundidas son:
Descomposicin de dominio.
Descomposicin funcional.
Descomposicin recursiva.

5.2.2 DESCOMPOSICIN DEL DOMINIO


Se utiliza cuando es posible resolver un problema aplicando la
misma operacin sobre partes diferentes de su dominio de
datos.
Los datos a dividir pueden ser: La entrada del programa, la
salida calculada por el programa y datos intermedios
calculados por el programa
No existe regla general para la divisin de datos
Existen algunas sugerencias obvias dadas por:
La estructura o geometra del problema.
La idea de concentrarse primero en las estructuras de
datos ms
grandes o las accedidas con ms
frecuencia.

5.2.2 DESCOMPOSICIN DEL DOMINIO


5.2.2.1 Descomposicin de dominio centrada en datos de
salida
Transformacin iterativa de un vector

5.2.2 DESCOMPOSICIN DEL DOMINIO


5.2.2.2 Descomposicin de dominio centrada en datos de
entrada

5.2.2 DESCOMPOSICIN DEL DOMINIO


5.2.2.3 Descomposicin de dominio basada en bloques para
algoritmos
matriciales

5.2.2 DESCOMPOSICIN DEL DOMINIO


5.2.2.3 Descomposicin de dominio basada en bloques para algoritmos
matriciales

5.2.2 DESCOMPOSICIN DEL DOMINIO


5.2.2.4 Descomposicin de dominio centrada en datos
intermedios

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.

CARACTERISTICAS Y FUNCIONAMIENTO DEL


MODELO
Tenemos un computador paralelo formado por p procesadores ,
enumerados de 0 a p-1 comparte un espacio nico de direcciones de
memoria

Funcionamiento computador ideal:


Al iniciar el programa los datos y cdigos se encuentran en la
memoria
Todos los procesadores ejecutan el mismo cdigo, el cdigo se puede
particularizar:+
Cada procesador ejecute un conjunto diferente de instrucciones
Cada procesador ejecute las mismas instrucciones sobres diferentes datos

Funcionamiento computador ideal:


Un conjunto de instrucciones se va ejecutando de forma sncrona.
Cada instruccin se ejecuta en un ciclo de reloj.
La comunicacin entre procesadores se da a traves de la modificacin
de variables.
Un procesador cualquiera puede ejecutar operaciones de lectura y
escritura

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

PRAW CREW : No pueden contener instrucciones que referencien a la


misma posicin de memoria para 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.

ALGORITMO PRAM EREW para el producto


Matriz Vector

Todos los procesadores del sistema ejecutan simultneamente


el cdigo del algoritmo, particularizndolo en la funcin del
valor de su ndice pr.
Se usa vectores auxiliares para evitar la referenciacin
simultnea a variables para lectura y/o escritura.
El coste del algoritmo se evala contando el nmero de
instrucciones efectivas que se ejecutan, teniendo en cuenta
que cada una de ellas consume 1 ciclo de reloj.

Entrada: Procesador Pr, Entero m,n. Real A[m,n], Real b[n]


Salida Real x[m] tal que x=A+b
1

Si pr=0 entonces

Para i=0 hasta p-1 hacer

m[i]=m

n[i]=n-1

Para j=0 hasta n(O) hacer

B[j,i]=b[j]

finpara

finpara

finsi

10

tb[pr]=m[pr]/p

11

Para t[pr]=0 hasta tb[pr]-1 hacer

12

f[pr]=i[pr]+pr*tb[pr]

13

x[f[pr]]=0;

14

para f[pr]=0 hasta n[pr] hacer

15
16

x[f[pr]]=x[f[pr]]+A[f[pr]]*B[j[pr],pr]
finpara

Nmero de ciclos de reloj en cada instruccin del Algoritmo PRAM EREW


Nmero de
instruccin

Ciclos consumidos

p(bucle que se repite p veces)

n(bucle que se repite n veces)

10

11

m/p(bucle que se repite tb=m/p veces)

12

13

14

15

El nmero total de ciclos de reloj se obtiene sumando los de


cada instruccin y teniendo en cuenta que cada bucle obliga
a repetir las intrucciones que contiene el nmero de veces
que se repite. Adems por cada paso del bucle debe
contarse una instruccin que corresponde al incremento.
Tambin si una instruccin contiene una suma y un
producto, debemos contarla como 2 ciclos de reloj.
Nc=1+p(1+1+1+n(1+1))+ 1 + m/p (1+2+1+n(1+2))

Nc = 3 + 4 + 2 + 3 + 2

Uso de la memoria en las instrucciones 1-10

Uso de la memoria en las instrucciones 11-17

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 .

esquema del algoritmo paralelo de multiplicacin Matriz-Vector

algoritmo PRAM CREW para el producto Matrizvectores


Este algoritmo muestra cmo se resuelve el problema en el
modelo PRAM CREW. en este caso continua existiendo la
necesidad de crear vectores auxiliares para los ndices de los
bucles, pero al permitir la lectura simultnea ya no es
necesario replicar los tamaos de los datos.

Multiplicacin matriz-vector en el modelo PRAM CREW

Entrada Procesador px Entero m,n Real A[m,n], Real b[n]


Salida Real x[m] tal que x=A+b
Si pr=0 entonces
ib=m/p;
finsi
Para i[pr]=0 hasta ib-1 hacer
F[pr]=i[pr] i pr*ib;
X[f[pr]]=0.
Para f[pr]=0 hasta n-1 hacer
X[f[pr]]=x[f[pr]]+A[f[pr].f[pr]]+b[f[pr]],
Finpara
finpara

uso de la memoria comn del algoritmo de multiplicacin Matriz Vector en el modelo


PRAM CREW

algoritmo PRAM ERCW COMMON para el producto


Matriz-Vector
El cdigo para un algoritmo PRAN ERCW COMMON coincide, en
el caso del producto matriz vector con esta organizacin, con el
del Algoritmo PRAM EREW. Las nicas escrituras simultneas
del cdigo corresponden al incremento de las variables de
control de los bucles, pero estas deben replicarse por no poder
ser accedidas para lectura simultneamente. El coste y al
temporizacin de este algoritmo tambin coincide a con los del
Algoritmo PRAM EREW.

algoritmo PRAM CRCW COMMON para el producto


Matriz-Vector
El algoritmo en el modelo PRAM CRCW COMMON. Es como la
posibilidad de lectura y/o escritura simultneamente evita la
necesidad de crear copias de los datos y de las variables de
ndices, lo que hace que este modelo sea mucho ms eficiente.
Este algoritmo se ejecuta en 3nm/p+4m/p+1 ciclos de reloj.

multiplicacin matriz-vector en el modelo PRAM CGCW COMMON

Entrada Procesador pr, Entero m,n, Real A[m,n], Real b[n]


Salida Real x[m] tal que x=A+b
Ib=m/p.
Para i=0 hasta rb-1 hacer
F[pr]=i+pr*ib.
X[f[pr]]=0,
Para j=0 hasta n-1 hacer
X[f[pr]]=x[f[pr]]+A[f[pr],j[*b]j]
Finpara
finpara

uso de la memoria comn del algoritmo de multiplicacin Matriz Vector en el modelo


PRAM CROW COMMON

temporizacin del algoritmo de multiplicacin Matriz-Vector en el modelo PRAM CROW


COMMON

INFLUENCIA DEL MODELO EN LA PROGRAMACIN


Una forma de construir un modelo que implemente el modelo de memoria
compartida es la utilizacin de procesos ligeros o threads.
Puede crear threads por cada proceso independiente, con la `propiedad de
poder acceder a toda la memoria comn , de forma que si se dispone de
varios elementos de proceso puede asignarse a cada uno de ellos a un
procesador.
Un modelo de programacin de esta clase deja al programador la
responsabilidad de gestionar el paralelismo utilizando herramientas
tradicionales propias de la programacin de nivel medio.

INFLUENCIA DEL MODELO EN LA PROGRAMACIN


En el mercado actualmente hay disponible diferentes API que permiten
utilizar esta tcnica de programacin en maquinas con memoria
compartida.
POSIX se a convertido en el estndar de programacin mas habitual
cuando se usa threads.
Otra opcin para la programacin de los multiprocesadores con
memoria compartida es la utilizacin e compiladores paralelizados, que
son capaces de transformar un cdigo escrito en un lenguaje de alto
nivel en un cdigo paralelo capaz de ser ejecutado por este tipo de
maquinas.

Ventaja del compilador :


Permiten al programador expresar a travs de directivas de compilacin
las zonas de cdigo que desea que se ejecute en forma paralela.
Determina aquellas operaciones que se pueden ejecutar
simultneamente y generar distintos threads para cada una de ellas.
Puede lanzar procesos independientes a nivel de subprogramas o a
nivel de bucle.

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

Franz Cruz Ucharico


William Ramos Mendoza
Gracian Mamani Tapia
Anthony Arribasplata Ramos

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.

mbito e ideas generales :


mbito: Bsqueda de soluciones en un espacio de estados.
Idea: descomposicin dinmica del espacio de bsqueda en partes menores mas
exploracin concurrente de cada parte por tarea diferente. Interesa establecer
estructura de rbol de posibles soluciones.
Estrategia de descomposicin comn: Generar niveles de estados desde estado
inicial. Cuando se tengan suficientes nodos cada tarea explora un conjunto de
nodos diferentes.
Casos:
Bsqueda exhaustiva: finaliza cuando no existan nodos.
Bsqueda primera solucin: Terea que encuentra solucin informa resto de
final.

Problema de la suma del subconjunto


Dado un conjunto de n enteros, C={a0, a1,.., an-1}, y un
entero v, se desea encontrar C c C tal que:

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.

Problema de la Suma del Subconjunto


ESTRUCTURA DEL ESPACIO. ARBOL BINARIO
Nodo hoja: representa un subconjunto diferente de C= secuencia binaria
particular de n cifras.
Nodo interno: representa a todos los subconjuntos alcanzables a partir de
sus descendientes. La representacin es similar a un nodo hoja pero
usando smbolo comodn (X).
EXPLORACION DE UN NODO INTERNO:
Se determina el smbolo comodn X situado mas a la izquierda en la etiqueta.
Hijo izquierdo se crea fijando dicha posicin a 0.
Hijo derecho se obtiene fijando dicha posicin a 1.

Descomposicin de una instancia del


problema

Descomposicin
Especulativa

Puede que no exista posibilidad de obtener ninguna ganancia en


velocidad mediante una formulacin paralela debido a la existencia
de dependencia de datos complejas.
Pero aun as es posible obtener alguna ganancia en velocidad bajo
ciertas condiciones.

La tcnica de descomposicin se basa en especular sobre los posibles


resultados del calculo de la etapa previa, realizando la ejecucin de
los clculos posteriores de forma anticipada y en paralelo con el
calculo previo.

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

Factores a considerar en la descomposicin


Se mostrara una serie de factores que deben tenerse en cuenta para obtener una
buena descomposicin, ya que tienen un gran impacto sobre la siguiente etapa
de diseo paralelo

Caractersticas de las tareas resultantes


Creacin esttica/dinmica. Cuando todas las tareas que participan se crean al inicio de su ejecucin, se habla de creacin esttica
de tareas.
Por su naturaleza la descomposicin funcional de un problema genera un numero fijo de tareas que
no cambia en tiempo de ejecucin.
En cambio se habla de creacin dinmica cuando las tareas se crean durante la ejecucin del
programa.
No se conoce el nmero de tareas ni la estructura del grafo de dependencia antes de la ejecucin

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

REPLICACION DE DATOS/CALCULOS. En la fase de descomposicin es aconsejable evitar que las


tareas compartan muchos de los clculos
Si hay demasiada replicacin de datos o cmputo entre tareas,
la escalabilidad dl algoritmo se puede ver comprometida en la
etapa de asignacin

CONSIDERACIONES SOBRE EL TAMAO DE LOS DATOS


ASOCIADOS A TAREAS
Como los datos ligados a una tarea deben ser accesibles por el proceso que ejecuta dicha
tarea, Es muy importante tener en cuenta el tamao y la localizacin de los datos que va a
requerir cada tarea antes de la fase de asignacin.
Esta informacin es decisiva para determinar durante la asignacin cual es el proceso que
podra realizar dicha tarea sin incurrir en una sobrecarga de comunicacin excesiva

TIPOS DE PATRONES DE COMUNICACIN


ENTRE TAREAS
1.La necesidad de comunicacin y sincronizacin entre las tareas
concurrentes se plasma, tras la fase de descomposicin, y se pueden
caracterizar usando diferentes ejes, entre los que destacaremos los
siguientes

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

Patrones Estticos: un estructura es de


comunicacin es esttica si cada tarea se
comunica con otras en tiempos conocidos a
priori y el conjunto de tareas con las que se
comunica en cada fase tambin se conocen a
priori.
Patrones Dinmicos: En una estructura
dinmica no se conocen a priori ni los
momentos en que se producirn las
comunicaciones ni que tareas se vern
envueltas en cada comunicacin.

Patrones Regulares: Hablamos de que una


estructura de comunicacin es regular cuando
exhibe un topologa espacial que podra
aprovecharse para mejorar la eficiencia
computacional.
Patrones
Irregulares:
Las
estructuras
irregulares y dinmicas complican la asignacin
y la programacin cuando se siguen los
modelos basados en paso de mensajes.

Acceso compartido de solo lectura/lectura-escritura:


Solo lectura: las tareas concurrentes solo necesitan
acceder a los datos compartidos para lectura pero
no para escritura.
Lectura-escritura: las tareas acceden a los datos
compartidos para leer y tambin para escribir.

Comunicacin unilateral/bilateral:

Comunicacin unilateral: Cuando una tarea inicia


la comunicacin y la completa sin interrumpir la
tarea o tareas productoras de los datos.
Comunicacin bilateral: Cuando los datos que
necesita una tarea son proporcionados de forma
explcita por otra tarea o tareas(productoras).

Anlisis de Algoritmos
Paralelos
Integrantes:
-

Jos Luis Lanchipa jilaja

119040

2011-

Jackeline ancco chambi

2010-35548

Edyth Ninahuaman choque

2012-36182

Yordy chura chura

2010-35529

ANALISIS DE ALGORITMOS
Se llama eficiencia de un algoritmo a la relacin entre lo recursos que consume y los resultados que obtiene.

Hay otros criterios a tener en cuenta a la hora de desarrollar algoritmos:


Facilidad de programacin

Robustez
Posibilidad de reutilizacin
Portabilidad

Facilidad de mantenimiento
Se intenta que los programas se ejecuten en poco tiempo y usen poca memoria.

Factores externos que influyen en el tiempo de


ejecucin:
El lenguaje y el programa en que se implemente el algoritmo.
La mquina en que se ejecuta.
El compilador utilizado.
Los tipos de datos utilizados.
Los usuarios que estn trabajando en el sistema.

ANLISIS A PRIORI Y A POSTERIORI


Se puede hacer un estudio del algoritmo a priori. Este estudio tiene sentido
por varios motivos:
Para identificar puntos del algoritmo que es mejor programar de una cierta manera.
Para determinar si un algoritmo es bueno.
Para poder determinar entre dos algoritmos dados cul es preferible.
Para determinar el tamao de los problemas que podemos resolver dependiendo de las limitaciones de
tiempo y de la memoria de que dispongamos.

Estudio a posteriori:

Para comparar dos programas de manera que se pueda decidir cul es

preferible utilizar en la

solucin del problema.

Para encontrar la causa del mal funcionamiento de un programa o


pueden ser mejorados.

identificar los puntos que

El estudio de un algoritmo se puede hacer de


manera:
Terica

Experimental.

El estudio terico puede ser a priori o a posteriori, mientras que el experimental solo se puede hacer
a posteriori.

Tipos de estudios tericos:


El tiempo en el caso ms favorable ( ()): es el tiempo de ejecucin con la entrada que produce el

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.

Se denota como: t(n)

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.

El tiempo en el caso ms favorable sirve como cota inferior del tiempo de


ejecucin. Una cola inferior de () nos sirve como cota inferior de .
El tiempo en el caso ms desfavorable, (), sirve como cota superior de
.
Para cualquiera de los tiempos tratados puede ocurrir que por las
caractersticas del algoritmo, no seamos capaces de determinar su valor. En
esto casos se puede intentar encontrar una cota inferior y otra superior.

Ocupacin de Memoria

Es la cantidad de memoria necesaria para poder ejecutar el programa.


Los tiempo de ejecucin sirven tambin para la ocupacin de memoria.
Tendremos las siguientes medidas de ocupacin de memoria:
Memoria en el caso ms favorable ( ())
Memoria en el caso mas desfavorable ( ())
Memoria promedio

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.

Conteo en el caso promedio


El estudio del caso promedio a veces suele ser muy costoso por lo que es preferible
calcularlo por conteo de instrucciones, as por ejemplo, se puede sumar el numero
promedio de veces que se ejecuta cada instruccin.

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:

Algunas relaciones de orden en el conjunto de los omegas de las funciones:

(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:

(f) = O(f) (f)


(f) = { t: N R+ /c, d R+ ,n0 N, n n0 : c f (n) t(n) d f (n)}

Notacin o (o- pequea)


Esta notacin se utiliza cuando se desea perder los coeficientes del termino de mayor
orden.
Definicin:
Dada una funcin f: N R+ , llamamos o pequea de f al conjunto:

()
= { : lim
1
()

Ecuaciones de Recurrencia
En el anlisis de algoritmos se suele llegar a ecuaciones de recurrencia que se presentan
como:

Complejidades mas Frecuentes


Las medidas mas frecuentes que aparecen en eel estudio de los algoritmos son las
polinmicas, logartmicas y productos de estas. Tambin aparecen en algunos casos races,
y exponenciales y factoriales en tiempos de ejecucin de algoritmos que son inaplicables

Tcnicas para la resolucin de ecuaciones de


Recurrencia
Expansin de la Recurrencia: ocnsiste en exapndir al recurrencia
hasta llegar a un caso base.
Mtodo de la Ecuacin caracterstica: Consiste en obtener, a partir de
la ecuacin de recurrencia y de manera sistmica, una ecuacin
polinmica cuyas soluciones proporcionan la solucin de la ecuacin
de recurrencia
Utilizacin de Formulas Maestras: En el estudio de los algoritmos se
repiten con mas frecuencia ecuaciones de algunos tipos bsicos, por
lo que se podra tener la solucin de estos tipos bsicos y dado un
algoritmo, identificar a que tipo pertenece su ecuacin.

Ley de Amdahl

Definicin
Evala como cambia el rendimiento al mejorar una parte de la
computadora.

Define el speedup (aceleracin) que se puede alcanzar al usar cierta


mejora.
Speedup

Rendimient o al usar la mejora


Rendimient o sin usar la mejora

Alternativamente
Speedup

Universidad de Sonora

Tiempo de ejecucin sin la mejora


Tiempo de ejecucin con la mejora

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

Tiempo de ejecucinnuevo Tiempo de ejecucinviejo (1 - Fraccinmejora)


Speedupmejora

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

Tiempo de ejecucinnuevo Tiempo de ejecucinviejo (1 - Fraccinmejora)


Speedup
mejora

Tiempo de ejecucin original: 100 segundos.


Tiempo de ejecucin nuevo: 20 segundos.
Fraccin mejorada: 80 / 100 = 0.8
Falta por saber el speedup de la mejora.

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

Corolario de la ley de Amdahl


El speedup global est limitado por la fraccin del programa que se
puede mejorar.

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

La ley de Amdahl se puede usar para comparar entre dos opciones.


Se quiere mejorar un programa que hace ciertos clculos. Hay dos
opciones:
1. Comprar un chip que acelera el 20% del programa 10 veces.
2. Recodificar el 50% del programa para que corra 1.6 veces ms rpido.

Qu opcin ofrece mejor speedup?

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

No hay mucha diferencia entre 1.219 y 1.231.


Hay que considerar otros factores en la decisin.

Universidad de Sonora

Arquitectura de Computadoras

125

Vous aimerez peut-être aussi