Clase 4 - 5 Intro Programacion Paralela
Clase 4 - 5 Intro Programacion Paralela
Clase 4 - 5 Intro Programacion Paralela
paralelo
IE0521: 1 Estructuras de computadoras II
Universidad de Costa Rica
Ing. Gerardo Castro
II semestre 2021
Agenda
• Programación en paralelo
• Clasificación de Flynn
• Anatomía de computadoras en paralelo
• Programación en paralelo
• Procesos e hilos.
• Modelo de programación de memoria compartida.
• Pthreads
• OS Scheduling
• Ejemplo contador compartido
• Sincronización
• OpenMP
• Modelo de programación: Message Passing.
• Modelo de programación de datos paralelos.
• Proceso de paralelización
• Descomposición
• Ley de Amdahl
• Asignación
• Orquestación
• Mapeo
Programación en paralelo
• La demanda en aplicaciones para mejorar el rendimiento genera avances
en el hardware que a su vez habilitan nuevas aplicaciones.
• Demanda en aplicaciones:
• Comerciales (bases de datos, procesamiento de transacciones en línea, minería
de datos, data warehouses)
• Científicas (genoma humano, circulación oceánica, modelado de fluidos)
• Ingeniería (automotriz, aeronáutica, visualización, procesamiento de imágenes)
P0 P1 P2 P3
Red de Interconexion
P4 P5 P6 P7
Ejemplo
• Arquitecturas de procesamiento:
• homogéneas (simétricas): múltiples instancias del mismo procesador o
recurso (por ejemplo: múltiples CPUs).
• heterogéneas (asimétricas): instancias diferentes de procesadores o recursos
(CPU big, CPU little, GPU, DSP, AI, etc).
• Arquitecturas de memoria:
• UMA (Uniform Memory Access)
• NUMA (Non Uniform Memory Access)
• ccNUMA (cache coherent NUMA)
Fuente imagen:
http://www.cs.berkeley.edu/~kubitron/talks/printable/BootCampHardware_081610.pdf
Creación de procesos: Fork
http://www.cs.berkeley.edu/~kubitron/talks/printable/BootCampHardware_081610.pdf
Ejemplo: contador compartido
http://www.cs.berkeley.edu/~kubitron/talks/printable/BootCampHardware_081610.pdf
Modelo de programación: Message Passing
• El programa consiste en una colecciones de programas donde cada hilo
tiene su propio espacio de memoria. No hay datos compartidos.
• Los hilos se comunican en forma explicita a través de mensajes de
enviado y recibido.
• La sincronización es implícita con cada evento de comunicación.
• MPI (Message Passing interface) es el software más usado.
Fuente imagen:
http://www.cs.berkeley.edu/~kubitron/talks/printable/BootCampHardware_081610.pdf
Modelo de Programación: Datos paralelos.
• El espacio de memoria es
global.
• La mayoría el trabajo
concurrente se enfoca en
operaciones sobre un conjunto
de datos.
• Las operaciones se realizan
sobre la misma estructura de
datos.
• Cada tarea se ejecuta en
particiones diferentes con la
misma operación. Fuente imagen: https://computing.llnl.gov/tutorials/parallel_comp
Proceso de Paralelización
Fuente imagen:
https://www.cac.cornell.edu/Stampede/Parallel/tax.aspx
Ley de Amdahl
• https://computing.llnl.gov/tutorials/parallel_comp
• http://www.cs.berkeley.edu/~kubitron/talks/printable/BootCampHar
dware_081610.pdf
• https://www.cac.cornell.edu/Stampede/Parallel/tax.aspx
• D. Culler, J. Singh y A. Gupta. “Parallel Computer Architecture: A
Hardware/Software Approach.” Morgan Kaufmann, Primera Edición,
1998.
• M. Herlihy, N. Shavit. “The Art of Multiprocessor Programming” .
Morgan Kaufmann, Segunda Edición, 2008.