CLASE 01012025¶

image.png

Pueden hacer presentaciones con prompts no tiene nada que ver con la clase pero esta GOD

image-2.png

Esta es la parte matematica del curso.

Speedup es un KPI. En computacion paralella no nos funciona que compile

Ts tiempo secuencial un solo procesador

Tp tiempo paralelo en ejecutar un proceso en p procesadores

El speedup es la medida del incremento de la paralelizacion de una tarea

image-3.png

El speedup ideal es al numero de procesadores. Osea que si tnemos n procesadores nuestro algoritmo seria n veces mas rapido . Pero habra limitaciones que no podemos obviar

image-4.png

Un s = 4 es que es 4 veces nuestro programa paralelo mas rapido que el sequencial

El spedup ideal es lo que queremos, el real es lo que tendremos

image-5.png

Ojo no se cuentan sincronizaciones ni calendarizaciones

Osea que mas procesadores no siempre mejora la paralelizacion

image-6.png

Por cada estrategia debemos de hacer speedup y eficiencia . Podemos tener mayores numeros de speedup y menos eficiencia.

La eficiencia es la relacion speedup obtenido y procesadores utlizados

La eficiecia divina es 1 pero tendremos 0 a 1 . Si tneemos .55 es que estamos usando el 55%

$E = S / P$

image-7.png

La eficiencia tiende a disminuir a medida que se incrementan el numero de procesadores.

Aunque tengamos n procesadores hay un limite osea la ley de AMDAL que es el limite maximo al paralelizar

image-8.png

Tu algoritmo siempre va a tener una parte sequencial

Existen partes sequenciales. El speedup no puede sobrepasar en ejecutar. Tengo una parte sequencial y tengo una parte paralela . La parte sequencial se ejecutara asi nuestro speedup nunca superara el tiempo sequencial

image-9.png

Esta es la ecuacion

image-10.png

Para su proyecto no tenemos que tener tanta parte sequencial.

Mira este ejemplo papu

image-11.png

el algoritmo ya no mejora ves

image-12.png

es lo que comentan

Ejemplo con suma¶

image-13.png

El tiempo sequencial es de 15 por las 15 operandos

Si tenemos 2 procesadores en el procesador 1 tendremos desde el primero a la mitad y el segundo la otra mitad

image-14.png

Vemos que el speddup alcanzo casi el maximo siendo de 1.87 , nuestra eficiencia es alta es de 94 % , que tienen carga nivelada y haran el mayor trabajo en el menor tiempo posible

image-15.png

Con 4 procesadores cada procesador tendra 4 numeros. Vemos que la eficiencia bajo , nuestro speedup es 3. Nuestra eficiencia bajo porque se cumple la ley de ambdal porque hay mas overhead.

La eficiencia baja conforme mas procesadores.

image-16.png

Aqui tenemos 0.47 vemos que empeoro mas . Podemos ver que lo hizo mas rapido pero no valio la pena , pusimos el doble pero solo mejoramos un poco.

image-17.png

Los procesadores van aumentando y la eficiencia dismiuye y el spedup llega a un techo

La ley de Gustafson

image-18.png

Si el problema crece con la cantidad de procesadores la fraccion paralela crece

image-19.png

Amdal asume algoritmos estaticos, gustafson son algoritmos dinamicos.

image-20.png

La ley de Gustafson

Nos da escalabilidad, es flexible y es practico.

Speedup superlineal¶

Ocurre

image-21.png

Cuando nuestro algoritmo ejecuta mas rapido de lo que pensamos. Esto ocurre por la cache.

image-22.png

MIRA ASI SE CALCULA EN OPENMP

image-23.png

No es complicado

image-24.png

Otro codigo de ejemplo

image-25.png

Los consejos son

  • minimizar sequencial
  • minimizar sincronizacion y no usar tantos barriers
  • balanceo de carga
  • considerar localidad de datos, usar bien la cache

Clase 08102025¶

image.png

Tipos de paralelismo

image-2.png

el sistema operativo va a decidir en automatico de como dividir las tareas comun en entorno de alto nivel como openmp}

PATRONES DE DISEÑO PARA PARALELIZAR¶

image-3.png

image-4.png

image-4.png

image-5.png

image-5.png

image-6.png

image-7.png

image.png

CUDA sirve para paralelizacion con GPU, lo que pasa es que CUDA usa un kernel de manera paralela entre cada hilo.

Cuda es masivo mama masivo. El problema de cuda es que debemos de gestionar memoria , hilos y como funcionan

Ahora los mips y mflops

MIPS , instrucciones de GPU por segundo, el pedo es que no refleja el rendimiento real del sistema.

MFLOPS. cuantas operaciones de punto flotante hace un sistema. Los MFLOps se utilizan mas en simulaciones de la vida real.

image-2.png

DIVISIOENS DE CARGA¶

Existen 2 tipos de paralelismo en cuda, en grano fino es de dividir un problema en muchas mas tareas.

grano grueso es el tamaño de la tarea que vamos a procesar. Osea si vamos a hacerlo en partes pequeñas pero con mas sobrecarga o con grano grande con menos sobrecarga pero se puede a perder el paralelismo.

image-4.png image-3.png