CLASE 01012025¶
Pueden hacer presentaciones con prompts no tiene nada que ver con la clase pero esta GOD
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
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
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
Ojo no se cuentan sincronizaciones ni calendarizaciones
Osea que mas procesadores no siempre mejora la paralelizacion
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$
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
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
Esta es la ecuacion
Para su proyecto no tenemos que tener tanta parte sequencial.
Mira este ejemplo papu
el algoritmo ya no mejora ves
es lo que comentan
Ejemplo con suma¶
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
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
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.
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.
Los procesadores van aumentando y la eficiencia dismiuye y el spedup llega a un techo
La ley de Gustafson
Si el problema crece con la cantidad de procesadores la fraccion paralela crece
Amdal asume algoritmos estaticos, gustafson son algoritmos dinamicos.
La ley de Gustafson
Nos da escalabilidad, es flexible y es practico.
Speedup superlineal¶
Ocurre
Cuando nuestro algoritmo ejecuta mas rapido de lo que pensamos. Esto ocurre por la cache.
MIRA ASI SE CALCULA EN OPENMP
No es complicado
Otro codigo de ejemplo
Los consejos son
- minimizar sequencial
- minimizar sincronizacion y no usar tantos barriers
- balanceo de carga
- considerar localidad de datos, usar bien la cache
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.
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.