Está en la página 1de 17

PROGRAMACION II

CMO MEDIR LA EFICIENCIA EN ALGORITMOS PARALELOS

Escuela Politcnica Superior de Linares


ALUMNO:

Francisco Javier Bris Pealver

2 de Ingeniera Tcnica de Telecomunicacin


PROFESORES: D. Francisco Charte Ojeda (T)
D. Jos Ramn Cano de Amo (P)
CORREO:

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

II. Algoritmos paralelos


1. Definicin.
2. Paralelizacin, divisin, granularidad.
3. Punto de saturacin. Ley de Amdahl.
4. La importancia del coste. Tipo de memoria.
5. Ventajas de la computacin paralela.

6
6
6
7
8
9

III. Medida de la eficiencia


1. Tiempo de ejecucin de un programa paralelo.
2. Reduccin de prestaciones. Lmites.
3. Ganancia de velocidad. Speed-up.
4. Medida de la eficiencia.
5. Coste y distribucin del trabajo.
6. Funcin de Isoeficiencia.
7. Aplicacin prctica de conceptos.

10
10
11
11
12
13
13
14

IV. Bibliografa

17

I. Definicin y fundamentacin del problema

La problemtica que se trata en este trabajo es cmo podemos medir la eficiencia en


algoritmos paralelos. Para ello comenzaremos definiendo el problema, argumentando
por qu los mtodos tradicionales de anlisis no son vlidos y dando las primeras
pinceladas a las posibles soluciones. Posteriormente, en el punto II explicaremos el
concepto de algoritmo paralelo y trataremos de exponer de la forma ms concisa
posible su funcionamiento y caractersticas principales. Para terminar, el punto III
aborda la solucin del problema aplicando distintas reglas y conceptos.
De forma general, la medida de la eficiencia de algoritmos nos da una informacin
precisa sobre la cantidad de recursos computacionales que va a consumir la ejecucin
de dicho algoritmo, y a la hora de elegir entre distintos algoritmos permite que nos
decantemos por el que mejor se ajusta a nuestras necesidades o requerimientos.
De forma emprica, este consumo de recursos se medir fundamentalmente en tiempo.
Esta forma de medicin conlleva una serie de problemas, como la influencia de
factores externos (lenguaje de programacin, mquina, compilador, carga del
sistema) y la imposibilidad de ensayo para tamaos muy grandes del problema en
cierto tipo de algoritmos (algoritmos genticos).
Estos inconvenientes hacen necesaria la determinacin matemtica de su orden de
eficiencia general, de una forma completamente terica sin necesidad de tomar en
cuenta factores como el compilador, el lenguaje, la mquina, etc y genrica para
cualquier tamao del problema.
La medida de la eficiencia terica se basa en el Principio de Invarianza: Dos
medidas distintas de un mismo algoritmo no difieren en eficiencia ms que en una
constante multiplicativa, quedndonos con el orden de eficiencia de dicho
algoritmo (n, nlog(n), n! ). Este mtodo general de anlisis se denomina
notacin asinttica, y cabe destacar que es ampliamente utilizado por ser una
herramienta matemtica que simplifica notablemente los anlisis de costes y
permite expresar, de una forma concisa, los resultados.

En el plano de los algoritmos paralelos, el anlisis de la eficiencia de stos suscita un
gran inters ya que es ms rpido tratar grandes tareas de computacin mediante la
paralelizacin que mediante tcnicas secuenciales.
Es digno de mencin que, en cuanto al desarrollo de microprocesadores actuales, se
trabaja con la paralelizacin ya que se ha llegado a un punto en el que es ms difcil
incrementar la capacidad de procesamiento de informacin de un procesador mononcleo que tratar de aumentar dicha capacidad mediante la inclusin de diversas
unidades de ejecucin en paralelo, consiguiendo de esta manera la ejecucin de varias
lneas de instrucciones de forma simultanea. Esta demanda de mayor poder
computacional viene respaldada por las necesidades en cuanto a modelado y
simulacin numrica, clculos iterativos sobre grandes cantidades de datos y

algoritmos con fuertes restricciones temporales. Son sistemas cada vez ms complejos
que requieren mayor tiempo de cmputo.

Bsqueda de nuevos mtodos de anlisis.


En el caso de el anlisis de eficiencia para algoritmos paralelos la complejidad
aumenta. El anlisis para programas secuenciales no es vlido para algoritmos
paralelos puesto que adems de los parmetros anteriormente citados que afectan a la
ejecucin del algoritmo, ahora nos encontramos con nuevos factores de los que
depende la eficiencia, como el nmero de procesadores, la interconexin entre stos y
el tipo de memoria que utilizan. En general se puede decir que el problema trata de
conseguir que si el orden de eficiencia para el algoritmo secuencial era de T(n), ahora,
para el algoritmo paralelizado, se reduzca a T(n)/p, donde p ser el nmero de
procesadores usados por el algoritmo. Con esto tratamos de acelerar la resolucin del
problema.

II. Algoritmos paralelos


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*-*$)$,&

Aceleracin segn la ley de Amdahl


ts
fts

(1 - f)ts

Serial section

Parallelizable sections

(a) One processor


(b) Multiple
processors

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:

Tejecucin mejorado = Tejecucin antiguo (1 Tuso mejorado +

Tuso mejorado
f mejora

con:

Gananciavelocidad =

Tejecucin antiguo
Tejecucin mejorado

O trasladado a otras palabras, el incremento de velocidad de una tarea utilizando


varias unidades de proceso en computacin distribuida (concepto que
introduciremos ms adelante) est limitado por la mnima fraccin secuencial de
la tarea, momento este en el que se llega al punto de saturacin y no se puede
paralelizar ms el algoritmo.
Esta ley nos indica que dada una tarea con T divisiones independientes, tendrn
mayores ndices de mejora aquellas partes que contenga ms datos, que necesiten
ms tiempo de ejecucin, de ah el principio:
Siempre se debe optimizar el caso ms comn

La importancia del coste. Tipo de memoria.


El coste representa el trabajo realizado por todo el sistema para la resolucin del
problema. Como hemos visto, los algoritmos paralelos no solo tienen un coste en
trminos del espacio (memoria) y tiempo (ciclos de procesador), sino que
tambin necesitan optimizar la comunicacin entre diferentes unidades de
procesamiento. Esto se consigue mediante la aplicacin de dos tcnicas
ampliamente extendidas, memoria compartida o paso de mensajes.
En memoria compartida nos encontramos con un nico espacio de memoria.
Todos los procesadores tienen acceso a la memoria a travs de una red de
conexin que puede ser un bus, una red de barras cruzadas o una red multietapa.

Redes basadas en buses: Es simple y con


buena capacidad de acceso a memoria.
En contraposicin, la cantidad de datos
a transmitir limitada por el bus, y el
rendimiento se satura para un nmero
de procesadores bajo. Esto ltimo se
puede solventar mediante memorias
locales de cach en los procesadores
(ver figura 2.2)
Redes de barras cruzadas: Conecta un

figura 2.2
nmero determinado de procesadores
con una serie de mdulos de memoria
mediante el uso de una red de conmutadores.
Conforme crece el nmero de procesadores la complejidad de la red
aumenta cuadrticamente por lo que no son muy escalables.
Redes de interconexin multietapa: Es un tipo de red intermedia en
trminos de escalabilidad en costo y rendimiento

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.


Con memoria distribuida el computador se convierte bsicamente en una


coleccin de procesadores secuenciales que trabajan conjuntamente, donde cada
procesador tiene su propia memoria local (ver figura 2.3). Se utiliza el paso de
mensajes para intercambiar datos entre procesadores (acceso a memoria de otro
procesador), normalmente mediante redes o sistemas de interconexin de alta
velocidad. Independientemente de
esta red, cada procesador tiene
acceso rpido a su propia memoria.
Los datos son intercambiados entre
los nodos como mensajes a travs de
la red, por lo que las redes de
ordenadores cobran especial inters
para la resolucin de problemas con
este tipo de algoritmos paralelos.
La tcnica paso de mensajes aade un
coste al bus, que se traduce en
figura 2.3
memoria adicional para las colas y los mensajes. A la hora de disear un
procesador paralelo conviene usar canales especiales para que el coste de la
comunicacin sea lo menor posible.

Ventajas de la computacin paralela.
La principal ventaja de la programacin paralela es que permite proveer al
sistema de la potencia computacional necesaria para tratar y resolver problemas
de gran envergadura y/o reducir los tiempos de ejecucin para acelerar la
obtencin de soluciones.
De una forma esquemtica podramos reducirlo en:

Resolver problemas que no caben en una CPU


Resolver problemas que no se resuelven en un tiempo razonable
Se pueden ejecutar problemas mayores
Resolver problemas ms rpidamente (con mayor aceleracin)

III. Medida de la eficiencia




Tiempo de ejecucin de un programa paralelo.
En el caso de un programa secuencial, el tiempo de ejecucin es el tiempo que
transcurre desde que se inicia la ejecucin hasta que finaliza. En cambio, en el
caso de un programa paralelo es el tiempo transcurrido desde que comienza la
ejecucin por parte del primer procesador (primer hilo que se lanza) hasta el
momento en que el ltimo procesador finaliza su ejecucin.
No siempre va a ser fcil determinar el orden en que los procesadores empiezan y
acaban, ya que hemos de tener en cuenta la existencia de una serie de puntos de
sincronizacin a los que llegan los distintos procesos en un orden indefinido. Por
ellos, estos puntos de sincronizacin en memoria tienen una duracin que no
siempre podemos determinar.
A priori el tiempo de ejecucin vendr determinado por:

t(n, p) = t a (n, p) + t c (n, p)


Siendo p el nmero de procesadores, n el tamao del problema, Ta(n,p) la suma
de los tiempos de ejecucin de las operaciones en distintas partes de
computacin, tambin conocido como tiempo aritmtico. Tc(n,p) ser el tiempo de
el tiempo que tarda el sistema multiprocesador en ejecutar
comunicacin,
transferencias de datos
Existe un tiempo de sobrecarga, overhead, que puede ser debido a la
sincronizacin de la mquina, la puesta en marcha de los procesos y a posibles
retardos de la red de comunicacin. Tambin existe el tiempo de solapamiento,
que se puede definir como el intervalo de tiempo en el que las operaciones
aritmticas y las de comunicaciones se realizan de forma simultnea. Este tiempo,
an siendo muy importante, suele ser muy difcil de calcular.
Por tanto, el tiempo de ejecucin se puede expresar de una forma ms detallada:

t(n, p) = t a (n, p) + t c (n, p) + t ov (n, p) t sol (n, p)



A partir de esta frmula podemos concluir que se puede llevar a cabo una buena
mejora
de la eficiencia del algoritmo reduciendo al mnimo el tiempo de

sobrecarga y maximizando el tiempo de solapamiento.


10

Reduccin de prestaciones. Lmites.

Cdigo secuencial: Como ya hemos comentado en apartados anteriores,


puede haber parte imposible de paralelizar. Un ejemplo puede ser la
inicializacin de variables.
Contencin de memoria: Problema que se da con el acceso a datos
comunes o que estn en el mismo bloque de memoria. En el caso en que los
datos son de lectura, normalmente no se da ese problema.
Tiempo de creacin de procesos: Cuantos ms subprocesos se quieran
crear, ms tarda el programa en ponerlos en marcha. El coste de creacin
de los procesos puede ser importante si la granularidad de stos es
pequea.
Comunicaciones: Como hemos mencionado, es el tiempo de transferencia
de datos entre procesadores.
Tiempo de sincronizacin: Se da cuando un proceso tiene que esperar a
que estn disponibles datos procesados por otro.
Desbalanceo de la carga: Se define como la carencia de una distribucin
equitativa del volumen de computacin entre todos los procesadores.
Puede darse que el volumen de datos vare a lo largo de la ejecucin, lo que
hara necesario algn tipo de balanceo dinmico.


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

Speed-Up simplemente corresponder con el nmero de procesadores del


algoritmo paralelo. Esta afirmacin se conoce como Speed-Up ideal y est
considerada como una buensima escalabilidad del algoritmo. Sin embargo, en la
prctica es bastante complicado ya que conducira a una ganancia de velocidad
lineal, donde doblando el nmero de procesadores se doblara la velocidad de
cmputo.

11

300
250
200
150

Speed-Up ideal

100

Speed-Up real

50
0
0

32

64

96 128 160 192 224 256

figura 3.1

Excepcionalmente puede darse un Speed-Up supralineal, que consiste


tericamente en superar una ganancia de velocidad lineal del programa paralelo
respecto al secuencial. Este fenmeno se suele dar a causa de una mejor gestin
de memoria y por la acumulacin de memoria cach de los procesadores.
Tambin es relativamente usual cuando se implementan algoritmos con
backtraking en paralelo.

Medida de la eficiencia. Escalabilidad.
La eficiencia se define en un algoritmo paralelo como el cociente entre el Speed-
Up y el nmero p de procesadores. Nos proporciona una idea de la porcin de
tiempo que los procesadores se dedican a trabajo til, tambin entendido como
rendimiento.
E=

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:

En memoria distribuida: Puede reducir el coste de las comunicaciones


asignando datos que se comunican frecuentemente a procesadores
vecinos. Evita comunicaciones y congestin de la red innecesaria.
En memoria compartida: Puede influir en el coste de los accesos a
memoria, en el caso en que procesadores distintos accedan a bloques
distintos. En este caso adems mejora el uso de la jerarqua de memoria.


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

Aplicacin prctica de conceptos.


A partir de los conceptos previamente expuestos vamos a proceder a comentar
algunos aspectos de un algoritmo: bsqueda de un archivo de manera
paralelizada, implementado por Jos Carlos Rodrguez.
import java.io.File;
public class Busqueda extends Thread
{
String nombreBuscar;
File[] entradas;
public Busqueda(String nombreBuscar, File ruta)
{
entradas = ruta.listFiles();
this.nombreBuscar=nombreBuscar;
}
@Override
public void run()
{
String nombreArchivo;
String nombre[];
for (File entrada : entradas)
{
if(entrada.isDirectory())
{
new Busqueda(nombreBuscar, entrada).start();
}
if(entrada.isFile())
{
nombre=entrada.getName().split("[.]");
nombreArchivo=nombre[0];
if(nombreArchivo.equals(nombreBuscar))
{
System.out.println("Archivo Encontrado

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

Por cada directorio que se encuentre en el nivel, se accede a ste mediante un


nuevo proceso que lanza de nuevo el algoritmo de bsqueda comparando cada
elemento de la lista de ficheros con el buscado.
En funcin de las variables del problema que podramos determinar como
nmero medio de ficheros por directorio y nmero de directorios, podemos
distinguir varios casos:
Caso primero: Pocos ficheros y pocos directorios.
En este caso el uso de un algoritmo paralelo no tiene sentido ya que, como
hemos visto, stos son ventajosos para tratar y resolver problemas de gran
envergadura. Para pocos ficheros y pocos directorios no se requiere una gran
potencia computacional ni consumir excesivo tiempo, al no ser un problema de
envergadura.
Adems, una hipottica mejora del rendimiento (mayor aceleracin) inducida por
el uso de computadores paralelos no sera significativa.
Caso segundo: Pocos ficheros y muchos directorios.
En este caso el uso de un algoritmo paralelo no solo no tiene sentido por los
motivos expuestos en el apartado anterior, sino que adems puede empeorar los
tiempos debido a que, al ser un problema con una alta granularidad (poca carga
de trabajo para gran nmero de procesos), tenemos una importante reduccin de
las prestaciones por la creacin de procesos, el tiempo de comunicacin entre
procesadores y el tiempo de sincronizacin.
Es posible que con un algoritmo con balanceo dinmico de la carga, que reparta
rpidamente las cargas de trabajo entre los distintos procesadores las
prestaciones se mantuvieran, pero en cualquier caso estamos hablando de una
alta complejidad del programa para mantener las prestaciones de antes de
paralelizar el algoritmo.
Caso tercero: Muchos ficheros y pocos directorios
Este es el caso en el que probablemente tiene todo el sentido el uso de un
programa paralelo, ya que estamos ante una muy baja granularidad (una gran
carga de datos por cada procesador), lo que se traduce en una buena ganancia de
velocidad al ejecutar varios hilos simultneamente.
Adems, estamos ante un caso en el que quedan bastante limitados los tiempos de
comunicacin entre procesadores y de creacin de procesos, lo que contribuye a
una buena eficiencia del algoritmo.
Cabe destacar que la ejecucin de este algoritmo, por la comparacin de cada
elemento con el buscado secuencialmente, puede llevarnos a tiempos prohibitivos
si nos movemos con un elevado nmero de ficheros.



15

Caso cuarto: Muchos ficheros y muchos directorios


En este caso tenemos los beneficios del caso inmediatamente anterior a este,
como la baja granularidad y la buena ganancia de velocidad al ejecutar varios
hilos simultneamente, pero perdemos algunos otros beneficios ya que tenemos
una bajada de prestaciones debida a los tiempos de comunicacin entre
procesadores y de creacin de procesos.
Dicho esto, en este caso tambin sera apropiado el uso de algoritmos paralelos
ya que podemos obtener una buena ganancia en velocidad sobre todo si, aun
siendo ambas altas, la cantidad de ficheros es muy elevada en comparacin con el
nmero de directorios.
Como conclusin, extensible a la gran mayora de los programas, la
paralelizacin de un algoritmo solo se justifica cuando exista una fuerte demanda
de capacidad de cmputo, y ser prohibitivo su uso cuando estemos ante
algoritmos con poco consumo de recursos y/o muy subdivididos.

16

IV. Bibliografa

Para la realizacin de este trabajo me he basado en numerosas fuentes:

Apuntes de la asignatura: Computacin de altas prestaciones (cuyas referecias


son: Foster, cap 3; Kumar, Grama, Gupta, Karypis, cap 4; Wilkinson, Allen, cap
2.3 y 2.4)

Informacin obtenida de diversos artculos de Wikipedia:


o Algoritmo paralelo
o Computacin paralela
o Hilo de ejecucin

Apuntes variados del Departamento de Ciencias de la Computacin de la


Universidad de Chile.

Transparencias de Arquitectura e Ingeniera de Computadores II (Profersor: D.


Juan Antonio Maestro, de la Universidad Antonio de Nebrija)

Transparencias de la asignatura Algoritmos Paralelos Tema 1. Introduccin a la


computacin paralela. (Profesor: D. Vicente Cervern, de la Universidad de
Valencia)

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

También podría gustarte