Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Nociones básicas de computación paralela
Javier Cuenca1, Domingo Giménez2
1Departamento de Ingeniería y Tecnología de Computadores
Universidad de Murcia
2Departamento de Informática y Sistemas
Universidad de Murcia
[email protected], http://dis.um.es/˜domingo
Tecnologías para la Investigación, curso 2010-11
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Contenido
1 Planificación y Bibliografía
2 Sistemas paralelos
3 Sistemas multicore
4 Posibles trabajos
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Planificación
5 de noviembre
17:00-18:00: Nociones generales y programación en multicore.
Domingo Giménez
18:00-19:00: Programación en multicore con OpenMP. Javier
Cuenca
19:00-21:00: Prácticas de programación con OpenMP (opcional).
Javier Cuenca
19 de noviembre
17:00-18:00: El supercomputador Ben-Arabí. Personal del Centro
de Supercomputación de la Fundación Parque Científico de Murcia
18:00-19:00: Programación en clusters con MPI. Javier Cuenca
19:00-21:00: Prácticas de programación con MPI (opcional). Javier
Cuenca
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Planificación
5 de noviembre
17:00-18:00: Nociones generales y programación en multicore.
Domingo Giménez
18:00-19:00: Programación en multicore con OpenMP. Javier
Cuenca
19:00-21:00: Prácticas de programación con OpenMP (opcional).
Javier Cuenca
19 de noviembre
17:00-18:00: El supercomputador Ben-Arabí. Personal del Centro
de Supercomputación de la Fundación Parque Científico de Murcia
18:00-19:00: Programación en clusters con MPI. Javier Cuenca
19:00-21:00: Prácticas de programación con MPI (opcional). Javier
Cuenca
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Bibliografía
Francisco Almeida, Domingo Giménez, José Miguel
Mantas, Antonio M. Vidal: Introducción a la
programación paralela, Paraninfo Cengage
Learning, 2008
Capítulos 1 y 2: introducción y computadores paralelos
Capítulo 3: programación con OpenMP y MPI
Códigos de los capítulos 3, 4 y 6 en la página de material
suplementario de la editorial (www.paraninfo.es)
y otros (mejores) en inglés:
Introduction to Parallel Computing. Grama, Gupta,
Karypis, Kumar. Addison-Wesley. 2003
Parallel Programming in C with MPI and OpenMP. Quinn.
McGrawHill. 2003
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Bibliografía
Francisco Almeida, Domingo Giménez, José Miguel
Mantas, Antonio M. Vidal: Introducción a la
programación paralela, Paraninfo Cengage
Learning, 2008
Capítulos 1 y 2: introducción y computadores paralelos
Capítulo 3: programación con OpenMP y MPI
Códigos de los capítulos 3, 4 y 6 en la página de material
suplementario de la editorial (www.paraninfo.es)
y otros (mejores) en inglés:
Introduction to Parallel Computing. Grama, Gupta,
Karypis, Kumar. Addison-Wesley. 2003
Parallel Programming in C with MPI and OpenMP. Quinn.
McGrawHill. 2003
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
y material adicional
Curso de Algoritmos y Programación Paralela, quinto
Informática, dis.um.es/˜domingo/app.html
Incluye esquemas algorítmicos paralelos
Programación Paralela y Computación de Altas
Prestaciones, máster de Informática,
dis.um.es/˜domingo/cap.html
Incluye algoritmos matriciales paralelos y librerías
matriciales
Curso de promoción Computación Científica en Clusters,
2010, www.ditec.um.es/˜javiercm/curso ccc/index.html
Incluye administración de clusters y programación en
GPU
Curso de promoción de Programación en el
Supercomputador Ben-Arabí, marzo 2011,
https://casiopea.um.es
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
y material adicional
Curso de Algoritmos y Programación Paralela, quinto
Informática, dis.um.es/˜domingo/app.html
Incluye esquemas algorítmicos paralelos
Programación Paralela y Computación de Altas
Prestaciones, máster de Informática,
dis.um.es/˜domingo/cap.html
Incluye algoritmos matriciales paralelos y librerías
matriciales
Curso de promoción Computación Científica en Clusters,
2010, www.ditec.um.es/˜javiercm/curso ccc/index.html
Incluye administración de clusters y programación en
GPU
Curso de promoción de Programación en el
Supercomputador Ben-Arabí, marzo 2011,
https://casiopea.um.es
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
y material adicional
Curso de Algoritmos y Programación Paralela, quinto
Informática, dis.um.es/˜domingo/app.html
Incluye esquemas algorítmicos paralelos
Programación Paralela y Computación de Altas
Prestaciones, máster de Informática,
dis.um.es/˜domingo/cap.html
Incluye algoritmos matriciales paralelos y librerías
matriciales
Curso de promoción Computación Científica en Clusters,
2010, www.ditec.um.es/˜javiercm/curso ccc/index.html
Incluye administración de clusters y programación en
GPU
Curso de promoción de Programación en el
Supercomputador Ben-Arabí, marzo 2011,
https://casiopea.um.es
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Programación paralela
Uso de varios procesadores trabajando juntos
para resolver una tarea común
Cada procesador trabaja en una porción
del problema
Los procesos pueden intercambiar datos, a
través de
La memoria: modelo de memoria compartida, OpenMP,
esta sesión
Una red de interconexión: modelo de paso de mensajes,
MPI, próximo viernes
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
¿Por qué programación paralela?
Límites de memoria en los procesadores secuenciales
Aceleración de la computación
Dificultad de integración de componentes
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Aplicaciones de la programación paralela
Por necesidades de memoria: NUMA, clusters
y supercomputadores
Problemas con grandes necesidades de
computación
Alto coste: 2n, n!,... Métodos aproximados, NUMA, clusters,
supercomputadores, grid
Gran dimensión: n3 y n ≥ 10000. NUMA, clusters,
supercomputadores
Tiempo real: coste polinomial. Multicore, GPU, procesadores
dedicados
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Aplicaciones de la programación paralela
Simulaciones: climáticas, de hidrodinámica, de
moléculas, de contaminación...
Problemas combinatorios, metaheurísticas:
diseño de filtros, localización de centros de
servicio, planificación de trabajos, análisis
ADN...
Codificación y tratamiento de datos: control de
recursos, decodificación TDT, sistemas
móviles y MIMO...
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Sistemas paralelos
Sistema
portátil
PC
servidor
NUMA (Ben)
cluster
supercomputador (Arabí)
GPU
heterogéneo
jerárquico
.
.
.
Cores
2-4
2-8
4-24
16-256
2-32 × 2-8
32-1024 × 8-32
112-512
cluster+NUMA
Programación
OpenMP
OpenMP
OpenMP
OpenMP
MPI+OpenMP
MPI+OpenMP
CUDA
MPI+OpenMP
cluster+NUMA+GPU MPI+OpenMP+CUDA
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Lista de máquinas más potentes
TOP500 (http://www.top500.org)
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Arquitectura multicore
Más ejemplos en hwloc (http://www.open-mpi.org/projects/hwloc/)
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Compilación
gnu C, a partir de la versión 4
gcc programa.c -fopenmp
Intel C
icc programa.c -openmp
Ejecución
Seleccionar el número de threads
Antes de la ejecución: establecer variable de entorno
OMP NUM THREADS
Durante la ejecución: con función openmp
omp set numthreads()
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Compilación
gnu C, a partir de la versión 4
gcc programa.c -fopenmp
Intel C
icc programa.c -openmp
Ejecución
Seleccionar el número de threads
Antes de la ejecución: establecer variable de entorno
OMP NUM THREADS
Durante la ejecución: con función openmp
omp set numthreads()
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Aceleración de la computación
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Aceleración de la computación
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Caída de prestaciones
Coste bajo: suma n, matriz-vector n2
Gestión de los threads: creación, asignación
de recursos, sincronización...
Conflicto en accesos a memoria
Aumentan al aumentar el tamaño o el orden
Usar programación paralela para problemas de
alto coste
la multiplicación de matrices tiene coste n3 y
se logran mejores prestaciones
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Caída de prestaciones
Coste bajo: suma n, matriz-vector n2
Gestión de los threads: creación, asignación
de recursos, sincronización...
Conflicto en accesos a memoria
Aumentan al aumentar el tamaño o el orden
Usar programación paralela para problemas de
alto coste
la multiplicación de matrices tiene coste n3 y
se logran mejores prestaciones
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Librerías
Optimizadas para distintos tipos de sistemas
por ejemplo, de álgebra lineal
BLAS, LAPACK, multithreaded (memoria compartida)
ScaLAPACK para paso de mensajes
CCBLAS para GPU
Planificación y Bibliografía
Sistemas paralelos
Sistemas multicore
Posibles trabajos
Trabajos de aplicaciones
Utilizaci´
Comentarios de: Nociones básicas de computación paralela (0)
No hay comentarios