Este repositorio contiene ejemplos sencillos que demuestran conceptos de procesamiento paralelo en Python utilizando multiprocessing
.
Cada ejemplo compara implementaciones secuenciales y paralelas para mostrar diferencias de rendimiento.
- Calcula la integral definida de f(x) = x² desde 0 hasta 10
- Genera el famoso fractal del conjunto de Mandelbrot
- Implementa multiplicación de matrices de diferentes maneras:
- Implementación secuencial
- Implementación paralela usando multiprocesamiento
- Implementación con NumPy
- Implementación con PyTorch (CPU y GPU)
- Compara rendimiento entre diferentes implementaciones
- Calcula la suma de cuadrados para una lista de números
- Realiza la suma de dos vectores grandes
- Procesamiento paralelo básico usando el módulo
multiprocessing
de Python - Distribución de trabajo entre múltiples núcleos de CPU usando
Pool
- Comparación de rendimiento entre implementaciones secuenciales y paralelas
- Integración con bibliotecas especializadas (NumPy, PyTorch)
- Aceleración por GPU
- Calcular que posiciones de una lista contiene números primos.
Dada una lista de entrada, indicar que posiciones de la lista corresponden a números primos:
entrada = [1, 2, 3, 4, 5, 6]
salida = [False, True, True, False, True, False]
- Implementar la función
is_primo(n: int) -> bool
. - Implementar una versión secuencial del programa.
- Implementar una versión paralela del programa.
- Preguntas:
- Para tamaños de entrada pequeños (<1000), ¿qué versión es más rápida?
- Para tamaños de entrada grandes (>100k), ¿qué versión es más rápida?
- ¿Porqué?
- ¿A partir de qué tamaño comienza a merecer la pena la versión paralela?
- Los resultados de rendimiento pueden variar según las especificaciones del hardware
- Algunos ejemplos pueden funcionar mejor o peor con procesamiento paralelo dependiendo del tamaño de entrada
- La aceleración por GPU requiere hardware compatible y una instalación adecuada de PyTorch