Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Metodología de la Programación Paralela
2015-2016
Facultad Informática, Universidad de Murcia
Introducción a la
Computación Paralela
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Bibliografía básica
Del curso, capítulos 1 a 6
De esta sesión, capítulos 1 y 2
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Contenido
1
Introducción
2 Sistemas y Programación Paralela
3 Paradigmas de Programación Paralela
Clasificaciones
Programación con Memoria Compartida
Programación con Paso de Mensajes
Simple Instrucción Múltiple Dato (SIMD)
4 Entornos de Programación Paralela
Ejemplo de fork-join en C
Ejemplo de uso de hilos en Java
Ejemplo de paralelismo con Pthreads
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Programación Paralela
Uso de varios elementos de proceso trabajando juntos para
resolver una tarea común:
Cada elemento de proceso trabaja en una porción del
problema
e intercambian datos, a través de la memoria o por una red de
interconexión
¿Diferencia con programación concurrente?
¿Qué visto en programación concurrente?
¿Y en arquitectura de ordenadores?
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Necesidad de la Programación Paralela
Límites de sistemas secuenciales:
Memoria
Velocidad
Incremento económico superior al de prestaciones
Solución ⇒ paralelismo:
Dificultades físicas: integración, velocidad de acceso a datos
Dificultades lógicas: uso, programación
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Necesidad de la Programación Paralela
Sistemas paralelos permiten resolver:
Problemas mayores (memoria)
Más rápidamente (velocidad)
Aplicación en:
Problemas de alto coste computacional
Problemas de gran dimensión
Problemas de tiempo real
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Aspectos de la Programación Paralela
Dificultades físicas:
Mayor velocidad
de proceso que de
acceso a memoria
y comunicación
Integración
Límites de
velocidad de la
luz
Disipación de
calor
Consultar TOP 500: www.top500.org
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Contenidos del curso
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Variedad de sistemas computacionales
Los sistemas computacionales actuales están constituidos por
varios componentes, por lo que son sistemas paralelos,
pero estos componentes están organizados de formas distintas:
Sistemas con varios cores y una memoria común a todos
Un sistema multicore con una tarjeta gráfica con su propia
memoria
Redes de multicores, cada uno con su memoria y
posiblemente su tarjeta gráfica
Varias redes conectadas entre sí de forma remota
etc
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Variedad de estilos de programación
Una única secuencia de ejecución de las instrucciones
(programación secuencial)
Una secuencia de ejecución, con algunas instrucciones que
mandan trabajo a realizar a otro componente computacional
Distintas secuencias que se ejecutarán en elementos
computacionales distintos colaborando a través de la
memoria
Distintas secuencias que se ejecutarán en elementos
computacionales distintos colaborando intercambiando
información por medio de mensajes
etc
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Conceptos de Programación Paralela
Paralelismo en sistemas secuenciales
Concurrencia - Programación Concurrente
Paralelismo - Programación Paralela
Sistemas de tiempo real - Programación en tiempo real
Sistemas multicore
Tarjetas gráficas, GPU
Aceleradores: Xeon Phi, FPGA, DSP...
Redes de ordenadores, Clusters
Computación heterogénea
Supercomputación
Computación de Altas Prestaciones, HPC
Programación adaptativa
Computación distribuida
Computación en la nube, Cloud
Computación ubicua
Virtualización
Otros tipos: Computación Cuántica, Biológica...
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Paralelismo en sistemas secuenciales (I)
Múltiples unidades funcionales
por ejemplo varios sumadores o multiplicadores
Unidades vectoriales
se realizan operaciones simultáneas sobre conjuntos de datos.
Hay librerías para vectorización (SSE, Streaming SIMD Extensions)
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Paralelismo en sistemas secuenciales (II)
Los procesadores actuales consiguen acelerar la ejecución haciendo uso del
paralelismo de forma interna. Ejemplos:
Segmentación encauzada (pipeline):
división de la ejecución de las instrucciones en etapas
una instrucción empieza a ejecutarse antes de que hayan terminado las anteriores
varias instrucciones se procesan simultáneamente
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Paralelismo en sistemas secuenciales (III)
Procesador supersegmentado:
cada etapa se divide en subetapas
y se lanzan subetapas sin completar el ciclo de reloj
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Paralelismo en sistemas secuenciales (IV)
Procesador superescalar:
lanzar varias instrucciones simultáneamente,
para ejecución fuera de orden o especulación
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Paralelismo en sistemas secuenciales (V)
Very Long Instruction Word
procesamiento de varias instrucciones en paralelo
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Paralelismo en sistemas secuenciales (VI)
División de memoria en bloques:
varios procesos pueden acceder a la vez a zonas de memoria distintas
Jerarquía de memorias:
varios niveles de cache,
acceso más rápido a las memorias más cercanas
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Paralelismo en sistemas secuenciales (VII)
Multithreading
el sistema lanza varios threads (hilos) simultáneamente, que
comparten recursos
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Paralelismo en sistemas secuenciales (y VIII)
Paralelismo a nivel de instrucción
reordenar las instrucciones para que se puedan ejecutar en
paralelo sin afectar al resultado
Ejecución fuera de orden
se capturan los datos para estar disponibles cuando puede
ejecutarse la instrucción
Especulación
determinar qué resultados se van a necesitar y generarlos
antes
Coprocesadores de E/S
permiten realizar entrada/salida mientras se computa
...
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Concurrencia - Paralelismo
Concurrencia, Programación Concurrente
cuando varios elementos de proceso (hilos,
procesos) trabajan de forma conjunta en la
resolución de un problema
Paralelismo, Programación Paralela
lo mismo, pero se usan estos términos cuando el
trabajo se utiliza para acelerar la resolución de los
problemas
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Sistemas de tiempo real, Programación de tiempo real
Para problemas que requieren respuesta en un espacio corto de
tiempo
para lo que se necesita usar de manera eficiente los recursos
computacionales,
y por tanto realizar computación paralela.
Ejemplos:
Vídeojuegos, Animaciones, que requieren generar al menos
24 imágenes por segundo
Control, con información recogida por sensores, y el sistema
tiene que dar respuesta rápida
Robótica
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Multicore
Los sistemas multicore (multinúcleo) contienen varios cores que tienen acceso a un
espacio de memoria común, organizado de forma jerárquica.
En la actualidad son los sistemas computacionales estándar, y sistemas más
complejos se obtienen combinando varios de ellos.
Se programan a través de hilos (threads), que comparten datos en la memoria
común.
Domingo Giménez (
[email protected])
Introducción
Sistemas y Programación Paralela
Paradigmas de Programación Paralela
Entornos de Programación Paralela
Tarjetas gráficas, GPU
Originariamente para vídeojuegos, en la actua
Comentarios de: Introducción a la Computación Paralela - Metodología de la Programación Paralela (1)