Está en la página 1de 11

Tecnológico Nacional de México

Instituto Tecnológico de Veracruz

Departamento de Sistemas y Computación

Cómputo Paralelo

Unidad 1: Introducción a la Computación Concurrente


Trabajo de Investigación

“Algoritmia Concurrente”

No. de Control Nombre completo


E19020300 Brayan Bonilla Martinez

FECHA DE ENTREGA 7 MARZO 2022

H. Veracruz, Ver. A 7 de Marzo del 2022.

Clúster HPC
La computación de alto rendimiento (HPC) representa la capacidad de procesar datos y
realizar cálculos complejos a velocidades muy altas. Para ponerlo en perspectiva, un
equipo portátil o de sobremesa con un procesador de 3 GHz puede realizar unos 3.000
millones de cálculos por segundo. Aunque esto es mucho más rápido de lo que puede
lograr cualquier humano, palidece en comparación con las soluciones HPC que pueden
realizar cuadrillones de cálculos por segundo.

Principales componentes de un Clúster

 Alta disponibilidad: este es uno de los grandes beneficios de la tecnología de clustering, es decir,
ofrecer un mejor uptime de servidores gracias a que si falla uno, el resto tomará el trabajo
ofreciendo así una alta disponibilidad del servicio.
 Alta velocidad de despacho: se obtiene gracias al equilibrio de las cargas, haciendo que los
servidores que reciben las solicitudes de los clientes puedan despachar los datos de forma
inmediata, sin delays ni retrasos de ningún tipo.
 Balanceo de carga: se establecen diferentes métodos de balanceo de carga, haciendo que una o
varias peticiones se deriven a determinados hosts, mientras que otras irán destinadas a otro
grupo de servidores bajo el clúster. Esto hace que ningún servidor se vea saturado.
 Escalabilidad: la mayoría de los clúster de servidores soportan escalabilidad de forma horizontal,
permitiendo agregar más servidores de forma masiva según se necesite debido a una posible
creciente demanda de parte de los usuarios.
 Resistencia ante ataques DDOS: tener un clúster de servidores ofrece un beneficio adicional de
soportar mejor las cargas de sistema que se originan ante ataques DDOS masivos, donde se
suelen inundar los servidores con peticiones no deseadas. El uso de múltiples servidores puede
ayudar a resistir mejores diferentes tipos de ataque destinados a agotar los recursos de sistema o
red.

Memoria Compartida

La memoria compartida es uno de los mecanismos agrupados bajo el nombre de Inter


Process Comunication (IPC), junto con semáforos y colas de mensajes (FIFO). Mediante
memoria compartida, como su nombre indica, podemos crear zonas de memoria
compartidas por varios procesos. De este modo los cambios que un proceso realice a los
valores almacenados en memoria compartida son visibles para los demás procesos que
utilicen esa misma memoria compartida.

Memoria Distribuida
Los sistemas de memoria distribuida o multicomputadores pueden ser de dos tipos
básicos. El primer de ellos consta de un único computador con múltiples CPUs
comunicadas por un bus de datos mientras que en el segundo se utilizan múltiples
computadores, cada uno con su propio procesador, enlazados por una red de
interconexión más o menos rápida.

Sobre los sistemas de multicomputadores de memoria distribuida, se simula memorias


compartidas. Se usan los mecanismos de comunicación y sincronización de sistemas
multiprocesadores.

Tipos de paralelismo

Es una técnica de programación en la que muchas instrucciones se ejecutan


simultáneamente. Se basa en el principio de que los problemas grandes se pueden dividir
en partes más pequeñas que pueden resolverse de forma concurrente («en paralelo»).

Existen varios tipos de computación paralela:

 Paralelismo a nivel de bit


 Paralelismo a nivel de instrucción
 Paralelismo de datos
 Paralelismo de tareas.

Pipiline

La arquitectura en pipeline (basada en filtros) consiste en ir transformando un flujo de


datos en un proceso comprendido por varias fases secuenciales, siendo la entrada de
cada una la salida de la anterior.

Esta arquitectura es muy común en el desarrollo de programas para el intérprete de


comandos, ya que se pueden concatenar comandos fácilmente con tuberías (pipe).

También es una arquitectura muy natural en el paradigma de programación funcional, ya


que equivale a la composición de funciones matemáticas.

La calificación de flynn

La clasificacion de flynn es un tipo de clasificacion que se realiza según la forma de


procesar los datos paralelamente, que en este caso resulta una clasificacion debido a la
cantidad de datos e instrucciones que se manejan.

Esta es una de otros tipos de clasificaciones que fueron surgiendo gracias al crecimiento
del procesamiento paralelo, comenzando desde el procesamiento en paralelo atreves de
multicomputadoras gracias a las redes de computadoras, hasta lo que hoy en día se
puede lograr en una sola computadora gracias a los sistemas multicore.

Ley de amdhal
Es llamada así por el arquitecto de ordenadores Gene Amdahl, se usa para averiguar la
mejora máxima de un sistema cuando solo una parte de éste es mejorado. Establece que:
La mejora obtenida en el rendimiento de un sistema debido a la alteración de uno de sus
componentes está limitada por la fracción de tiempo que se utiliza dicho componente. El
incremento de velocidad de un programa utilizando múltiples procesadores
en computación distribuida está limitada por la fracción secuencial del programa.

Throughput

Es la velocidad con que el sistema genera dinero (convierte los inventarios en ingreso
efectivo) a través de las ventas. Es muy importante entender con claridad la diferencia
entre el tradicional concepto de contribución y el concepto del Throughput.

Overhead

Es la cantidad de tiempo requerido para coordinar tareas paralelas, en lugar de hacer un


trabajo útil. Incluye factores como:

 Tiempo de inicio de la tarea


 Sincronización
 Comunicaciones de datos
 Sobrecarga de software impuesta por lenguajes paralelos, bibliotecas, sistema
operativo, etc.
 Tiempo de terminación de la tarea

Speedup

Es un proceso realizado para mejorar el rendimiento de un sistema que procesa un


problema determinado. Más técnicamente, es la mejora en la velocidad de ejecución de
una tarea ejecutada en dos arquitecturas similares con diferentes recursos. La noción
de speedup fue establecida por la ley de Amdahl, que estaba dirigida particularmente a
la computación paralela. Sin embargo, la speedup se puede usar más generalmente para
mostrar el efecto en el rendimiento después de cualquier mejora en los recursos.

Eficiencia y Escalabilidad
La eficiencia es una comparación del grado de speed-up conseguido frente al valor
máximo. Dado que 1 ≤ S(n) ≤ n, tenemos 1/n ≤ E(n) ≤ 1. La eficiencia m´as baja (E(n) → 0
corresponde al caso en que todo el programa se ejecuta en un único procesador de forma
serie. La eficiencia máxima (E(n) = 1) se obtiene cuando todos los procesadores están
siendo completamente utilizados durante todo el periodo de ejecución.

Escalabilidad. Un sistema se dice que es escalable para un determinado rango de


procesadores [1..n], si la eficiencia E(n) del sistema se mantiene constante y cercana a la
unidad en todo ese rango. Normalmente todos los sistemas tienen un determinado
numero de procesadores a partir del cual la eficiencia empieza a disminuir de forma m´as
o menos brusca. Un sistema es m´as escalable que otro si este numero de procesadores,
a partir del cual la eficiencia disminuye, es menor que el otro .

Ejercicio:
1. Sea un conjunto de n = 1000 operaciones a distribuir para ser realizadas entre p
= 10 procesadores. El tiempo promedio para realizar cada operación puede ser
estimado en t1 = 1.0; el tiempo mínimo t1min = 0.5 y el tiempo máximo t1max = 2.0.-
Supóngase:

(a) Equilibrado estático:


Calcule el tiempo total de ejecución paralela y el speedup en el caso más
desfavorable.

(b) Equilibrado dinámico:


Suponiendo un equilibrado perfecto, calcule el tiempo total de ejecución
paralela y el speedup. Para esto considere que la búsqueda de trabajo por
parte de los procesadores les insume un tiempo (sobrecarga) tg = 0.1 y que el
trabajo les es entregado por paquetes (chunks) de 2 operaciones.

2. Estimar teóricamente el speedup y la eficiencia del programa para cálculo del número π y
calcular esas medidas a partir de los tiempos registrados al correr el programa.

En función de la velocidad del procesador y de la latencia y ancho de banda de la red,


estime teóricamente el speedup y la eficiencia.
Realice mediciones de los tiempos para distintos valores de n y para distinta cantidad de
procesadores p, y compute el speedup y la eficiencia.
1. Datos:
n = 1000 operaciones
p = 10 procesadores
t1 = 1.0 (tiempo promedio)
t1min = 0.5 (tiempo mínimo)
t1max = 2.0 (tiempo máximo) - Caso mas desfavorable

(a). Equilibrado Estático


Cálculo de tiempos:
ts = tiempo de proceso secuencial
tp = tiempo de proceso en paralelo con p procesadores

ts n t ts 1000 2

tp
tp

Cálculo de Speedup:
Sp Sp

(b). Equilibrado Dinámico:


Datos:
chunks = 2 operaciones (paquetes)
tg = 0.1 (sobrecarga)

tp tp0 t1 tg

1
tp
0
p
1
tp chunks
1000
0
10

tp 50 1 0.1 55

Cálculo de Speedup:
Sp Sp
Conclusión:

Al trabajar con un equilibrado dinámico y realizando entregas de paquetes


(chunks) de 2 operaciones, mejoramos los tiempos de cálculo en paralelo
y esto mejora el Speedup del programa paralelo.

2. Estimación Teórica del Speedup y la Eficiencia de un programa que calcula el numero π,


calculado integrando la derivada de atan(x), utilizando integración con rectángulos y 100.000
intervalos. Para el calculo se utilizaron 4 procesadores (ver TP3)

En condiciones ideales (teóricas)

Sp p

Ep 1

En la práctica, medimos los tiempos para procesar el cálculo en forma


secuencial y paralelo

ts 0 . 0032222

tp 0 . 0011818

Y determinamos el Speedup y la Eficiencia

Sp Sp 0 . 0032222
0 . 0011818

2 . 7265

2 . 7265
Ep Ep

Conclusiones:
El Speedup y la Eficiencia calculados son menores a los valores teóricos
debido a la perdida por paralelismo. Esto es, a medida que aumentamos
la cantidad de procesadores para realizar los cálculos tanto el speedup y
la eficiencia disminuyen debido a que en la práctica intervienen en los
tiempos del cálculo en paralelo, los tiempos de comunicación y
coordinación entre todos los procesadores.
- Estimación teórica del Speedup y la EficienciaDatos:
Latencia = 45 [µseg.] *
Ancho de Banda = 130 [Mbyte/seg.] *
Velocidad del Procesador = 3000 [MHz.] **

Tabla Resumen 1 - Tiempos Calculados Teóricamente

Datos del problema Tiempos calculados teoricamente


tp tcal tcom tcoor
n p Spt Ept
[useg.] [useg.] [useg.] [useg.]
1 1,000 1,000 41,67 41,667 0,000 0,000
2 0,169 0,085 245,841 20,833 45,008 180,000
10000
4 0,048 0,012 865,440 10,417 135,023 720,000
8 0,017 0,002 2480,262 5,208 315,054 2160,000
16 0,006 0,000 6437,720 2,604 675,115 5760,000
1 1,000 1,000 416,667 416,667 0,000 0,000
2 0,962 0,481 433,341 208,333 45,008 180,000
100000
4 0,434 0,109 959,190 104,167 135,023 720,000
8 0,165 0,021 2527,137 52,083 315,054 2160,000
16 0,064 0,004 6461,157 26,042 675,115 5760,000
1 1,000 1,000 4166,667 4166,667 0,000 0,000
2 1,805 0,903 2308,341 2083,333 45,008 180,000
1000000 4 2,197 0,549 1896,690 1041,667 135,023 720,000
8 1,391 0,174 2995,887 520,833 315,054 2160,000
16 0,622 0,039 6695,532 260,417 675,115 5760,000

* Dato obtenido en TP2

** Dato obtenido del Ganglia Report del cluster Aquiles

- Mediciones de los tiempos del programa para distintos valore de n y de p.Tabla

Resumen 2 - Tiempos Medidos

Datos del problema Tiempos medidos


ts tp Cp Fp
n p Sp Ep
[useg.] [useg.] [useg.] [1/useg.]
1 44,00 --- 1,000 1,000 44,00 ---
2 --- 952,96 0,046 0,023 1905,92 2,42 E-05
4 --- 1500,84 0,029 0,007 6003,36 4,88 E-06
10000
8 --- 3071,07 0,014 0,002 24568,56 5,83 E-07
16 --- 7412,91 0,006 0,000 118606,56 5,00 E-08
1 437,00 --- 1,000 1,000 437,00 ---
2 --- 1039,98 0,420 0,210 2079,96 2,02 E-04
4 --- 1621,96 0,269 0,067 6487,84 4,15 E-05
100000
8 --- 3258,94 0,134 0,017 26071,52 5,14 E-06
16 --- 5647,18 0,077 0,005 90354,88 8,56 E-07
1 4240,00 --- 1,000 1,000 4240,00 ---
2 --- 2336,98 1,814 0,907 4673,96 3,88 E-04
1000000 4 --- 2281,90 1,858 0,465 9127,60 2,04 E-04
8 --- 3149,99 1,346 0,168 25199,92 5,34 E-05
16 --- 5841,02 0,726 0,045 93456,32 7,77 E-06
Gráfico 1 – Calculo de Speedup

Conclusiones:
Vemos que en el caso de n = 10.000 y n = 100.000 los tiempos de
cálculo en forma secuencial son menores a los calculados en forma
paralela, dado los costos de tiempo comunicación y coordinación entre
los procesadores.
Como podemos ver en la Tabla Resumen 1 - Tiempos Calculados
Teóricamente, el tiempo de cálculo se reduce a medida que
empleamos más procesadores para realizar las cuentas, pero los costos
de comunicación y coordinación entre los procesadores, son un costo fijo
que tenemos, que en los casos mencionados la suma de estos es mayor
al tiempo de cálculo secuencial. También hay que tener en cuenta que el
problema en si es sencillo de calcular y vemos que los tiempos medidos
son del orden de los µseg.
Recién en el caso de n = 1.000.000 vemos que los tiempos de cálculo en
paralelo son menores a los calculados en forma secuencial, excepto en
el caso de p = 16 procesadores, ya que volvemos a caer en el exceso de
tiempos por comunicación y coordinación entre los 16 procesadores.
Bibliografía

Arquitectura en pipeline (informática). (s/f). Classicistranieri.com. Recuperado el 7 de marzo de 2022, de

https://www.classicistranieri.com/es/articles/a/r/q/Arquitectura_en_pipeline_%28inform%C3%A1t

ica%29.html

Borges, E. (2019, abril 30). Servidor en Clúster - ¿Qué es? Características y Tipos de Clúster. Infranetworking.

https://blog.infranetworking.com/servidor-en-cluster/

crisross. (2013, junio 7). Computación Paralela. Arquitectura de Computadoras.

https://arquitecturadecomputadora.wordpress.com/2013/06/07/computacion-paralela/

de Computadoras, A. (s/f). Arquitectura de Computadoras. Blogspot.com. Recuperado el 7 de marzo de 2022,

de http://itcv-arquitectura-de-computadoras.blogspot.com/2014/11/44-sistemas-de-memoria-

distribuida.html

Hm, A. (2012, julio 27). Throughput. Monografias.com.

https://www.monografias.com/trabajos93/throughput-diapositivas/throughput-diapositivas

Jacovix, & Perfil, V. T. mi. (s/f). Arquitectura de computadoras II. Blogspot.com. Recuperado el 7 de marzo de

2022, de http://arqcom14.blogspot.com/2014/05/clasificacion-de-flynn.html

Ley de Amdahl. (s/f). Ecured.cu. Recuperado el 7 de marzo de 2022, de

https://www.ecured.cu/Ley_de_Amdahl

NetApp. (2019). ¿Qué es la computación de alto rendimiento (HPC)? ¿Cómo funciona? Netapp.com; NetApp.

https://www.netapp.com/es/data-storage/high-performance-computing/what-is-hpc/

¿Qué es la memoria compartida? (2010, mayo 17). CénitS - COMPUTAEX.

http://www.cenits.es/faq/preguntas-generales/que-es-la-memoria-compartida

También podría gustarte