Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Eficiencia en Algoritmos Paralelos - Bris
Eficiencia en Algoritmos Paralelos - Bris
fjbp0004@estudiante.ujaen.es
FECHA:
28 de mayo de 2011
ndice
I. Definicin y fundamentacin del problema
1. Introduccin. Fundamentacin.
2. Bsqueda de nuevos mtodos de anlisis.
4
4
5
6
6
6
7
8
9
10
10
11
11
12
13
13
14
IV. Bibliografa
17
algoritmos con fuertes restricciones temporales. Son sistemas cada vez ms complejos
que requieren mayor tiempo de cmputo.
Definicin.
En
informtica,
cuando
hablamos
de
algoritmo
paralelo
nos
estamos
refiriendo
a
un
algoritmo
que
puede
ser
ejecutado
por
partes,
o
de
un
modo
ms
formal,
el
tipo
de
algoritmo
en
el
que
programa,
procesador
y
puertos
de
comunicacin
interaccionan
intercambiando
tareas
a
travs
de
canales
para
la
resolucin
de
un
problema.
Paralelizacin,
divisin,
granularidad.
Dada
la
definicin,
instintivamente
nos
preguntamos
Hasta
qu
punto
podemos
dividir
la
tarea
en
otras
pequeas
tareas
paralelizadas?
Para
contestar
a
esta
pregunta,
tenemos
que
comprender
el
concepto
de
granularidad.
La
granularidad
de
un
sistema,
entendiendo
sistema
como
la
conjuncin
de
software
(nuestro
algoritmo)
con
hardware
(nuestro
equipo
multiprocesador),
indica
la
cantidad
de
computacin
y
datos
asignados
a
cada
procesador.
La
granularidad
est
determinada
por
el
nmero
y
el
tamao
de
las
tareas
en
el
cual
un
problema
es
descompuesto,
pudiendo
distinguir
as
entre
grano
fino
y
grano
grueso.
Grano
fino
corresponde
a
una
asignacin
de
pocos
datos
por
procesador
o
a
una
baja
computacin
entre
comunicaciones.
Grano
grueso,
por
el
contrario,
es
la
granularidad
que
se
da
cuando
existe
una
gran
carga
de
datos
por
cada
procesador
o
bien
se
realiza
mucha
computacin
entre
comunicaciones.
En
cuanto
a
algoritmos,
solo
nos
interesar
la
programacin
paralela
cuando
el
sistema
sea
de
grano
grueso,
ya
que
es
preferible
una
cantidad
de
datos
a
procesar
aceptable
con
pocos
hilos
de
proceso
que
numerosos
procesadores
con
escasa
cantidad
de
datos
a
procesar,
con
la
informacin
muy
dividida.
Algunos
algoritmos
son
ms
fciles
de
dividir
en
partes
que
otros,
as
podemos
poner
como
ejemplo
de
un
problema
difcilmente
paralelizable
el
problema
de
los
tres
cuerpos,
que
consiste
en
determinar,
a
partir
de
las
posiciones
y
velocidades
de
stos
los
resultados
de
la
interaccin
de
tres
cuerpos
en
un
campo
de
fuerzas
aislado.
Este
tipo
de
problemas
se
conoce
como
problemas
inherentemente
secuenciales.
Otros
problemas
sin
embargo
son
fcilmente
divisibles
en
subprocesos,
como
el
algoritmo
ray
tracing,
propuesto
por
primera
vez
en
1968,
por
Apple
y
que
actualmente
es
una
de
las
simulaciones
ms
completas
en
cuanto
a
modelos
de
iluminacin
y
reflexin
por
computadora.
En
la
figura
2.1
podemos
ver
un
sencillo
grfico
donde
se
muestra
la
mejora
terica
de
un
algoritmo
paralelizado
con
p
procesadores.
!"#$%&%&'()'*$+,-%./,&'0*-*$)$,&
(1 - f)ts
Serial section
Parallelizable sections
p processors
tp
(1 - f)ts /p
Introduccin a la Computacin Paralela
43
figura 2.1
Punto
de
saturacin.
Ley
de
Amdahl.
Debemos
tener
cuidado
con
la
granularidad
de
nuestro
algoritmo.
No
podemos
olvidar
que
por
mucho
que
lo
dividamos,
siempre
se
va
a
mantener
una
parte
secuencial
por
lo
que
la
divisin
en
un
excesivo
nmero
de
subprogramas
puede
llevar
a
un
punto
de
saturacin,
en
el
que
el
uso
de
ms
procesadores
no
induce
mejora
alguna.
Para
averiguar
la
mejora
mxima
del
sistema
cuando
solo
una
de
las
divisiones
de
ste
es
mejorada
se
utiliza
la
ley
de
Amdahl:
<<La mejora obtenida en el rendimiento de un sistema debido a la alteracin de uno de sus
componentes est limitada por la fraccin de tiempo que se utiliza dicho componente>>
Matemticamente:
Tuso mejorado
f mejora
con:
Gananciavelocidad =
Tejecucin antiguo
Tejecucin mejorado
La
tcnica
memoria
compartida
necesita
del
uso
de
cerrojos
(latches)
en
los
datos
para
impedir
que
un
bloque
de
informacin
se
modifique
simultneamente
por
dos
o
ms
procesadores,
por
lo
que
se
produce
un
coste
extra
en
ciclos
de
procesador.
10
Ganancia
de
velocidad.
Speed-up.
Fundamentalmente
el
Speed-Up
es
una
tcnica
de
la
que
se
obtiene
una
relacin
de
mejora
entre
el
tiempo
de
ejecucin
de
un
programa
secuencial
(con
un
solo
procesador)
y
en
paralelo
(con
p
procesadores).
Viene
definido
por
la
siguiente
frmula:
Speed-Up:
S(n, p) =
t(n)
t(n, p)
A
partir
de
esta
frmula
podemos
pensar
aplicando
una
lgica
sencilla
que
el
11
300
250
200
150
Speed-Up ideal
100
Speed-Up real
50
0
0
32
64
figura 3.1
S(n, p)
p
El
valor
mximo
que
puede
alcanzar
es
uno,
que
corresponde
con
el
ndice
de
mximo
aprovechamiento,
100%.
Normalmente,
al
aumentar
el
nmero
de
procesadores
el
ndice
de
eficiencia
se
aleja
del
valor
de
mximo
aprovechamiento;
en
cambio,
para
un
nmero
de
procesadores
determinado,
aumentar
conforme
aumente
el
tamao
del
problema
Cuando
hablamos
de
que
en
ciertos
sistemas
las
prestaciones
se
mantienen
cuando
aumenta
tanto
el
nmero
de
procesadores
como
el
tamao
del
problema
hablamos
de
la
escalabilidad
del
sistema.
Conocer
si
un
sistema
es
escalable
es
muy
importante
para
saber
si
en
un
futuro,
dado
un
hipottico
aumento
del
tamao
del
problema
y
de
la
cantidad
de
procesadores
se
mantendr
la
eficiencia
del
programa.
Si
un
algoritmo
no
es
escalable,
aunque
se
aumente
el
nmero
de
procesadores,
no
se
conseguir
mantener
la
eficiencia
aunque
se
aumente
a
la
vez
el
tamao
del
problema,
con
lo
que
cada
vez
se
aprovechar
menos
la
potencia
de
los
procesadores.
12
Distribucin
del
trabajo.
Mapeo
y
equilibrado
de
carga.
El
mapeo
es
el
proceso
por
el
cual
decidimos
asignar
tareas
a
procesadores.
El
objetivo
es
obtener
un
programa
que
se
ejecute
de
la
forma
ms
eficiente
posible
en
el
sistema
del
que
disponemos.
Partimos
de
un
conjunto
de
tareas
o
hilos
que
se
pueden
lanzar
concurrentemente
y
un
conjunto
de
enlaces
entre
ellas
que
representan
los
requerimientos
de
comunicacin.
En
funcin
de
esto
y
de
los
recursos
disponibles
debemos
disear
una
distribucin
de
trabajo
lo
ms
equilibrada
posible.
El
balanceo
o
equilibrado
de
la
carga
es
la
distribucin
o
divisin
del
trabajo
de
una
forma
equitativa
entre
los
procesadores
de
nuestro
sistema.
Para
algunos
problemas
puede
ser
necesario
un
proceso
de
equilibrado
continuo
de
carga
(equilibrado
dinmico).
Una
correcta
distribucin
del
trabajo:
Funcin
de
Isoeficiencia.
Funcin
cuyo
cometido
es
el
de
ofrecernos
informacin
acerca
de
cmo
debe
crecer
el
tamao
del
problema
en
funcin
del
nmero
de
procesadores
para
poder
mantener
una
eficiencia
constante
en
sistemas
escalables.
En
general,
para
obtener
esta
funcin
basta
con
comparar
el
tiempo
secuencial
con
la
funcin
de
overhead.
Cuanto
menor
sea
la
funcin
de
Isoeficiencia,
mejor,
ya
que
el
sistema
ser
ms
escalable
y
esto
conlleva
una
serie
de
beneficios
como
los
enunciados
anteriormente.
La
funcin
overhead
(no
confundir
con
el
concepto
de
overhead)
es
la
diferencia
entre
el
tiempo
de
ejecucin
del
algoritmo
y
el
tiempo
de
ejecucin
del
algoritmo
idealizado,
es
muy
difcil
de
medir.
13
Declaraciones
previas
Para
cada
una
de
las
entradas
Comprueba
si
la
entrada
es
una
carpeta.
En
caso
afirmativo
inicia
un
nuevo
proceso
de
bsqueda.
Comprueba
si
entrada
es
un
fichero.
En
caso
afirmativo
comprueba
si
tiene
el
nombre
buscado.
En
caso
afirmativo
devuelve
ubicacin.
en:\n\n");
System.out.println(entrada+"\n\n");
}
}
}
}
El
funcionamiento
del
algoritmo
es
el
siguiente:
para
cada
nivel
de
directorio,
realiza
una
bsqueda
comprobando
cada
elemento
para
ver
si
es
el
fichero
buscado
(caso
en
el
que
terminara
el
programa)
o
es
un
directorio.
14
15
16
IV. Bibliografa
Cabe destacar tambin que me ha sido de ayuda poder contrastar informacin con
algunos puntos de la Tesis Doctoral sobre Algoritmos Paralelos de D. Rafael Arturo
Trujillo Rasa, de la Universidad Politcnica de Valencia.
17