SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
Capítulo 1. INTRODUCCIÓN AL PROCESAMIENTO PARALELO.
1. Considerar la ejecución de un código objeto con 200.000 instrucciones en un procesador a 40 MHz. Las
mezcla de instrucciones y el número de ciclos (CPI) necesarios para cada tipo de instrucción se dan en la
tabla, basados en los resultados de un programa traza.
Tipo de Instrucciones CPI Mezcla de Instrucciones
Aritmñético-Lógicas 1 60%
Load/Store 2 18%
Salto 4 12%
Referencia de memoria con
fallo de caché
8 10%
Considerar la ejecución paralela del programa en un sistema de 4 procesadores con memoria
compartida. El programa se puede dividir en cuatro partes iguales (50.000 cada una) para una
ejecución balanceada por los cuatro procesadores. Debido a la necesidad de sincronización entre las
cuatro partes paralelas, se tienen que añadir 5000 instrucciones extras a cada parte. Asumir la misma
mezcla de instrucciones para cada parte del programa dividido. El CPI para las instrucciones de
referencia a memoria (con fallo de cache) se ha incrementado de 8 a 12 ciclos debido a las contenciones.
El CPI para los restantes tipos de instrucciones no cambia.
a) Calcular el CPI medio cuando el programa se ejecuta en el sistema de 4 procesadores.
Para calcular el CPI podemos hacerlo de dos formas:
1. Forma 1:
Podemos saber los ciclos totales del programa calculándolo así:
1.
2.
3.
4.
Por tanto:
Pero este sería el CPI si la ejecución fuera con un único procesador, y se nos pregunta el CPI para una
ejecución paralela con 4 procesadores, cuando ejecutamos el programa en paralelo se añaden 5.000 a
cada parte (ya que el programa se divide en 4 partes cada una se ejecutará en un procesador)
instrucciones debidos al overhead creado por la sincronización, por tanto tendremos un total de
Además el CPI de las instrucciones de fallo a memoria ha aumentado de 8 a 12
Para saber el CPI hacemos el mismo proceso que antes:
1.
2.
3.
4.
Por tanto:
Ya tenemos el CPI medio, para saber el CPI de un solo procesador:
2. Forma 2:
También podemos calcular el CPI de una forma más rápida y sencilla:
b) Calcular la correspondiente velocidad en MIPS cuando el programa se ejecuta en el sistema de 4
procesadores.
Para calcular la velocidad la podemos calcular como la frecuencia del procesador divido entre el CPI
Entonces hay una velocidad 15’15MIPS por procesador, como tenemos 4 procesadores entonces habrá una
velocidad total de:
c) Calcular el speedup (o ganancia de velocidad) del sistema de 4 procesadores sobre el sistema
uniprocesador.
( ) ( )
Para el tiempo paralelo como terminan los procesadores a la vez el tiempo que termina en paralelo es el
tiempo que termina un procesador
d) Calcular la eficiencia del sistema de 4 procesadores comparando el speedup obtenido en el apartado
(c) con el caso ideal.
N = 4
En un caso ideal, la eficiencia obtenida sería máxima, del 100%, es decir, G = Nº procesadores
Podemos concluir que la eficiencia real quedará por debajo de la eficiencia ideal, es comprensible
que tengamos una eficiencia menor porque al introducir el sistema de 4 procesadores, hay un
overhead debido a la sincronización y el CPI también aumenta.
2. El siguiente segmento de código, formado por seis instrucciones, necesita ejecutarse 64
veces para la evaluación de la expresión aritmética vectorial: D(I) = A(I) + B(I)·C(I):
Load R1, B(I) /R1<-- Memoria(+I)
Load R2, C(I) /R2 Memoria(+I)
Multiply R1,R2 /R1<-- (R1) x (R2)
Load R3, A(I) /R3<-- Memoria(+I)
Add R3,R1 /R3<-- (R3)+(R1)
Store D(I),R3 /Memoria(+I)<-- (R3)
donde R1, R2, y R3 son registros de la CPU, (R1) es el contenido de R1, y son las direcciones
de comienzo de memoria de los arrays B(I), C(I), A(I) y D(I) respectivamente. Asume cuatro
ciclos de reloj para cada Load o Store, dos ciclos para el Add, y ocho ciclos para la
multiplicación en un uniprocesador o en un sólo PE en una máquina SIMD.
a) Calcula el número total de ciclos de CPU necesarios para ejecutar repetidamente
durante 64 veces el código anterior en un computador SISD, ignorando todos los otros
retardos de tiempo.
Tipo CPI NI Ciclo/inst
Load/store 4 4 16
Add 2 1 2
Multiply 8 1 8
En cada iteración se necesitan estos ciclos:
Tipo CPI
Load 4
Load 4
Multiply 8
Load 4
Add 2
Store 4
26
Por tanto son 26 ciclos en una sola iteración, como se dan 64 iteraciones entonces son:
b) Considerar el uso de un computador SIMD con 64 PEs para ejecutar el código anterior
en seis instrucciones vectoriales sincronizadas sobre vectores de datos de 64
componentes, dirigidos por la misma velocidad del reloj. Calcula el tiempo total de
ejecución en la máquina SIMD, ignorando el resto de retardos.
c) ¿Cuál es el speedup del computador SIMD sobre el computador SISD?.
3. Sea α el porcentaje de código de un programa que se puede ejecutar simultáneamente por n
procesadores. Asume que el código restante se debe ejecutar secuencialmente por un sólo
procesador. Cada procesador tiene una velocidad de ejecución de x MIPS, y se asume que
todos los procesadores tienen la misma capacidad.
a) Obtener una expresión para la velocidad efectiva en MIPS cuando se usa el sistema para
la ejecución exclusiva de este programa, en términos de los parámetros n, α y x.
α=parte paralelizable.
1-α=parte secuencial.
n=nº de procesadores.
Además, sabemos que:
(cuando queremos calcular la ganancia, podemos usar tanto el tiempo , como los MIPS, es
decir, si usamos el tiempo pues el tiempo secuencial se pone arriba y el tiempo paralelo se
pone abajo, ya que el tiempo secuencial será mucho mayor ya que se tarda mucho más cuando
se ejecuta en un procesador que cuando se ejecuta en paralelo con muchos procesadores, por
tanto imagínate que en secuencial tarda 100 segundos , y en paralelo se tarda 10 segundos,
entonces la ganancia calculándola con el tiempo será 100/10= 10 , una ganancia
Con la fórmula anterior podemos igualarla con la fórmula de la ganancia de la ley de Amdahl,
como 𝜶 es la parte paralelizable:
𝜶 ( 𝜶) 𝜶 ( 𝜶)
𝜶
( 𝜶)
𝜶
𝜶 𝜶 𝜶 𝜶 𝜶
𝜶 𝜶 ( 𝜶) 𝜶
Por tanto tenemos dos fórmulas de la ganancia, e igualando las 2 fórmulas podemos despejar
el valor de:
{
( 𝜶) 𝜶
Entonces conseguimos la expresión
( 𝜶) 𝜶
b) Si n=16 y x=4 MIPS, determinar el valor de α que nos lleva a un rendimiento del sistema
de 40MIPS.
Un rendimiento de 40MIPS es el rendimiento de los MIPS en paralelo, el rendimiento de los
MIPS en secuencial sería la velocidad de un procesador es decir 4MIPS
( 𝜶) 𝜶
( 𝜶) 𝜶 ( 𝜶) 𝜶 𝜶 𝜶 𝜶
𝜶
( 𝜶) 𝜶 𝜶 𝜶
𝜶
Es decir se necesita que un 96% del código sea paralelizable para conseguir una velocidad de
40MIPS en paralelo
4. El siguiente programa Fortran se ejecuta en un uniprocesador, y la versión paralela se va a
ejecutar en un multiprocesador de memoria compartida.
L1: Do 10 I=1,1024
L2: SUM(I)=0
L3: Do 20 J=1,I
L4: 20 SUM(I)=SUM(I)+I
L5: 10 Continue
Supón que las sentencias L2 y L4 necesitan dos ciclos máquina, incluyendo todas las actividades
de la CPU y acceso a memoria. Ignorar el gasto extra causado por el control software del lazo
(sentencias L1, L3 y L5) y todos las demás penalizaciones del sistema (overhead).
a) ¿Cuál es el tiempo total de ejecución del programa en un uniprocesador?
El bucle externo se repite 1024 veces, por tanto el bucle externo necesita:
El bucle interno se repite:
∑
∑
Entre el bucle interno y el bucle externo suman un total de:
Por tanto podemos calcular los ciclos que tarda el algoritmo en secuencial (por un solo procesador):
El tiempo que tarde (el tiempo de ejecución) dependerá de la frecuencia del procesador que no nos la dio
el ejercicio, entonces dejamos el tiempo dependiente de la frecuencia:
b) Divide las iteraciones del lazo I entre 32 procesadores con la siguiente asignación: El
procesador 1 ejecuta las primeras 32 iteraciones (I=1 a 32), el procesador 2 ejecuta las
siguientes 32 iteraciones (I=33 a 64) y así. ¿Cuál es el tiempo de ejecución y el speedup
comparado con el apartado (a). (Tener en cuenta que la carga de trabajo dada por el lazo J no
está balanceada entre los procesadores)
Aquí no hacemos una división de carga balanceada, ya que el primer procesador tendrá menos
iteraciones y el último procesador tendrá que hacer más iteraciones ya que por ejemplo, en este
caso:
Iteraciones procesador 1:
El procesador dará de la iteración 1 a la iteración 32, por tanto:
{
∑
Iteraciones procesador 32:
El procesador 32 dará las 32 últimas iteraciones, por tanto:
{
∑
∑ ∑ ∑
∑
∑
Ahora podemos resolverlo
∑ ∑ ∑
Por tanto el procesador 32 dará las siguientes iteraciones:
{
∑
Por tanto podemos comprobar que no es una ejecución balanceada ya que
Procesador Nº Iteraciones
Procesador 1 560
Procesador 32 32.304
Debido a esto el algoritmo tardará lo que tarde el último procesador:
Como conocemos el tiempo de ejecución en secuencial (con un solo procesador) y conocemos el tiempo
de ejecución en paralelo entonces podemos calcular la ganancia:
c) Modificar el programa para facilitar una ejecución paralela balanceada de toda la carga de
trabajo en los 32 procesadores. Es decir, igual número de sumas asignadas a cada procesador
con respecto a ambos lazos.
Doall l=1,32
Do 10 I=(l-1)*16+1, l*16
SUM(I)=0
Do 20 J=1,I
20 SUM(I)=SUM(I)+J
10 Continue
Do 30 I=(64-l)*16+1, [(64-l)*16 ]+16
SUM(I)=0
Do 40 J=1,I
40 SUM(I)=SUM(I)+J
30 Continue
Endall
Para ejecutar este algoritmo partimos el programa en 64 trozos, el primer procesador ejecutará las 16
primeras iteraciones (las menos pesadas) y ejecutará también las 16 últimas iteraciones (las más
pesadas), de esta forma iremos balanceando la carga de tal forma que:
Procesador Nº Iteraciones
Procesador 1 Desde i=1 hasta i=16 y Desde i=1009 hasta i=1024
Procesador 2 Desde i=17 hasta i=32 y Desde i=993 hasta i=1008
Y así sucesivamente
d) ¿Cuál es el tiempo de ejecución mínimo resultante de la ejecución paralela balanceada en los 32
procesadores?. ¿Cuál es el nuevo speedup sobre el uniprocesador?.
De esta forma todos los procesadores tendrían que realizar el mismo número de iteraciones, es decir se
reparter igualmente entre los 32 procesadores, como sabemos que en secuencial (un solo procesador)
tiene que hacer 1.051.648 ciclos para terminar el algoritmo entonces con esta nueva forma de balanceo
cada procesador tendría que hacer solamente:
Por tanto el tiempo de ejecución del algoritmo sería lo que tarde uno de los procesadores , ya que
terminarían a la vez:
El speed up que conseguimos es el siguiente:
Por tanto hemos conseguido una eficiencia perfecta.
5. Dados dos esquemas A y B de multiplicación de matrices, ambos tienen el mismo número de
procesadores. Los tiempos de ejecución paralelos y las eficiencias de estos sistemas se muestran
en la tabla. Tened en cuenta que el tiempo secuencial para multiplicar dos matrices es
aproximadamente T1= cN3
y la eficiencia viene definida por
Esquemas Tiempo de ejecución paralelo Tn Eficiencia E
A
√
( )
√
B
√
( )
√
En cada una de las expresiones de tiempo paralelas, el primer término denota el tiempo de cálculo
y el segundo el overhead de comunicación. La diferencia es que B tiene la mitad de overhead que
A pero a expensas de doblar el tiempo de cálculo. ¿Qúe sistema es más escalable asumiendo que
queremos mantener (1) E=1/3 y (2) E=1/4? (La carga para un problema de multiplicación de matrices
NxN es aproximadamente W = N3
).
Decimos que un sistema es escalable cuando hay que aumentar poco la carga para mantener la
eficiencia constante.
Para poder comprobar cuál de las opciones es la más escalable debemos de obtener la expresión
de la carga de cada una de las opciones, y una vez que las tengamos podemos comparar dichas
expresiones, la expresión que tenga que aumentar menos la carga para mantener la eficiencia será
la opción más escalable.
a) ¿Qué sistema es el más escalable si mantenemos una eficiencia de E=1/3?.
En este apartado nos dicen que sistema es el más escalable si queremos tener una eficiencia
constante de ⅓, por tanto nos dan los siguientes datos:
- Eficiencia=1/3
- ( ) √
- ( ) √
- La carga que implica la multiplicación de matrices es aproximadamente W=N3
Los que vamos hacer ahora es igualar las expresiones con el valor de la eficiencia el cual nos lo ha
dado el ejercicio:
{
( )
√
√
√ √
√
√
Una vez que tenemos el valor de N, podemos sustituir este valor en la expresión de la carga:
{
( )
√
( ) (
√
) ( ) √ ( )
( ) ( )
Ya tenemos la expresión de carga para la opción A, ahora tenemos que repetir el proceso para
calcular la expresión de carga de B.
Los que vamos hacer ahora es igualar las expresiones con el valor de la eficiencia el cual nos lo ha
dado el ejercicio:
( )
√ √
√ √
√
√
Una vez que tenemos el valor de N, podemos sustituir este valor en la expresión de la carga:
{
( )
√
( ) (
√
) ( ) √ ( )
( ) ( )
Una vez que tenemos las expresiones de la carga para la opción A y para la opción B, ahora si
podemos compararlas:
( ) (
√
) ( )
( ) (
√
) ( )
Podemos observar que la expresión de la carga es la misma, es decir W(A) = W(B) por tanto
cualquiera de las opciones son igual de escalables si queremos mantener una eficiencia constante
de ⅓.
( ) ( )
b) En el apartado b seguimos el mismo procedimiento, solo que cambia el dato de la eficiencia.
En este apartado nos dicen que sistema es el más escalable si queremos tener una eficiencia
constante de ¼, por tanto nos dan los siguientes datos:
- Eficiencia=1/4
- ( ) √
- ( ) √
- La carga de la multiplicación de matrices se puede calcular mediante la siguiente función:
W=N3
Lo que vamos hacer ahora es igualar las expresiones con el valor de la eficiencia el cual nos lo ha
dado el ejercicio:
( )
√ √
√ √
√
√
Una vez que tenemos el valor de N, podemos sustituir este valor en la expresión de la carga:
{
( )
√
( ) ( ) (
√
) ( ) ( ) ( )
Ya tenemos la expresión de carga para la opción A, ahora tenemos que repetir el proceso para
calcular la expresión de carga de B.
Los que vamos hacer ahora es igualar las expresiones con el valor de la eficiencia el cual nos lo ha
dado el ejercicio:
( )
√ √
√ √
√
√
Una vez que tenemos el valor de N, podemos sustituir este valor en la expresión de la carga:
{
( )
√
( ) ( ) (
√
) ( ) ( ) ( )
Una vez que tenemos las expresiones de la carga para la opción A y para la opción B, ahora si
podemos compararlas:
( ) (
√
) ( )
( ) (
√
) ( )
En este caso vemos que las expresiones que describen la carga son prácticamente iguales pero
difieren en el denominador, vemos que el que aumenta menos la carga es la opción B por tanto en
este caso la opción más escalable es la opción b.
( ) ( )
( ) ( )
6. Considerar un programa con una carga de trabajo de una unidad W=1 y un cuello de botella
secuencial de cero (α = 0): Estimar el speedup de tiempo fijo, S’n para cada una de las siguientes
asunciones:
a) ¿Cuál es la expresión (big-O) del speedup escalado para un overhead T0 = O(n-0,5
)? ¿Podrías
conseguir un speedup lineal?
Para calcular el speed up escalado se utiliza la ley de Gustafson, y sustituimos las incógnitas de la
fórmula con los siguientes datos:
W=1
α=0
To=O(n-0.5
)
( )
( ) ( ) ( )
Por tanto la expresión de la ganancia escalada es:
Ahora nos piden la expresión big-O, esta es la cota superior, para calcular esto tenemos que hacer el limite
cuando n(el número de procesadores) tiende a infinito, para ver qué ocurre según la ley de gustafson
conforme vamos añadiendo procesadores
Conseguimos un speedup lineal (superspeed up)
b) ¿Cuáles son las posibles razones para tener un speedup superlineal en aplicaciones de
computación paralela reales?
Siempre que el overhead sea constante conseguiremos un superspeedup lineal.
Posibles razones para conseguir un speed up superlineal:
1. Aumento de la memoria caché: cuando aumentamos el número de nodos también se aumenta la
memoria caché disposible, ya que cada procesador además de poder procesar tiene una memoria
caché asociada, por tanto se pueden tener más datos en memoria caché y el tiempo de acceso a los
datos disminuirá.
2. Aumento de la memoria RAM: lo mismo que ocurre con la memoria caché, al tener más procesadores
también tendremos más memoria RAM y por tanto podremos tener más datos en memoria principal
que el memoria secundaría y esto hará que el acceso a los datos sea mas rápido.
3. El tipo de algoritmo que se ejecute: hay algoritmo como por ejemplo los algoritmos de backtracking que
permiten podar ramas, cuando un hilo poda una rama evita que otro hilo entre a buscar en esa rama.
c) Repetir el apartado (a) para un overhead T0 = O(1) y comentar los resultados.
W=1
α=0
To=O(n-0.5
)
( )
( )
Por tanto:
Por lo que, como tenemos un overhead constante, entonces tendremos un speed up lineal
d) Repetir el apartado (a) para un overhead T0 = O(logn) e interpretar el resultado. ¿Es posible
conseguir un speedup lineal si el speedup es más que una constante?.
W=1
α=0
To=O(logn)
( )
( ) ( )
Por tanto:
Por lo que, tenemos un crecimiento lineal, aunque tendría un crecimiento levemente menor al caso
anterior. Si el overhead es mayor que n, entonces tendríamos un crecimiento inferior al lineal mientras que
si es menor que n, entonces si podríamos disponer de un crecimiento lineal.
7. Un programa tarda 40 s en ejecutarse en un multiprocesador. Durante un 20% de ese tiempo se
ha ejecutado en 4 procesadores, durante un 60% en tres; y durante el 20% restante, en un
procesador (consideramos que se ha distribuido la carga de trabajo por igual entre los
procesadores que colaboran en la ejecución en cada momento, y despreciamos la sobrecarga).
¿Cuánto tiempo tardaría en ejecutarse el programa en un único procesador? ¿Cuál es la ganancia
en velocidad obtenida con respecto al tiempo de ejecución secuencial? ¿Y la eficiencia?
a) ¿Cuánto tiempo tardaría en ejecutarse el programa en un único procesador?
Separamos cada parte para ver cuánto tarda cada una y cuanto procesadores necesita cada parte:
El 20% se ejecutó en 4 procesadores:
El 60% se ejecutó en 3 procesadores
El 20% que queda se ejecutó en 4 procesadores:
En el caso de que quisiésemos ejecutar el programa en un solo procesador, entonces el tiempo que
tardará sería el siguiente:
b) ¿Cuál es la ganancia en velocidad obtenida con respecto al tiempo de ejecución secuencial?
Para determinar la ganancia dividimos lo que se tarda en secuencial (con un solo procesador) entre
lo que se tarda con varios procesadores (tiempo en paralelo)
c) ¿Y la eficiencia?

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

8086 instruction set with types
8086 instruction set with types8086 instruction set with types
8086 instruction set with types
 
Ensamblador
EnsambladorEnsamblador
Ensamblador
 
Jerarquía de clases, herencia, polimorfismo
Jerarquía de clases, herencia, polimorfismoJerarquía de clases, herencia, polimorfismo
Jerarquía de clases, herencia, polimorfismo
 
Capitulo 2
Capitulo 2Capitulo 2
Capitulo 2
 
1.2. El procesador y sus registros internos
1.2. El procesador y sus registros internos1.2. El procesador y sus registros internos
1.2. El procesador y sus registros internos
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensamblador
 
Architecture OF 8085
Architecture OF 8085Architecture OF 8085
Architecture OF 8085
 
herramientas case
herramientas caseherramientas case
herramientas case
 
Configuración servidores DCHP, DNS y HTTP - Cisco Packet Tracer
Configuración servidores DCHP, DNS y HTTP - Cisco Packet TracerConfiguración servidores DCHP, DNS y HTTP - Cisco Packet Tracer
Configuración servidores DCHP, DNS y HTTP - Cisco Packet Tracer
 
algoritmo de disco
algoritmo de disco algoritmo de disco
algoritmo de disco
 
Chapter 7 - Programming Techniques with Additional Instructions
Chapter 7 - Programming Techniques with Additional InstructionsChapter 7 - Programming Techniques with Additional Instructions
Chapter 7 - Programming Techniques with Additional Instructions
 
Subredes
SubredesSubredes
Subredes
 
Conceptos de hardware sistemas operativos
Conceptos de hardware  sistemas operativosConceptos de hardware  sistemas operativos
Conceptos de hardware sistemas operativos
 
Ejercicio no. 10 gym
Ejercicio no. 10 gymEjercicio no. 10 gym
Ejercicio no. 10 gym
 
Modelo entidad relacion
Modelo entidad relacionModelo entidad relacion
Modelo entidad relacion
 
6 consultas
6 consultas6 consultas
6 consultas
 
Comandos cmd para soporte tecnico
Comandos cmd para soporte tecnicoComandos cmd para soporte tecnico
Comandos cmd para soporte tecnico
 
Ciclos de instrucciones 8085
Ciclos de instrucciones 8085Ciclos de instrucciones 8085
Ciclos de instrucciones 8085
 
macros Lenguaje ensamblador
macros Lenguaje ensambladormacros Lenguaje ensamblador
macros Lenguaje ensamblador
 
Hilos con Posix
Hilos con PosixHilos con Posix
Hilos con Posix
 

Similar a Relacion Ejercicios 1

Similar a Relacion Ejercicios 1 (20)

Ejercicios t1
Ejercicios t1Ejercicios t1
Ejercicios t1
 
Rendimiento del CPU
Rendimiento del CPURendimiento del CPU
Rendimiento del CPU
 
09 rendimiento cpu (1)
09 rendimiento cpu (1)09 rendimiento cpu (1)
09 rendimiento cpu (1)
 
09 rendimiento cpu
09 rendimiento cpu09 rendimiento cpu
09 rendimiento cpu
 
Metrica rendimiento ec4
Metrica rendimiento ec4Metrica rendimiento ec4
Metrica rendimiento ec4
 
Procesamiento segmentado
Procesamiento segmentado   Procesamiento segmentado
Procesamiento segmentado
 
dokumen.tips_arquitectura-de-von-neumann-unidad-de-control-ula-registradores-...
dokumen.tips_arquitectura-de-von-neumann-unidad-de-control-ula-registradores-...dokumen.tips_arquitectura-de-von-neumann-unidad-de-control-ula-registradores-...
dokumen.tips_arquitectura-de-von-neumann-unidad-de-control-ula-registradores-...
 
Procea
ProceaProcea
Procea
 
DesempeñO
DesempeñODesempeñO
DesempeñO
 
Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
 
Ec2
Ec2Ec2
Ec2
 
Formatos de instrucción
Formatos de instrucciónFormatos de instrucción
Formatos de instrucción
 
Eesi prac4
Eesi prac4Eesi prac4
Eesi prac4
 
Subrutinas de retardo
Subrutinas de retardoSubrutinas de retardo
Subrutinas de retardo
 
EL COMPUTADOR
EL COMPUTADOREL COMPUTADOR
EL COMPUTADOR
 
EL COMPUTADOR
EL COMPUTADOREL COMPUTADOR
EL COMPUTADOR
 
generalidades del computador y sistemas de numeracion.pptx
generalidades del computador y sistemas de numeracion.pptxgeneralidades del computador y sistemas de numeracion.pptx
generalidades del computador y sistemas de numeracion.pptx
 
Segundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSegundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corte
 
Comandos centos
Comandos centos Comandos centos
Comandos centos
 
Proyecto1
Proyecto1Proyecto1
Proyecto1
 

Más de Kuma Sanchez

Mapa conceptual tema 1
Mapa conceptual tema 1Mapa conceptual tema 1
Mapa conceptual tema 1Kuma Sanchez
 
Tarea a realizar por todo el grupo
Tarea a realizar por todo el grupoTarea a realizar por todo el grupo
Tarea a realizar por todo el grupoKuma Sanchez
 
Análisis de supercomputadores
Análisis de supercomputadoresAnálisis de supercomputadores
Análisis de supercomputadoresKuma Sanchez
 
Tema 1 multiprocesadores
Tema 1 multiprocesadoresTema 1 multiprocesadores
Tema 1 multiprocesadoresKuma Sanchez
 

Más de Kuma Sanchez (6)

Mapa conceptual tema 1
Mapa conceptual tema 1Mapa conceptual tema 1
Mapa conceptual tema 1
 
Tarea a realizar por todo el grupo
Tarea a realizar por todo el grupoTarea a realizar por todo el grupo
Tarea a realizar por todo el grupo
 
Análisis de supercomputadores
Análisis de supercomputadoresAnálisis de supercomputadores
Análisis de supercomputadores
 
Ejercicio 2
Ejercicio 2Ejercicio 2
Ejercicio 2
 
Ejercicios t2
Ejercicios t2Ejercicios t2
Ejercicios t2
 
Tema 1 multiprocesadores
Tema 1 multiprocesadoresTema 1 multiprocesadores
Tema 1 multiprocesadores
 

Último

Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdfvictoralejandroayala2
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica
07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica
07 MECANIZADO DE CONTORNOS para torno cnc universidad catolicalf1231
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónXimenaFallaLecca1
 
Presentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptxPresentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptxYajairaMartinez30
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingKevinCabrera96
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfDiegoMadrigal21
 
Clase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptxClase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptxChristopherOlave2
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptMarianoSanchez70
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptxguillermosantana15
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAJOSLUISCALLATAENRIQU
 

Último (20)

Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdf
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica
07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica
07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcción
 
Presentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptxPresentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptx
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdf
 
Clase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptxClase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptx
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 

Relacion Ejercicios 1

  • 1. Capítulo 1. INTRODUCCIÓN AL PROCESAMIENTO PARALELO. 1. Considerar la ejecución de un código objeto con 200.000 instrucciones en un procesador a 40 MHz. Las mezcla de instrucciones y el número de ciclos (CPI) necesarios para cada tipo de instrucción se dan en la tabla, basados en los resultados de un programa traza. Tipo de Instrucciones CPI Mezcla de Instrucciones Aritmñético-Lógicas 1 60% Load/Store 2 18% Salto 4 12% Referencia de memoria con fallo de caché 8 10% Considerar la ejecución paralela del programa en un sistema de 4 procesadores con memoria compartida. El programa se puede dividir en cuatro partes iguales (50.000 cada una) para una ejecución balanceada por los cuatro procesadores. Debido a la necesidad de sincronización entre las cuatro partes paralelas, se tienen que añadir 5000 instrucciones extras a cada parte. Asumir la misma mezcla de instrucciones para cada parte del programa dividido. El CPI para las instrucciones de referencia a memoria (con fallo de cache) se ha incrementado de 8 a 12 ciclos debido a las contenciones. El CPI para los restantes tipos de instrucciones no cambia. a) Calcular el CPI medio cuando el programa se ejecuta en el sistema de 4 procesadores. Para calcular el CPI podemos hacerlo de dos formas: 1. Forma 1: Podemos saber los ciclos totales del programa calculándolo así: 1. 2. 3. 4. Por tanto: Pero este sería el CPI si la ejecución fuera con un único procesador, y se nos pregunta el CPI para una ejecución paralela con 4 procesadores, cuando ejecutamos el programa en paralelo se añaden 5.000 a cada parte (ya que el programa se divide en 4 partes cada una se ejecutará en un procesador) instrucciones debidos al overhead creado por la sincronización, por tanto tendremos un total de Además el CPI de las instrucciones de fallo a memoria ha aumentado de 8 a 12 Para saber el CPI hacemos el mismo proceso que antes: 1.
  • 2. 2. 3. 4. Por tanto: Ya tenemos el CPI medio, para saber el CPI de un solo procesador: 2. Forma 2: También podemos calcular el CPI de una forma más rápida y sencilla: b) Calcular la correspondiente velocidad en MIPS cuando el programa se ejecuta en el sistema de 4 procesadores. Para calcular la velocidad la podemos calcular como la frecuencia del procesador divido entre el CPI Entonces hay una velocidad 15’15MIPS por procesador, como tenemos 4 procesadores entonces habrá una velocidad total de: c) Calcular el speedup (o ganancia de velocidad) del sistema de 4 procesadores sobre el sistema uniprocesador. ( ) ( ) Para el tiempo paralelo como terminan los procesadores a la vez el tiempo que termina en paralelo es el tiempo que termina un procesador
  • 3. d) Calcular la eficiencia del sistema de 4 procesadores comparando el speedup obtenido en el apartado (c) con el caso ideal. N = 4 En un caso ideal, la eficiencia obtenida sería máxima, del 100%, es decir, G = Nº procesadores Podemos concluir que la eficiencia real quedará por debajo de la eficiencia ideal, es comprensible que tengamos una eficiencia menor porque al introducir el sistema de 4 procesadores, hay un overhead debido a la sincronización y el CPI también aumenta. 2. El siguiente segmento de código, formado por seis instrucciones, necesita ejecutarse 64 veces para la evaluación de la expresión aritmética vectorial: D(I) = A(I) + B(I)·C(I): Load R1, B(I) /R1<-- Memoria(+I) Load R2, C(I) /R2 Memoria(+I) Multiply R1,R2 /R1<-- (R1) x (R2) Load R3, A(I) /R3<-- Memoria(+I) Add R3,R1 /R3<-- (R3)+(R1) Store D(I),R3 /Memoria(+I)<-- (R3) donde R1, R2, y R3 son registros de la CPU, (R1) es el contenido de R1, y son las direcciones de comienzo de memoria de los arrays B(I), C(I), A(I) y D(I) respectivamente. Asume cuatro ciclos de reloj para cada Load o Store, dos ciclos para el Add, y ocho ciclos para la multiplicación en un uniprocesador o en un sólo PE en una máquina SIMD. a) Calcula el número total de ciclos de CPU necesarios para ejecutar repetidamente durante 64 veces el código anterior en un computador SISD, ignorando todos los otros retardos de tiempo. Tipo CPI NI Ciclo/inst Load/store 4 4 16 Add 2 1 2 Multiply 8 1 8 En cada iteración se necesitan estos ciclos: Tipo CPI Load 4 Load 4 Multiply 8 Load 4 Add 2 Store 4 26 Por tanto son 26 ciclos en una sola iteración, como se dan 64 iteraciones entonces son:
  • 4. b) Considerar el uso de un computador SIMD con 64 PEs para ejecutar el código anterior en seis instrucciones vectoriales sincronizadas sobre vectores de datos de 64 componentes, dirigidos por la misma velocidad del reloj. Calcula el tiempo total de ejecución en la máquina SIMD, ignorando el resto de retardos. c) ¿Cuál es el speedup del computador SIMD sobre el computador SISD?. 3. Sea α el porcentaje de código de un programa que se puede ejecutar simultáneamente por n procesadores. Asume que el código restante se debe ejecutar secuencialmente por un sólo procesador. Cada procesador tiene una velocidad de ejecución de x MIPS, y se asume que todos los procesadores tienen la misma capacidad. a) Obtener una expresión para la velocidad efectiva en MIPS cuando se usa el sistema para la ejecución exclusiva de este programa, en términos de los parámetros n, α y x. α=parte paralelizable. 1-α=parte secuencial. n=nº de procesadores. Además, sabemos que: (cuando queremos calcular la ganancia, podemos usar tanto el tiempo , como los MIPS, es decir, si usamos el tiempo pues el tiempo secuencial se pone arriba y el tiempo paralelo se pone abajo, ya que el tiempo secuencial será mucho mayor ya que se tarda mucho más cuando se ejecuta en un procesador que cuando se ejecuta en paralelo con muchos procesadores, por tanto imagínate que en secuencial tarda 100 segundos , y en paralelo se tarda 10 segundos, entonces la ganancia calculándola con el tiempo será 100/10= 10 , una ganancia Con la fórmula anterior podemos igualarla con la fórmula de la ganancia de la ley de Amdahl, como 𝜶 es la parte paralelizable: 𝜶 ( 𝜶) 𝜶 ( 𝜶) 𝜶 ( 𝜶) 𝜶 𝜶 𝜶 𝜶 𝜶 𝜶 𝜶 𝜶 ( 𝜶) 𝜶 Por tanto tenemos dos fórmulas de la ganancia, e igualando las 2 fórmulas podemos despejar el valor de:
  • 5. { ( 𝜶) 𝜶 Entonces conseguimos la expresión ( 𝜶) 𝜶 b) Si n=16 y x=4 MIPS, determinar el valor de α que nos lleva a un rendimiento del sistema de 40MIPS. Un rendimiento de 40MIPS es el rendimiento de los MIPS en paralelo, el rendimiento de los MIPS en secuencial sería la velocidad de un procesador es decir 4MIPS ( 𝜶) 𝜶 ( 𝜶) 𝜶 ( 𝜶) 𝜶 𝜶 𝜶 𝜶 𝜶 ( 𝜶) 𝜶 𝜶 𝜶 𝜶 Es decir se necesita que un 96% del código sea paralelizable para conseguir una velocidad de 40MIPS en paralelo 4. El siguiente programa Fortran se ejecuta en un uniprocesador, y la versión paralela se va a ejecutar en un multiprocesador de memoria compartida. L1: Do 10 I=1,1024 L2: SUM(I)=0 L3: Do 20 J=1,I L4: 20 SUM(I)=SUM(I)+I L5: 10 Continue Supón que las sentencias L2 y L4 necesitan dos ciclos máquina, incluyendo todas las actividades de la CPU y acceso a memoria. Ignorar el gasto extra causado por el control software del lazo (sentencias L1, L3 y L5) y todos las demás penalizaciones del sistema (overhead). a) ¿Cuál es el tiempo total de ejecución del programa en un uniprocesador? El bucle externo se repite 1024 veces, por tanto el bucle externo necesita: El bucle interno se repite: ∑
  • 6. ∑ Entre el bucle interno y el bucle externo suman un total de: Por tanto podemos calcular los ciclos que tarda el algoritmo en secuencial (por un solo procesador): El tiempo que tarde (el tiempo de ejecución) dependerá de la frecuencia del procesador que no nos la dio el ejercicio, entonces dejamos el tiempo dependiente de la frecuencia: b) Divide las iteraciones del lazo I entre 32 procesadores con la siguiente asignación: El procesador 1 ejecuta las primeras 32 iteraciones (I=1 a 32), el procesador 2 ejecuta las siguientes 32 iteraciones (I=33 a 64) y así. ¿Cuál es el tiempo de ejecución y el speedup comparado con el apartado (a). (Tener en cuenta que la carga de trabajo dada por el lazo J no está balanceada entre los procesadores) Aquí no hacemos una división de carga balanceada, ya que el primer procesador tendrá menos iteraciones y el último procesador tendrá que hacer más iteraciones ya que por ejemplo, en este caso: Iteraciones procesador 1: El procesador dará de la iteración 1 a la iteración 32, por tanto: { ∑ Iteraciones procesador 32: El procesador 32 dará las 32 últimas iteraciones, por tanto: { ∑ ∑ ∑ ∑ ∑ ∑ Ahora podemos resolverlo ∑ ∑ ∑
  • 7. Por tanto el procesador 32 dará las siguientes iteraciones: { ∑ Por tanto podemos comprobar que no es una ejecución balanceada ya que Procesador Nº Iteraciones Procesador 1 560 Procesador 32 32.304 Debido a esto el algoritmo tardará lo que tarde el último procesador: Como conocemos el tiempo de ejecución en secuencial (con un solo procesador) y conocemos el tiempo de ejecución en paralelo entonces podemos calcular la ganancia: c) Modificar el programa para facilitar una ejecución paralela balanceada de toda la carga de trabajo en los 32 procesadores. Es decir, igual número de sumas asignadas a cada procesador con respecto a ambos lazos. Doall l=1,32 Do 10 I=(l-1)*16+1, l*16 SUM(I)=0 Do 20 J=1,I 20 SUM(I)=SUM(I)+J 10 Continue Do 30 I=(64-l)*16+1, [(64-l)*16 ]+16 SUM(I)=0 Do 40 J=1,I 40 SUM(I)=SUM(I)+J 30 Continue Endall Para ejecutar este algoritmo partimos el programa en 64 trozos, el primer procesador ejecutará las 16 primeras iteraciones (las menos pesadas) y ejecutará también las 16 últimas iteraciones (las más pesadas), de esta forma iremos balanceando la carga de tal forma que: Procesador Nº Iteraciones Procesador 1 Desde i=1 hasta i=16 y Desde i=1009 hasta i=1024 Procesador 2 Desde i=17 hasta i=32 y Desde i=993 hasta i=1008 Y así sucesivamente
  • 8. d) ¿Cuál es el tiempo de ejecución mínimo resultante de la ejecución paralela balanceada en los 32 procesadores?. ¿Cuál es el nuevo speedup sobre el uniprocesador?. De esta forma todos los procesadores tendrían que realizar el mismo número de iteraciones, es decir se reparter igualmente entre los 32 procesadores, como sabemos que en secuencial (un solo procesador) tiene que hacer 1.051.648 ciclos para terminar el algoritmo entonces con esta nueva forma de balanceo cada procesador tendría que hacer solamente: Por tanto el tiempo de ejecución del algoritmo sería lo que tarde uno de los procesadores , ya que terminarían a la vez: El speed up que conseguimos es el siguiente: Por tanto hemos conseguido una eficiencia perfecta. 5. Dados dos esquemas A y B de multiplicación de matrices, ambos tienen el mismo número de procesadores. Los tiempos de ejecución paralelos y las eficiencias de estos sistemas se muestran en la tabla. Tened en cuenta que el tiempo secuencial para multiplicar dos matrices es aproximadamente T1= cN3 y la eficiencia viene definida por Esquemas Tiempo de ejecución paralelo Tn Eficiencia E A √ ( ) √ B √ ( ) √ En cada una de las expresiones de tiempo paralelas, el primer término denota el tiempo de cálculo y el segundo el overhead de comunicación. La diferencia es que B tiene la mitad de overhead que A pero a expensas de doblar el tiempo de cálculo. ¿Qúe sistema es más escalable asumiendo que queremos mantener (1) E=1/3 y (2) E=1/4? (La carga para un problema de multiplicación de matrices NxN es aproximadamente W = N3 ). Decimos que un sistema es escalable cuando hay que aumentar poco la carga para mantener la eficiencia constante. Para poder comprobar cuál de las opciones es la más escalable debemos de obtener la expresión de la carga de cada una de las opciones, y una vez que las tengamos podemos comparar dichas expresiones, la expresión que tenga que aumentar menos la carga para mantener la eficiencia será la opción más escalable.
  • 9. a) ¿Qué sistema es el más escalable si mantenemos una eficiencia de E=1/3?. En este apartado nos dicen que sistema es el más escalable si queremos tener una eficiencia constante de ⅓, por tanto nos dan los siguientes datos: - Eficiencia=1/3 - ( ) √ - ( ) √ - La carga que implica la multiplicación de matrices es aproximadamente W=N3 Los que vamos hacer ahora es igualar las expresiones con el valor de la eficiencia el cual nos lo ha dado el ejercicio: { ( ) √ √ √ √ √ √ Una vez que tenemos el valor de N, podemos sustituir este valor en la expresión de la carga: { ( ) √ ( ) ( √ ) ( ) √ ( ) ( ) ( ) Ya tenemos la expresión de carga para la opción A, ahora tenemos que repetir el proceso para calcular la expresión de carga de B. Los que vamos hacer ahora es igualar las expresiones con el valor de la eficiencia el cual nos lo ha dado el ejercicio: ( ) √ √ √ √ √ √ Una vez que tenemos el valor de N, podemos sustituir este valor en la expresión de la carga: { ( ) √ ( ) ( √ ) ( ) √ ( ) ( ) ( )
  • 10. Una vez que tenemos las expresiones de la carga para la opción A y para la opción B, ahora si podemos compararlas: ( ) ( √ ) ( ) ( ) ( √ ) ( ) Podemos observar que la expresión de la carga es la misma, es decir W(A) = W(B) por tanto cualquiera de las opciones son igual de escalables si queremos mantener una eficiencia constante de ⅓. ( ) ( ) b) En el apartado b seguimos el mismo procedimiento, solo que cambia el dato de la eficiencia. En este apartado nos dicen que sistema es el más escalable si queremos tener una eficiencia constante de ¼, por tanto nos dan los siguientes datos: - Eficiencia=1/4 - ( ) √ - ( ) √ - La carga de la multiplicación de matrices se puede calcular mediante la siguiente función: W=N3 Lo que vamos hacer ahora es igualar las expresiones con el valor de la eficiencia el cual nos lo ha dado el ejercicio: ( ) √ √ √ √ √ √ Una vez que tenemos el valor de N, podemos sustituir este valor en la expresión de la carga: { ( ) √ ( ) ( ) ( √ ) ( ) ( ) ( ) Ya tenemos la expresión de carga para la opción A, ahora tenemos que repetir el proceso para calcular la expresión de carga de B. Los que vamos hacer ahora es igualar las expresiones con el valor de la eficiencia el cual nos lo ha dado el ejercicio: ( ) √ √ √ √ √ √
  • 11. Una vez que tenemos el valor de N, podemos sustituir este valor en la expresión de la carga: { ( ) √ ( ) ( ) ( √ ) ( ) ( ) ( ) Una vez que tenemos las expresiones de la carga para la opción A y para la opción B, ahora si podemos compararlas: ( ) ( √ ) ( ) ( ) ( √ ) ( ) En este caso vemos que las expresiones que describen la carga son prácticamente iguales pero difieren en el denominador, vemos que el que aumenta menos la carga es la opción B por tanto en este caso la opción más escalable es la opción b. ( ) ( ) ( ) ( ) 6. Considerar un programa con una carga de trabajo de una unidad W=1 y un cuello de botella secuencial de cero (α = 0): Estimar el speedup de tiempo fijo, S’n para cada una de las siguientes asunciones: a) ¿Cuál es la expresión (big-O) del speedup escalado para un overhead T0 = O(n-0,5 )? ¿Podrías conseguir un speedup lineal? Para calcular el speed up escalado se utiliza la ley de Gustafson, y sustituimos las incógnitas de la fórmula con los siguientes datos: W=1 α=0 To=O(n-0.5 ) ( ) ( ) ( ) ( ) Por tanto la expresión de la ganancia escalada es: Ahora nos piden la expresión big-O, esta es la cota superior, para calcular esto tenemos que hacer el limite cuando n(el número de procesadores) tiende a infinito, para ver qué ocurre según la ley de gustafson conforme vamos añadiendo procesadores Conseguimos un speedup lineal (superspeed up)
  • 12. b) ¿Cuáles son las posibles razones para tener un speedup superlineal en aplicaciones de computación paralela reales? Siempre que el overhead sea constante conseguiremos un superspeedup lineal. Posibles razones para conseguir un speed up superlineal: 1. Aumento de la memoria caché: cuando aumentamos el número de nodos también se aumenta la memoria caché disposible, ya que cada procesador además de poder procesar tiene una memoria caché asociada, por tanto se pueden tener más datos en memoria caché y el tiempo de acceso a los datos disminuirá. 2. Aumento de la memoria RAM: lo mismo que ocurre con la memoria caché, al tener más procesadores también tendremos más memoria RAM y por tanto podremos tener más datos en memoria principal que el memoria secundaría y esto hará que el acceso a los datos sea mas rápido. 3. El tipo de algoritmo que se ejecute: hay algoritmo como por ejemplo los algoritmos de backtracking que permiten podar ramas, cuando un hilo poda una rama evita que otro hilo entre a buscar en esa rama. c) Repetir el apartado (a) para un overhead T0 = O(1) y comentar los resultados. W=1 α=0 To=O(n-0.5 ) ( ) ( ) Por tanto: Por lo que, como tenemos un overhead constante, entonces tendremos un speed up lineal d) Repetir el apartado (a) para un overhead T0 = O(logn) e interpretar el resultado. ¿Es posible conseguir un speedup lineal si el speedup es más que una constante?. W=1 α=0 To=O(logn) ( ) ( ) ( ) Por tanto: Por lo que, tenemos un crecimiento lineal, aunque tendría un crecimiento levemente menor al caso anterior. Si el overhead es mayor que n, entonces tendríamos un crecimiento inferior al lineal mientras que si es menor que n, entonces si podríamos disponer de un crecimiento lineal.
  • 13. 7. Un programa tarda 40 s en ejecutarse en un multiprocesador. Durante un 20% de ese tiempo se ha ejecutado en 4 procesadores, durante un 60% en tres; y durante el 20% restante, en un procesador (consideramos que se ha distribuido la carga de trabajo por igual entre los procesadores que colaboran en la ejecución en cada momento, y despreciamos la sobrecarga). ¿Cuánto tiempo tardaría en ejecutarse el programa en un único procesador? ¿Cuál es la ganancia en velocidad obtenida con respecto al tiempo de ejecución secuencial? ¿Y la eficiencia? a) ¿Cuánto tiempo tardaría en ejecutarse el programa en un único procesador? Separamos cada parte para ver cuánto tarda cada una y cuanto procesadores necesita cada parte: El 20% se ejecutó en 4 procesadores: El 60% se ejecutó en 3 procesadores El 20% que queda se ejecutó en 4 procesadores: En el caso de que quisiésemos ejecutar el programa en un solo procesador, entonces el tiempo que tardará sería el siguiente: b) ¿Cuál es la ganancia en velocidad obtenida con respecto al tiempo de ejecución secuencial? Para determinar la ganancia dividimos lo que se tarda en secuencial (con un solo procesador) entre lo que se tarda con varios procesadores (tiempo en paralelo) c) ¿Y la eficiencia?