Sei sulla pagina 1di 43

UNIVERSIDAD NACIONAL AUTNOMA DE MXICO

FACULTAD DE CONTADURA Y ADMINISTRACIN


DIVISIN SISTEMA UNIVERSIDAD ABIERTA Y
EDUCACIN A DISTANCIA
Modalidad: A Distancia
Licenciatura en Informtica
Alumno: Carlos Alvarado Martnez

Nmero de Cuenta: 304045046

Correo: carlos-alvarado@outlook.com
Materia: Principios y Tcnicas de Investigacin
Unidad 3 Actividad 1
Elabora un prototipo de proyecto investigacin que contenga los siguientes
elementos:
Tema
Delimitacin
Justificacin
Objetivos
Hiptesis
Esquema preliminar
Marco terico

Procesamiento en paralelo vs poder de procesamiento


Delimitacin
Se pretende demostrar que una crecida que tiende a duplicarse en cada iteracin
en capacidad de procesamiento en paralelo no resulta muy necesaria contra las
tendencias del mercado en la mayora de los programas actuales.
Justificacin
Todo programa es la representacin de un algoritmo computable, es decir un
modelo que permite mediante una serie finita y bien definida de pasos, obtener un
resultado.
El procesamiento paralelo a nivel de algoritmo implica que el algoritmo pueda
procesarse por partes y despus ser unido para generar el resultado deseado.
Objetivos
Se describe y se comprueba la arquitectura paralela MIMD que se vende de forma
masiva en las computadoras, para determinar el lmite de ganancia al ir
implementando ms procesadores, contra la paralelizacin mxima de los
algoritmos de los programas paralelos.
Hiptesis
El procesamiento en paralelo a nivel de algoritmo logra duplicar la velocidad de
procesamiento de una computadora solamente si al menos la mitad del cdigo es
paralelizable y si se tienen 16 procesadores, tener ms procesadores no reporta
una tasa de ganancia que valga la pena.

Se espera como conclusin que es ms favorable tener al menos un ncleo ms


potente que muchos ncleos en situaciones de ejecucin de algoritmos
secuenciales y que la ganancia del procesamiento en paralelo an necesita
explotarse a nivel de algoritmos paralelos.
Esquema preliminar
Hasta mediados de los aos 2000, los grandes fabricantes de procesadores
competan en poder de procesamiento, pretendan alcanzar mayores velocidades
de reloj, aadan mayores capacidades al cach, aadieron otros cachs,
mejoraron el proceso de fabricacin disminuyendo el consumo de energa y el
tamao de los microprocesadores, pero eventualmente llegaron al lmite de
potencia que se puede obtener con la tecnologa actual.
La solucin prctica y de mercado fue ofrecer mltiples procesadores, de hecho
Intel dio el primer paso en esa direccin ya en el ao 2003 con la introduccin de
su tecnologa HyperThreading que trata de imitar un segundo procesador, que
desde el BIOS queda registrado como un procesador extra, haciendo que el
sistema operativo detecte dos procesadores en lugar de uno.
El primer procesador comercial de Intel en incluir dos ncleos fue el celebre Intel
Core 2 Duo, AMD, el mayor competidor de Intel en procesadores x86 por su parte
sac el Athlon 64 X2 y a partir de ese momento, la competencia entre estos
fabricantes ha ido en aumento; para el ao 2014, es normal disponer de
procesadores de ocho ncleos, las computadoras potentes disponen de doce y
hasta diecisis ncleos de procesamiento.
En los entornos de servidores el procesamiento paralelo ha sido ampliamente
utilizado en las bases de datos transaccionales, as como en las operaciones
mltiples como la banca y las consultas y peticiones de informacin de los

usuarios, es normal encontrar que un nodo de servidor tiene treinta y dos


procesadores o sesenta y cuatro inclusive.
Pero el objetivo de esta investigacin, es determinar si las empresas dedicadas al
segmento del usuario final han llegado a la nueva frontera de rendimiento, por
encima de lo que las campaas de marketing hagan creer.
Marco terico
Algoritmos paralelos (Jeffrey, 2009)
La gente ha reconocido durante mucho tiempo que en la mayora de los casos,
dos personas pueden realizar una tarea mejor que una sola, y que tres personas
lo pueden lograr an ms rpido. La forma en que esto se ha aplicado en la
prctica es variada.
En las oficinas, los archivos y carpetas pueden trabajarse ms rpido si se dividen
entre un grupo de trabajadores. En las lneas de montaje se aceleran los procesos
al hacer que una persona haga una y otra vez la misma tarea, as esta persona
puede hacer el trabajo ms rpido porque no tiene que cambiar las herramientas.
La gente se dio cuenta de que se pueden desplazar ms baldes de agua si, en
lugar de ir corriendo de arriba abajo, la gente se mantena en una lnea y solo iban
pasando los cubos de ida y vuelta.
Cuando hablamos de los algoritmos de programacin en paralelo, vemos
conceptos muy similares. Hay sistemas multitarea, donde cada procesador hace la
misma tarea con datos diferentes. Hay sistemas en pipeline, donde cada
procesador hace un paso de la tarea de descodificacin y ejecucin de una
instruccin de un programa, y a continuacin, pasa los resultados a otro
procesador, que hace el siguiente paso.

Los sistemas de flujo de datos (Dataflow systems) establecen una serie de


procesadores para llevar a cabo una tarea o clculo, y luego los datos de entrada
pasan de procesador en procesador en el clculo del resultado.
Pero, qu es un algoritmo? (Lpez, 2009)
La RAE define a un algoritmo como un conjunto finito y ordenado de operaciones
que permite hallar la solucin de un problema. En trminos sencillos, un algoritmo
es un conjunto de pasos que, ejecutados de la manera correcta, permite obtener
un resultado en un tiempo acotado.
Tambin es necesario que las operaciones que forman parte del algoritmo estn
perfectamente definidas y que no haya ambigedad al momento de ejecutarlas; un
algoritmo es unvoco, lo que implica que si se ejecuta varias veces el mismo
algoritmo sobre el mismo conjunto de datos de entrada, siempre se obtienen los
mismos datos de salida; adems el resultado debe de generarse en un tiempo
finito.
Los mtodos que utilizan algoritmos se denominan mtodos algortmicos, en
oposicin a los que implican algn juicio o interpretacin, que se denominan
mtodos heursticos. Los mtodos algortmicos se pueden implementar en
computadoras, es decir, son computables; sin embargo los procesos heursticos
no son tan fcilmente convertibles en ellas. En los ltimos aos, sin embargo, las
tcnicas de inteligencia artificial hicieron posible la implementacin del proceso
heurstico en computadoras.
Comunicacin de los Procesadores (Jeffrey, 2009)
En una mquina de acoplamiento flexible, los procesadores se comunican a travs
de cableado. Ahora examinaremos algunas de las posibles configuraciones que
son posibles entre estos procesadores mediante cableado.

En un extremo se encuentran los procesadores totalmente conectados a la red,


donde cada procesador tiene una conexin con cualquier otro procesador.

En el otro extremo tenemos a las redes completamente lineales, donde los


procesadores estn dispuestos en una lnea y cada procesador est conectado
con los dos adyacentes al mismo, excepto claro, para los procesadores de inicio y
final de la lnea que tienen solamente un procesador adyacente.

En una red totalmente conectada, la informacin fluye rpidamente entre los


procesadores, pero con el alto costo de la cantidad de cableado necesario para
hacerlo. En una red lineal, la informacin viaja ms lentamente debido a que debe
ser transmitida de procesador al procesador hasta que llegue a su destino, y el
fracaso de un solo punto, interrumpe el flujo de informacin.
Una alternativa a una red lineal que mejora la fiabilidad es una red en anillo, que
es casi como una red lineal, excepto que la primera y la ltima estacin de la lnea
estn tambin conectadas. La informacin puede ahora viajar ms rpidamente,
ya que slo necesitar pasar a travs de, como mximo, la mitad de los
procesadores.

Principios del anlisis paralelo (Jeffrey, 2009)


Hay dos conceptos que se deben comprender en el anlisis del paralelismo: la
velocidad y el costo. La velocidad de un algoritmo paralelo es el factor por el cual
es ms rpido que un algoritmo secuencial ptimo equivalente.
El costo de un algoritmo paralelo se definir como el tiempo del algoritmo
multiplicado por el nmero de procesadores utilizados, ya que en muchos
ejemplos el coste de un algoritmo paralelo es mayor que el de un algoritmo
secuencial.
Otro tema relacionado y que debe tomarse en cuenta es la escalabilidad del
problema. Si nuestra nica opcin para un algoritmo paralelo requiere que
tengamos el mismo nmero de procesadores como valores de entrada,
encontraremos con que ste algoritmo no se puede utilizar para obtener una lista
de cualquier tamao significativo. Esto representara un problema, porque nuestro
algoritmo de ordenacin secuencial no tiene tal restriccin de tamao.
En general, el inters de las soluciones paralelas ser donde el nmero de
procesadores es significativamente menor que el tamao potencial de la entrada y
donde el algoritmo puede manejar un aumento en el tamao de la entrada sin un
aumento en el nmero de procesadores necesarios.
La necesidad de paralelizar (Sedgewick, 1989)
El aumento de frecuencia de reloj de los circuitos hace que aumente la potencia
disipada de stos, al mismo tiempo que exige una mayor integracin (para reducir
el espacio a recorrer por la seal en el ciclo). Una mayor integracin del circuito a
su vez supone mayores dificultades de control de la temperatura. El control y
compatibilizacin de ambas magnitudes no siempre es posible, y cuando lo es

deben establecerse mecanismos de refrigeracin cada vez ms sofisticados (y


costosos).
Se ha establecido que el mnimo periodo de reloj alcanzable en un sistema es del
orden del nanosegundo (1); lo cual supone una frecuencia de 1000 MHz. Pues
bien, aunque tuvisemos una mquina que ejecutase instrucciones con un tiempo
de ciclo de ! = 1, si suponemos que una instruccin precisa de una media de 5
ciclos de reloj para ser ejecutada y asumimos, para simplificar que el nivel de
todos los circuitos lgicos es 1 ( _ = 1 ) y no existen retardos
( = 0). La productividad (instrucciones/segundo) de dicho sistema es:

1
(! _ + ) _

1
= 200
(10!! 1 + 0) 5

En este clculo asumimos que ! = 1 hace referencia al retardo mximo de una


puerta del sistema. En ocasiones, se suele utilizar tambin un ! que equivale al
retardo mximo de cualquier circuito del sistema: ! _ + . Una
velocidad de 200 (millones de instrucciones por segundo) es insuficiente
para determinadas aplicaciones. Desde los primeros das de la informtica los
grandes computadores se han utilizado para clculos intensivos. En la actualidad,
el abanico de utilizacin de stas mquinas se amplia introduciendo cuestiones de
procesamiento simblico, gestin de grandes bases de datos, bsquedas,
heurstica, etc. En muchos casos, existen aplicaciones y problemas con
requerimientos computacionales mucho ms grandes de orden incluso superior al
Gigaflop (1000 millones de instrucciones en coma flotante por segundo).

Cmo paralelizamos?
Hay dos formas de paralelizar en computacin, la forma ms obvia y sencilla, es
hacer que un procesador ejecute una tarea de un programa, mientras otro
procesador, ejecuta otra tarea de otro programa, es decir, multitarea real, fuera ya
de la ingeniera que permita tener todo un sistema operativo con un solo
procesador al ejecutar fracciones de cdigo confiado a su velocidad de reloj.
La otra forma es haciendo programacin paralela, es decir, hacer efectivo que el
algoritmo de un solo programa se ejecute en paralelo por varios procesadores a la
vez, esto indudablemente es la paralelizacin real en computacin, pero
implementar realmente un algoritmo paralelo es ms difcil de lo que pareca.
La clasificacin de las arquitecturas paralelas (Ibarra, 1995)
En 1966, Flynn establece una clasificacin de los computadores paralelos en
funcin del nmero de flujos de instrucciones y datos. Su clasificacin, ahora
convertida en un clsico, distingue cuatro tipos de arquitecturas: SISD, SIMD,
MISD, MIMD.
La arquitectura SISD (Single Instruction, Single Data) posee un nico flujo de
instrucciones que procesa un nico flujo de datos, se corresponde con la
arquitectura de Von Neumann:

La arquitectura MISD (Multiple Instruction, Single Data) en ella, cada vez que un
dato es extrado de la memoria se le procesa mltiples veces. Se corresponde con
las arquitecturas sistlicas o segmentadas:

La arquitectura SIMD (Single Instruction, Multiple Data) posee un nico flujo de


instrucciones y mltiples flujos de datos. Se corresponde con arquitecturas
matriciales donde mltiples unidades de proceso ejecutan de forma concurrente y
de forma sincronizada la misma instruccin sobre los mismos datos:

La arquitectura MIMD (Multiple Instruction, Multiple Data). En sta organizacin se


ejecutan asncronamente instrucciones en sendas unidades de procesamiento.
Corresponde a la organizacin de un sistema multiprocesador o multicomputador.

Fuentes del paralelismo


El procesamiento paralelo tiene como principal objetivo explotar el paralelismo
inherente a las aplicaciones informticas. Todas las aplicaciones no presentan el
mismo perfil cara al paralelismo: unas se pueden paralelizar mucho y en cambio
otras muy poco. Al lado de este factor cuantitativo evidente, es necesario
considerar tambin un factor cualitativo: la manera a travs de la cual se explota el
paralelismo. Cada tcnica de explotacin del paralelismo se denomina fuente.
Distinguiremos tres fuentes principales:
-Paralelismo de control
-Paralelismo de datos
-Paralelismo de flujo

Paralelismo de control
La explotacin del paralelismo de control proviene de la constatacin natural de
que en una aplicacin existen acciones que podemos hacer al mismo tiempo.
Las acciones, llamadas tambin tareas o procesos pueden ejecutarse de manera
ms o menos independiente sobre unos recursos de clculo llamados tambin
procesadores elementales.

En el caso de que todas las acciones sean independientes es suficiente asociar un


recurso de clculo a cada una de ellas para obtener una ganancia en tiempo de
ejecucin que ser lineal: acciones independientes se ejecutarn veces ms
rpido sobre Elementos de Proceso () que sobre uno solo. Este es el caso
ideal, pero las acciones de un programa real suelen presentar dependencias entre
ellas. Distinguiremos dos clases de dependencias que suponen una sobrecarga de
trabajo:
-Dependencia de control de secuencia: corresponde a la secuenciacin en un
algoritmo clsico.
-Dependencia de control de comunicacin: una accin enva informaciones a otra
accin.

La explotacin del paralelismo de control consiste en administrar las dependencias


entre las acciones de un programa para obtener as una asignacin de recursos
de clculo lo ms eficaz posible, minimizando estas dependencias.
Paralelismo de datos
La explotacin del paralelismo de datos proviene de la constatacin natural de que
ciertas aplicaciones trabajan con estructuras de datos muy regulares (vectores,
matrices) repitiendo una misma accin sobre cada elemento de la estructura. Los
recursos de clculo se asocian entonces a los datos. A menudo existe un gran
nmero (millares o incluso millones) de datos idnticos. Si el nmero de es
inferior al de datos, stos se reparten en los disponibles.

Como las acciones efectuadas en paralelo sobre los son idnticas, es posible
centralizar el control. Siendo los datos similares, la accin a repetir tomar el
mismo tiempo sobre todos los y el controlador podr enviar, de manera
sncrona, la accin a ejecutar a todos los .
Las limitaciones de este tipo de paralelismo vienen dadas por la necesidad de
dividir los datos vectoriales para adecuarlos al tamao soportado por la mquina,
la existencia de datos escalares que limitan el rendimiento y la existencia de
operaciones de difusin (un escalar se reproduce varias veces convirtindose en
un vector) y que no son puramente paralelas.

Paralelismo de flujo
La explotacin del paralelismo de flujo proviene de la constatacin natural de que
ciertas aplicaciones funcionan en modo cadena: disponemos de un flujo de datos,
generalmente semejantes, sobre los que debemos efectuar una sucesin de
operaciones en cascada.
Los recursos de clculo se asocian a las acciones y en cadena, de manera que los
resultados de las acciones efectuadas en el instante pasen en el instante + 1 al
siguiente. Este modo de funcionamiento se llama tambin segmentacin o
pipeline.

El flujo de datos puede provenir de dos fuentes:


-Datos de tipo vectorial ubicados en memoria. Existe entonces una dualidad fuerte
con el caso del paralelismo de datos.
-Datos de tipo escalar provenientes de un dispositivo de entrada. Este dispositivo
se asocia a menudo a otro de captura de datos, colocado en un entorno de tiempo
real.

En ambos casos, la ganancia obtenida est en relacin con el nmero de etapas


(nmero de ). Todos los no estarn ocupados mientras el primer dato no
haya recorrido todo el cauce, lo mismo ocurrir al final del flujo. Si el flujo presenta
frecuentes discontinuidades, las fases transitorias del principio y del fin pueden
degradar seriamente la ganancia. La existencia de bifurcaciones tambin limita la
ganancia obtenida.
Modelo PRAM en paralelismo (Baase, 2002)
Si el nmero de procesadores de las computadoras paralelas fuera pequeo,
digamos dos o seis, resultara ventajoso en la prctica usarlos para resolver
algunos problemas en los que el clculo se acelerara en un factor constante
pequeo. Sin embargo, tales mquinas, y los algoritmos para ellas, no seran muy
interesantes en el contexto actual, donde se hace caso omiso de las constantes
pequeas. Los algoritmos paralelos se vuelven interesantes desde el punto de
vista de la complejidad computacional cuando el nmero de procesadores es muy
grande, mayor que el tamao de las entradas en muchos de los casos reales en
los que se usa un programa. Es aqu donde se pueden obtener aceleraciones
importantes y algoritmos interesantes.
Hay varios modelos formales de aplicacin general y de aplicacin especial de
mquinas paralelas que corresponden a diversos diseos de hardware, reales o
tericos. La mquina paralela de acceso aleatorio PRAM (Parallel Random Access
Machine) es buena para abordar los algoritmos paralelos, aunque algunas de sus
caractersticas sean poco realistas.
Una PRAM consiste en procesadores de aplicacin general ! , ! , , !!! los
cuales estn conectados a una memoria de acceso aleatorio grande y compartida
, que se trata como un arreglo muy grande de enteros.

Los procesadores tienen una memoria local para sus propios clculos pero toda la
comunicacin entre ellos se efecta a travs de la memoria compartida. Todos los
procesadores ejecutan el mismo programa, pero cada procesador conoce su
propio ndice, llamado identificador de proceso (PID, Process ID) y conoce el
tamao de la entrada, que normalmente se designa con aunque a veces con un
par (, ) o algn otro conjunto fijo y pequeo de parmetros. El programa podra
ordenar a los procesadores hacer diferentes cosas dependiendo de sus . El
procesador usa su para calcular el ndice de la celda de memoria de la que
debe de leer o en la que debe escribir.
Los procesadores PRAM estn sincronizados; es decir, todos inician cada paso al
mismo tiempo, todos leen al mismo tiempo y todos escriben al mismo tiempo,
dentro de cada paso. Algunos procesadores tal vez no lean o escriban en algn
paso. Cada paso de tiempo tiene dos fases: la fase de lectura, en la que el
procesador puede leer de una celda de memoria y la fase de escritura en la que
podra escribir en una celda de memoria. Cada fase podra incluir algn clculo
(1) empleando variables locales antes y despus de su lectura o escritura. El
tiempo que se concede para dichos clculos es el mismo para todos los
procesadores y todos los pasos, de modo que las lecturas y escrituras se
mantengan sincronizadas. El modelo permite a los procesadores efectuar clculos
largos en un paso, porque, en los algoritmos paralelos, cabe esperar que la
comunicacin entre procesadores a travs de la memoria compartida tome mucho
ms tiempo que las operaciones locales dentro de un procesador.

Tcnica de abanico de entrada binario (Baase, 2002)


Consideremos como primer problema, hallar la clave ms grande en un arreglo de
claves; existen varios mtodos secuenciales para hacer esto, en concreto el
mtodo de torneo, que tiene ese nombre porque efecta comparaciones como en
los torneos; es decir, las claves se aparean y se comparan en rondas. En cada
ronda despus de la primera, los ganadores de la ronda anterior se aparean y
comparan, lo que lleva a un diagrama de rbol binario, donde la raz del rbol
binario contiene la clave ms grande. Se efectan 1 comparaciones para
hallar el mximo, denotado por .

As pues, la clave ms grande se encuentra en [lg ] rondas. Pero aqu algo


importante: todas las comparaciones de una ronda se pueden efectuar
simultneamente, por lo que el mtodo de torneo ofrece naturalmente un algoritmo
paralelo. Esto tambin implica que, dado que

el nmero de claves que se

consideran en cada ronda se reduce a la mitad, tambin el nmero de


procesadores requerido en cada ronda se reduce a la mitad, aunque para efectos
prcticos, se especificar a todos los procesadores las mismas instrucciones en
cada paso de tiempo.
Torneo paralelo para hallar el mximo (Baase, 2002)
Entradas: Las claves 0 , 1 , , [ 1] que inicialmente estn en las celdas
de memoria 0 , 1 , , [ 1]; y el entero .

Salidas: La clave ms grande estar en [0].


Cada procesador ejecuta el algoritmo utilizando su propio nmero de que
especifica una distancia nica a partir del principio de . se usa la variable incr
para calcular el nmero superior de la celda a leer. Dado que podra no ser una
potencia de 2, el algoritmo inicializa las celdas n , , [2 1]; con
(algn valor pequeo) porque algunas de ellas participarn en el torneo.
torneoMaxParalelo(M, n)
int incr;
1.-Escribir (valor muy pequeo) en M[n+pid]
2.-while (incr < n)
Clave grande, temp0, temp1;
Leer M[pid] y colocarlo en temp0;
3.-

Leer M[pid+incr] y colocarlo en temp1;


grande = max (temp0, temp1);
Escribir grande en M[pid];
incr = 2 * incr;

El anlisis del algoritmo es sencillo, la inicializacin previa al ciclo while requiere


un paso de lectura/escritura (paso 1) y cada iteracin del ciclo while comprende
dos pasos de lectura/escritura (pasos 2 y 3); el total es 2[lg ] + 1 pasos. As pues
el algoritmo utiliza procesadores y tiempo [log ].
Aqu una ilustracin del comportamiento de los procesadores al ejecutar el
algoritmo:

Mximo de claves con escritura comn (Baase, 2002)


Si usamos el modelo PRAM de Escritura Comn (o uno ms categrico) podremos
obtener un algoritmo para hallar el mximo de n nmeros en menos tiempo que
con el mtodo de abanico de entrada binario. Este algoritmo emplea !
procesadores para simplificar la indizacin, aunque slo efectan trabajo

! !!!
!

procesadores.
La estrategia consiste en comparar todos los pares de claves en paralelo y luego
comunicar los resultados a travs de la memoria compartida. Utilizaremos un
arreglo llamado perdedor. Recordemos que ste puede ocupar las celdas de
memoria n , , [2 1] ;, o algn otro segmento de la memoria global
escogido por el compilador. En un principio, todos los elementos de este arreglo
son cero (o se pueden inicializar con cero en un paso). Si ! pierde en una
comparacin, se asignar el valor 1 a perdedor[i].
Entradas: Las claves 0 , 1 , , [ 1] inicialmente en las celdas de memoria
0 , 1 , , 1 ; y el entero > 2.
Salidas: La clave ms grande estar en [0].
Los procesadores se denominan !,! para 0 1 . Cada procesador
calcular y a partir de su ndice con las frmulas = [

!"#

pero si , entonces el procesador no efecta trabajo alguno.

] y =

maxRapido(M, n)
1.- Calcular i y j a partir de pid;
if (i j) return;
P!,! lee ! (de M[i]);
2.- P!,! lee ! (de M[j]);
P!,! compara ! y ! ;
Sea

el

ndice

de

la

clave

ms

pequea

(i

si

hay

empate).
P!,! escribe 1 en perdedor[k].
// En este punto, todas las claves salvo la ms grande
// han perdido en una comparacin.
3.- P!,!!! lee perdedor[i] (y P!,!!! lee perdedor[n-1]).
El procesador que ley un 0 escribe ! en M[0]. ( P!,!!!
escribira x!!! .)
// Este procesador ya tiene en su memoria local el x que
// necesita, por los pasos 1 y 2.

Manejo de conflictos de escritura (Baase, 2002)


Los modelos de PRAM varan segn la forma en que manejan los conflictos de
escritura. El modelo de PRAM de Lectura Concurrente y Escritura Exclusiva
(CREW, por sus siglas en ingls) exige que slo un procesador escriba en una
celda dada en cualquier paso dado; no se permiten algoritmos que pidan a ms de
un procesador escribir en una celda dada al mismo tiempo.
Hay varias formas de relajar la restriccin CREW, las cuales reciben
colectivamente el nombre de modelos CRCW (Lectura Concurrente, Escritura
Concurrente).
1.- En el modelo de Escritura Comn se permite a varios procesadores escribir en
la misma celda al mismo tiempo si y slo si todos escriben el mismo valor.
2.- En el modelo de Escritura Arbitraria, si varios procesadores tratan de escribir
en la misma celda de memoria al mismo tiempo, slo lo logra uno de ellos,
escogido arbitrariamente. Un algoritmo para este modelo debe funcionar
correctamente sea cual sea el procesador que salga victorioso del conflicto de
escritura.
3.- En el modelo de Escritura Prioritaria, si varios procesadores intentan escribir en
la misma celda de memoria al mismo tiempo, el que lo lograr ser el que tenga el
ndice ms pequeo.
Estos modelos CRCW son sucesivamente ms categricos, y todos son ms
categricos que CREW: un algoritmo que sea vlido y correcto para un modelo
ubicado antes en la lista, ser vlido y correcto para todos los modelos
posteriores, pero no viceversa.

Lmites de la computacin paralela


Un programa paralelo es una serie de instancias de tareas de sincronizacin
seguidas de clculos reales (programa) distribuidos entre los procesadores.
Debido al overhead el tiempo total de ejecucin de las tareas distribuidas en los
procesadores es mayor que si se hubiese ejecutado en un nico procesador.
! =
=
! =
=
=
Entonces, el tiempo de ejecucin de manera secuencial de tareas en un lapso
ser:
! =
As mismo, en un ambiente de ejecucin paralelo cada tarea requiere de + !
unidades de tiempo. Si hay tareas en procesadores, entonces el nmero de
pasos paralelos ser

!
!

por lo que, el tiempo de ejecucin paralelo, ser:

!,! = ! + ( ) ( + ! )

Tambin la velocidad del sistema ser:

!,! =

1
=
=
!,! + () ( + ) ( ! ) + ( 1 )()(1 + ! )
!
!

( )

La eficiencia del sistema ser:

!,!

( ! ) + ()( )(1 + ! )
!" ! + ( ) ( + ! )
( )
=
=
=

De aqu se puede concluir que:


La primera columna muestra que la velocidad resultante de incrementar el nmero
de procesadores est limitado por el nmero de tareas , mientras que la
eficiencia tiende a 0.
La segunda columna muestra que una velocidad igual a la cantidad de
procesadores puede ser lograda realizando un gran nmero de tareas, siempre y
cuando el Overhead sea nfimo respecto a la granularidad de tareas.
Ley de Amdahl
Esta ley indica que:
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.
Cuya frmula original es:
= ! ( 1 ! +

!
)
!

Con ! el tiempo de ejecucin mejorado y ! el tiempo de ejecucin antiguo.


Tomando en cuenta la definicin de incremento de velocidad donde =
puede reescribir la ecuacin as:
=

1 ! + !
!

!!
!

se

Por lo dicho hasta ahora, la ley de Amdahl es bastante pesimista. Es necesario


sealar, sin embargo, que esta ley no tiene en cuenta algunos beneficios de los
sistemas paralelos. Por ejemplo, un sistema con varios procesadores que tengan
memorias cach propias puede hacer que cada procesador almacene en su cach
los datos que est utilizando; sin embargo, un procesador solo, con una memoria
cach del mismo tamao, no podr hacerlo con todos los datos.
Esto puede causar que, en estas condiciones, la velocidad de un sistema paralelo
con procesadores pueda aumentar por encima de , lo que aumentara la cota
superior propuesta por la ley de Amdahl. Una realidad que s transmite la ley de
Amdahl es que el rendimiento no aumenta por incrementarse indefinidamente el
nmero de procesadores.

Ley de Gustafson
La ley de Gustafson (1988) viene a compensar el pesimismo dejado por la ley de
Amdahl. sta se refera a problemas con volumen de clculo fijo en que se
aumenta el nmero de procesadores. Sin embargo, en la prctica, el volumen del
problema no es independiente del nmero de procesadores, ya que con mayor
nmero de procesadores se pueden abordar problemas de mayores dimensiones.
Por ello, la ley de Gustafson se refiere al crecimiento del volumen de clculo
necesario para resolver un problema. En la mayora de los casos, cuando el
volumen del problema crece, lo hace slo en su parte paralela, no en su parte
secuencial. Ello hace que el cuello de botella secuencial tienda a cero cuando el
volumen del problema aumenta.
La razn de que cierto tipo de problemas adquieran gran volumen de clculo es la
disminucin del tamao de la malla de clculo o tambin el aumento la extensin
espacio-temporal del problema. Esto hace que el nmero de puntos aumente de
forma cbica respecto al grado de disminucin en la malla, si el problema es
tridimensional.
Hay muchos problemas en que, adems de las tres dimensiones del espacio,
tambin interviene el tiempo, por lo que el aumento del volumen de clculo es
todava mayor. Evidentemente, esto afecta, en general, a la parte paralelizable del
problema y no a su parte secuencial, o al menos no en la misma medida. Si
suponemos que el nmero de procesadores crece indefinidamente de la misma
forma que las dimensiones del problema tendremos que:

=0
!! + ( )

lim = lim

!!

Siendo y , respectivamente, las partes secuencial y paralela del problema antes


de ser aumentado en relacin al nmero del procesadores.
Con estas premisas, se puede ahora calcular ahora la ganancia de velocidad para
esta nueva situacin (la parte paralela del problema ha crecido en la misma
proporcin que el nmero de procesadores). Para calcular la ganancia de
velocidad supondremos que el tiempo que se tardara en ejecutar el programa (ya
incrementado) en un monoprocesador es:
1 = + ( )
Mientras que en un sistema paralelo sera:
=+

Por lo tanto, la ganancia en velocidad vendra dada por:

(1) + ( )
=
()
+

Y teniendo en cuenta la fraccin de tiempo no paralelizable , que viene dada por


!

= !!! se puede escribir como:


=+ 1 = 1

Podra pensarse que hay una aparente contradiccin entre las leyes de Amdahl y
Gustafson. Esto no es as debido a que las premisas de ambas leyes son distintas:
la ley de Amdahl se refiere a procesos con un volumen de calculo fijo mientras que
la ley de Gustafson se refiere a problemas cuyo volumen de clculo puede
aumentar segn el nmero de procesadores (esto se suele denominar escalado
del problema). Afortunadamente, esta ltima situacin es ms cercana a la
realidad.
Comparativas
El software utilizado para comparar el rendimiento en single-core y en multi-core
ha sido Geekbench de Primatelabs que es ampliamente utilizado en el
benchmarking; para la comparativa, se prueba uno de los productos ms
publicitados del segmento de alto nivel: la Mac Pro, en sus diferentes
configuraciones de procesador y de memoria para el modelo de finales del ao
2013.

La primer serie de prueba arroja resultados que son sorprendentes a la primer


impresin, pero que tras todo este marco terico, cobran mayor sentido, la
potencia en single-core es ms significativa en un procesador de 6 ncleos que en
uno de 12 ncleos, no obstante la gran ventaja en memoria RAM y en GPU de la
opcin de 12 ncleos.
La primer serie de pruebas se hizo a una Mac Pro (Late 2013) con 6 procesadores
Intel Xeon E5-1650 v2 @ 3.50 GHz con HT activado, es decir 12 hilos de
procesamiento; estos son los resultados:
Mac Pro (Late 2013)
Single-Core
Score
4156

Multi-Core
Score
24900

Result Information
Upload Date
Views

June 05 2014
12:00 AM
26

System Information
Operating
System
Model
Processor
Processor ID
L1 Instruction
Cache
L1 Data Cache
L2 Cache
L3 Cache
Motherboard

Mac Pro (Late 2013)


Mac OS X 10.10.0
Mac Pro (Late 2013)
Intel Xeon E5-1650 v2 @ 3.50
GHz
1 processor, 6 cores, 12 threads
GenuineIntel Family 6 Model 62
Stepping 4
32 KB x 6
32 KB x 6
256 KB x 6
12288 KB
Apple Inc. Mac-

BIOS
Memory

F60DEB81FF30ACF6 MacPro6,1
Apple Inc.
MP61.88Z.0116.B04.1312061508
16384 MB 0 MHz RAM
Integer Performance

Single-core
Multi-core
AES
Single-core
AES
Multi-core
Twofish
Single-core
Twofish
Multi-core
SHA1
Single-core
SHA1
Multi-core
SHA2
Single-core
SHA2
Multi-core
BZip2 Compress
Single-core
BZip2 Compress
Multi-core
BZip2 Decompress
Single-core
BZip2 Decompress
Multi-core
JPEG Compress
Single-core
JPEG Compress
Multi-core
JPEG Decompress
Single-core
JPEG Decompress
Multi-core
PNG Compress
Single-core
PNG Compress

4310
27737
3752
3.21 GB/sec
10036
8.59 GB/sec
4162
233.6 MB/sec
34781
1.91 GB/sec
4700
510.2 MB/sec
29710
3.15 GB/sec
5157
223.2 MB/sec
30075
1.27 GB/sec
3598
14.6 MB/sec
28454
115.7 MB/sec
3719
20.2 MB/sec
30378
164.6 MB/sec
4396
61.3 Mpixels/sec
35025
487.9 Mpixels/sec
5854
144.7 Mpixels/sec
39002
964.1 Mpixels/sec
4043
3.23 Mpixels/sec
35168

Multi-core
PNG Decompress
Single-core
PNG Decompress
Multi-core
Sobel
Single-core
Sobel
Multi-core
Lua
Single-core
Lua
Multi-core
Dijkstra
Single-core
Dijkstra
Multi-core

28.1 Mpixels/sec
4479
51.6 Mpixels/sec
35382
407.9 Mpixels/sec
4767
173.5 Mpixels/sec
34227
1.25 Gpixels/sec
3915
3.52 MB/sec
28476
25.6 MB/sec
4028
14.5 Mpairs/sec
12879
46.2 Mpairs/sec
Floating Point Performance

Single-core
Multi-core
BlackScholes
Single-core
BlackScholes
Multi-core
Mandelbrot
Single-core
Mandelbrot
Multi-core
Sharpen Filter
Single-core
Sharpen Filter
Multi-core
Blur Filter
Single-core
Blur Filter
Multi-core
SGEMM
Single-core
SGEMM
Multi-core
DGEMM
Single-core
DGEMM

4488
32753
5224
23.3 Mnodes/sec
41686
185.5 Mnodes/sec
4001
4.10 Gflops
40170
41.2 Gflops
3694
2.74 Gflops
27998
20.8 Gflops
2936
2.80 Gflops
25844
24.6 Gflops
5036
14.1 Gflops
32318
90.5 Gflops
4960
7.29 Gflops
32586

Multi-core
SFFT
Single-core
SFFT
Multi-core
DFFT
Single-core
DFFT
Multi-core
N-Body
Single-core
N-Body
Multi-core
Ray Trace
Single-core
Ray Trace
Multi-core

47.9 Gflops
4057
4.28 Gflops
25222
26.6 Gflops
4367
3.98 Gflops
28951
26.4 Gflops
6390
2.37 Mpairs/sec
41223
15.3 Mpairs/sec
5173
6.10 Mpixels/sec
36990
43.6 Mpixels/sec
Memory Performance

Single-core
Multi-core
Stream Copy
Single-core
Stream Copy
Multi-core
Stream Scale
Single-core
Stream Scale
Multi-core
Stream Add
Single-core
Stream Add
Multi-core
Stream Triad
Single-core
Stream Triad
Multi-core

3187
3523
3973
15.9 GB/sec
4299
17.2 GB/sec
3015
12.0 GB/sec
3194
12.8 GB/sec
2943
13.3 GB/sec
3283
14.8 GB/sec
2928
12.9 GB/sec
3420
15.0 GB/sec

La segunda serie de pruebas es para una Mac Pro (Late 2013) con 8
procesadores Intel Xeon E5-1680 v2 @ 3.00 GHz y 16 hilos de procesamiento:
Mac Pro (Late 2013)
SingleCore
Score
3635

Multi-Core Score
26097

Result Information
Upload Date
Views

January 28 2014
12:00 AM
15

System Information
Operating
System
Model
Processor
Processor ID
L1 Instruction
Cache
L1 Data Cache
L2 Cache
L3 Cache
Motherboard
BIOS
Memory

Mac Pro (Late 2013)


Mac OS X 10.9.1 (Build
13B4116)
Mac Pro (Late 2013)
Intel Xeon E5-1680 v2 @ 3.00
GHz
1 processor, 8 cores, 16 threads
GenuineIntel Family 6 Model 62
Stepping 4
32 KB x 8
32 KB x 8
256 KB x 8
25600 KB
Apple Inc. MacF60DEB81FF30ACF6 MacPro6,1
Apple Inc.
MP61.88Z.0116.B04.1312061508
32768 MB 1867 MHz DDR3

Integer Performance
Single-core
Multi-core
AES
Single-core
AES
Multi-core
Twofish
Single-core
Twofish
Multi-core
SHA1
Single-core
SHA1
Multi-core
SHA2
Single-core
SHA2
Multi-core
BZip2 Compress
Single-core
BZip2 Compress
Multi-core
BZip2 Decompress
Single-core
BZip2 Decompress
Multi-core
JPEG Compress
Single-core
JPEG Compress
Multi-core
JPEG Decompress
Single-core
JPEG Decompress
Multi-core

3654
30200
3295

PNG Compress
Single-core

3351
2.68 Mpixels/sec

PNG Compress
Multi-core

34511
27.6 Mpixels/sec

2.82 GB/sec
20555
17.6 GB/sec
3461
194.3 MB/sec
34187
1.87 GB/sec
3907
424.1 MB/sec
28807
3.05 GB/sec
4285
185.4 MB/sec
29311
1.24 GB/sec
2983
12.1 MB/sec
28022
113.9 MB/sec
3101
16.8 MB/sec
29974
162.5 MB/sec
3673
51.2 Mpixels/sec
34620
482.3 Mpixels/sec
5002
123.7 Mpixels/sec
39414
974.3 Mpixels/sec

PNG Decompress
Single-core

3754
43.3 Mpixels/sec

PNG Decompress
Multi-core

35470
408.9 Mpixels/sec

Sobel
Single-core

4169
151.7 Mpixels/sec

Sobel
Multi-core

33753
1.23 Gpixels/sec

Lua
Single-core

3181

Lua
Multi-core

27805

Dijkstra
Single-core

3835
13.8 Mpairs/sec

Dijkstra
Multi-core

22252
79.9 Mpairs/sec

2.86 MB/sec
25.0 MB/sec

Floating Point Performance


Single-core
Multi-core
BlackScholes
Single-core
BlackScholes
Multi-core
Mandelbrot
Single-core
Mandelbrot
Multi-core
Sharpen Filter
Single-core
Sharpen Filter
Multi-core
Blur Filter
Single-core
Blur Filter
Multi-core
SGEMM
Single-core
SGEMM
Multi-core
DGEMM

3801
32169
4460
19.8 Mnodes/sec
40368
179.6 Mnodes/sec
3271
3.35 Gflops
39421
40.4 Gflops
3120
2.31 Gflops
27728
20.6 Gflops
2481
2.36 Gflops
25462
24.3 Gflops
4607
12.9 Gflops
31765
89.0 Gflops
4194

Single-core
DGEMM
Multi-core
SFFT
Single-core
SFFT
Multi-core

6.16 Gflops
32098
47.2 Gflops
3404
3.59 Gflops
24751
26.1 Gflops

DFFT
Single-core

3647

DFFT
Multi-core

28751

N-Body
Single-core

5340

N-Body
Multi-core

40014

Ray Trace
Single-core

4361

Ray Trace
Multi-core

36390

3.32 Gflops
26.2 Gflops
1.98 Mpairs/sec
14.9 Mpairs/sec
5.14 Mpixels/sec
42.9 Mpixels/sec

Memory Performance
Single-core
3265
Multi-core
5749
Stream Copy
4126
Single-core
16.5 GB/sec
Stream Copy
6949
Multi-core
27.7 GB/sec
Stream Scale
3336
Single-core
13.3 GB/sec
Stream Scale
5474
Multi-core
21.9 GB/sec
Stream Add
2790
Single-core
12.6 GB/sec
Stream Add
5279
Multi-core
23.9 GB/sec
Stream Triad
2960
Single-core
13.0 GB/sec

Stream Triad
Multi-core

5440
23.9 GB/sec

Finalmente, el Mac Pro con 12 procesadores Intel Xeon E5-2697 v2 @ 2.97 GHz y
24 hilos de procesamiento:
Mac Pro (Late 2013)
Single-Core
Score
3533

Multi-Core
Score
35799

Result Information
User
Upload Date
Views

pcb355
January 29 2014
12:00 AM
295

System Information
Operating
System
Model
Processor
Processor ID
L1 Instruction
Cache
L1 Data Cache
L2 Cache
L3 Cache
Motherboard
BIOS

Mac Pro (Late 2013)


Mac OS X 10.9.2 (Build
13C44)
Mac Pro (Late 2013)
Intel Xeon E5-2697 v2 @ 2.97
GHz
1 processor, 12 cores, 24
threads
GenuineIntel Family 6 Model
62 Stepping 4
32 KB x 12
32 KB x 12
256 KB x 12
30720 KB
Apple Inc. MacF60DEB81FF30ACF6 Rev
1.xx
Apple Inc.
MP61.88Z.0116.B04.1312061
508

Memory

32768 MB 1333 MHz DDR3


Integer Performance

Single-core
Multi-core
AES
Single-core
AES
Multi-core
Twofish
Single-core
Twofish
Multi-core
SHA1
Single-core
SHA1
Multi-core
SHA2
Single-core
SHA2
Multi-core
BZip2 Compress
Single-core
BZip2 Compress
Multi-core
BZip2 Decompress
Single-core
BZip2 Decompress
Multi-core
JPEG Compress
Single-core
JPEG Compress
Multi-core
JPEG Decompress
Single-core
JPEG Decompress
Multi-core
PNG Compress
Single-core
PNG Compress
Multi-core
PNG Decompress
Single-core
PNG Decompress

3599
40712
3194
2.73 GB/sec
18677
16.0 GB/sec
3443
193.2 MB/sec
49704
2.72 GB/sec
3868
419.9 MB/sec
42137
4.47 GB/sec
4253
184.0 MB/sec
42248
1.79 GB/sec
2934
11.9 MB/sec
40129
163.1 MB/sec
3069
16.6 MB/sec
42822
232.1 MB/sec
3649
50.8 Mpixels/sec
49765
693.3 Mpixels/sec
4968
122.8 Mpixels/sec
53461
1.32 Gpixels/sec
3337
2.66 Mpixels/sec
49386
39.4 Mpixels/sec
3724
42.9 Mpixels/sec
51166

Multi-core
Sobel
Single-core
Sobel
Multi-core
Lua
Single-core
Lua
Multi-core
Dijkstra
Single-core
Dijkstra
Multi-core

589.9 Mpixels/sec
3953
143.9 Mpixels/sec
46495
1.69 Gpixels/sec
3163
2.84 MB/sec
38740
34.8 MB/sec
3713
13.3 Mpairs/sec
24554
88.1 Mpairs/sec
Floating Point Performance

Single-core
Multi-core
BlackScholes
Single-core
BlackScholes
Multi-core
Mandelbrot
Single-core
Mandelbrot
Multi-core
Sharpen Filter
Single-core
Sharpen Filter
Multi-core
Blur Filter
Single-core
Blur Filter
Multi-core
SGEMM
Single-core
SGEMM
Multi-core
DGEMM
Single-core
DGEMM
Multi-core
SFFT
Single-core
SFFT

3767
46193
4498
20.0 Mnodes/sec
59035
262.7 Mnodes/sec
3301
3.38 Gflops
57106
58.5 Gflops
3105
2.30 Gflops
39029
28.9 Gflops
2455
2.34 Gflops
36057
34.4 Gflops
4554
12.8 Gflops
44058
123.4 Gflops
4200
6.17 Gflops
46410
68.2 Gflops
3343
3.53 Gflops
35931

Multi-core
DFFT
Single-core
DFFT
Multi-core
N-Body
Single-core
N-Body
Multi-core
Ray Trace
Single-core
Ray Trace
Multi-core

37.9 Gflops
3555
3.24 Gflops
41520
37.8 Gflops
5274
1.96 Mpairs/sec
58276
21.6 Mpairs/sec
4247
5.01 Mpixels/sec
52458
61.9 Mpixels/sec
Memory Performance

Single-core
Multi-core
Stream Copy
Single-core
Stream Copy
Multi-core
Stream Scale
Single-core
Stream Scale
Multi-core
Stream Add
Single-core
Stream Add
Multi-core
Stream Triad
Single-core
Stream Triad
Multi-core

2936
5188
3486
13.9 GB/sec
6230
24.9 GB/sec
2974
11.9 GB/sec
5052
20.2 GB/sec
2648
12.0 GB/sec
4710
21.3 GB/sec
2708
11.9 GB/sec
4887
21.5 GB/sec

El rendimiento single-core y multi-core pues, queda as:


Equipo

Single-core

Multi-core

Mac Pro (Late 2013)

4156

24900

3635

26097

3533

35799

6 procesadores
Mac Pro (Late 2013)
8 procesadores
Mac Pro (Late 2013)
12 procesadores

Rendimiento Single-core
Mac Pro (Late 2013) 12
procesadores

Mac Pro (Late 2013) 8


procesadores

Single-core

Mac Pro (Late 2013) 6


procesadores
3200

3400

3600

3800

4000

4200

4400

Rendimiento Multi-core
Mac Pro (Late 2013) 12
procesadores

Mac Pro (Late 2013) 8 procesadores

Multi-core

Mac Pro (Late 2013) 6 procesadores

10000

20000

30000

40000

Conclusiones
sta serie de pruebas demuestra que aquel usuario que realice tareas
secuenciales primordialmente, no se vera beneficiado al adquirir la configuracin
ms cara y con ms procesadores, por ms que el marketing de Apple quiera
hacer creer lo contrario; adems las mayores velocidades de reloj se obtienen con
menos procesadores y esto es obvio, dada la complejidad de los chips con ms
procesadores y la dificultad para disipar el calor.
Ahora el rendimiento en multi-core, que como ya vimos, es realmente
aprovechado para tener varios procesos en paralelo, o bien con programas
realizados con algoritmos paralelos, es decir, depende de un enfoque que requiera
paralelizacin para sacarle provecho; otra conclusin es que el rendimiento multicore sube bastante ms que la bajada de rendimiento en el sigle-core, lo que deja
una muy buena ventana de oportunidad para desarrollar cada vez ms y mejores
algoritmos paralelos y aprovechar esta subida de rendimiento de los equipos de
computacin actuales.

Bibliografa
Sara B., Allen Van G. (2002) Algoritmos Computaciones. Introduccin al anlisis y
al diseo. 3ra Ed. Mxico: Pearson Educacin. pp. 229-231, 611-630
Jeffrey J. (2009) Analysis of Algorithms: An Active Learning Approach. Sudbury,
Massachusetts: Jones and Bartlett Publishers. pp. 177-183
Sedgewick R. (1989). Algorithms. Princeton University: Addison-Welsey. pp. 569575
Ibarra F. (1995). Introduccin a las Arquitecturas Paralelas. Alicante Universidad:
Grficas CELARAYN. pp. 17-22
Lpez G. (2009) Anlisis y diseo de algoritmos. 1ra Ed. Buenos Aires: Alfaomega
Grupo Editor Argentino pp. 4-5
Ley de Amdahl, Wikipedia, Recuperado el 29 de septiembre de 2014, de:
http://es.wikipedia.org/wiki/Ley_de_Amdahl
Geekbench browser, Recuperado el 18 de octubre de 2014, de:
http://browser.primatelabs.com/geekbench3/375788
http://browser.primatelabs.com/geekbench3/374968
http://browser.primatelabs.com/geekbench3/605014

Potrebbero piacerti anche