Post on 05-Feb-2020
IntroduccionSistemas y Programacion Paralela
Metodologıa de la Programacion Paralela
Facultad Informatica, Universidad de Murcia
Revision de SistemasParalelos
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Bibliografıa basica
Del curso, capıtulos 1 a 6
De esta sesion, capıtulo 1 y parte del 2
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Contenido
1 Introduccion
2 Sistemas y Programacion Paralela
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Programacion Paralela
Uso de varios elementos de proceso trabajando juntos pararesolver una tarea comun:
Cada elemento de proceso trabaja en una porcion delproblemae intercambian datos, a traves de la memoria o por una red deinterconexion
¿Diferencia con programacion concurrente?¿Que visto en programacion concurrente?¿Y en arquitectura de ordenadores?
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Necesidad de la Programacion Paralela
Lımites de sistemas secuenciales:
MemoriaVelocidadIncremento economico superior al de prestaciones
Solucion⇒ paralelismo:
Dificultades fısicas: integracion, velocidad de acceso a datosDificultades logicas: uso, programacion
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Necesidad de la Programacion Paralela
Sistemas paralelos permiten resolver:
Problemas mayores (memoria)Mas rapidamente (velocidad)
Aplicacion en:
Problemas de alto coste computacionalProblemas de gran dimensionProblemas de tiempo real
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Aspectos de la Programacion Paralela
Dificultades fısicas:
Mayor velocidadde proceso que deacceso a memoriay comunicacionIntegracion
Lımites develocidad de laluzDisipacion decalor
Consultar TOP 500: www.top500.org
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Contenidos del curso
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Variedad de sistemas computacionales
Los sistemas computacionales actuales estan constituidos porvarios componentes, por lo que son sistemas paralelos,pero estos componentes estan organizados de formas distintas:
Sistemas con varios cores y una memoria comun a todos
Un sistema multicore con una tarjeta grafica con su propiamemoria
Redes de multicores, cada uno con su memoria yposiblemente su tarjeta grafica
Varias redes conectadas entre sı de forma remota
etc
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Variedad de estilos de programacion
Una unica secuencia de ejecucion de las instrucciones(programacion secuencial)
Una secuencia de ejecucion, con algunas instrucciones quemandan trabajo a realizar a otro componente computacional
Distintas secuencias que se ejecutaran en elementoscomputacionales distintos colaborando a traves de lamemoria
Distintas secuencias que se ejecutaran en elementoscomputacionales distintos colaborando intercambiandoinformacion por medio de mensajes
etc
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Conceptos de Programacion Paralela
Paralelismo en sistemas secuenciales
Concurrencia - Programacion Concurrente
Paralelismo - Programacion Paralela
Sistemas de tiempo real - Programacion en tiempo real
Sistemas multicore
Tarjetas graficas, GPU
Aceleradores: Xeon Phi, FPGA, DSP...
Redes de ordenadores, Clusters
Computacion heterogenea
Supercomputacion
Computacion de Altas Prestaciones, HPC
Programacion adaptativa
Computacion distribuida
Computacion en la nube, Cloud
Computacion ubicua
Virtualizacion
Otros tipos: Computacion Cuantica, Biologica...
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Paralelismo en sistemas secuenciales (I)
Multiples unidades funcionales
por ejemplo varios sumadores o multiplicadores
Unidades vectoriales
se realizan operaciones simultaneas sobre conjuntos de datos.
Hay librerıas para vectorizacion (SSE, Streaming SIMD Extensions)
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Paralelismo en sistemas secuenciales (II)
Los procesadores actuales consiguen acelerar la ejecucion haciendo uso delparalelismo de forma interna. Ejemplos:
Segmentacion encauzada (pipeline):
division de la ejecucion de las instrucciones en etapas
una instruccion empieza a ejecutarse antes de que hayan terminado las anteriores
varias instrucciones se procesan simultaneamente
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion 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 Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Paralelismo en sistemas secuenciales (IV)
Procesador superescalar:
lanzar varias instrucciones simultaneamente,
para ejecucion fuera de orden o especulacion
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Paralelismo en sistemas secuenciales (V)
Very Long Instruction Word
procesamiento de varias instrucciones en paralelo
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Paralelismo en sistemas secuenciales (VI)
Division 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 mas rapido a las memorias mas cercanas
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Paralelismo en sistemas secuenciales (VII)
Multithreadingel sistema lanza varios threads (hilos) simultaneamente, quecomparten recursos
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Paralelismo en sistemas secuenciales (y VIII)
Paralelismo a nivel de instruccionreordenar las instrucciones para que se puedan ejecutar enparalelo sin afectar al resultado
Ejecucion fuera de ordense capturan los datos para estar disponibles cuando puedeejecutarse la instruccion
Especulaciondeterminar que resultados se van a necesitar y generarlosantes
Coprocesadores de E/Spermiten realizar entrada/salida mientras se computa
...
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Concurrencia - Paralelismo
Concurrencia, Programacion Concurrente
cuando varios elementos de proceso (hilos,procesos) trabajan de forma conjunta en laresolucion de un problema
Paralelismo, Programacion Paralela
lo mismo, pero se usan estos terminos cuando eltrabajo se utiliza para acelerar la resolucion de losproblemas
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Sistemas de tiempo real, Programacion de tiempo real
Para problemas que requieren respuesta en un espacio corto detiempopara lo que se necesita usar de manera eficiente los recursoscomputacionales,y por tanto realizar computacion paralela.Ejemplos:
Vıdeojuegos, Animaciones, que requieren generar al menos24 imagenes por segundo
Control, con informacion recogida por sensores, y el sistematiene que dar respuesta rapida
Robotica
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Multicore
Los sistemas multicore (multinucleo) contienen varios cores que tienen acceso a unespacio de memoria comun, organizado de forma jerarquica.
En la actualidad son los sistemas computacionales estandar, y sistemas mascomplejos se obtienen combinando varios de ellos.
Se programan a traves de hilos (threads), que comparten datos en la memoriacomun.
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Tarjetas graficas, GPU
Originariamente para vıdeojuegos, en la actualidad tambien para procesamiento deproposito general (GPGPU).Normalmente como coprocesadores con un sistema multicore, que dispone de una ovarias GPUs.El programa se ejecuta en CPU y manda trabajos a la GPU.Programacion dependiente del fabricante (CUDA) y tambien hay software portable(OpenCL).Constan de muchos cores de GPU, organizados en bloques, y con organizacionjerarquica de la memoria.Varios tipos de tarjetas con distintas capacidades computacionales (Gforce, Tesla,Kepler...)
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Otros aceleradores
Los aceleradores computacionales o coprocesadores se utilizan normalmentemandandoles trabajo desde la CPU para que se encarguen de realizar calculoscomputacionalmente costosos.Ademas de las GPUs hay algunos tipos mas:
Intel Xeon Phi:
Contiene hasta 61 cores, y cada core soporta 4 threads por hardware.
Programacion mas cercana que la de las GPUs a la estandar en paralelo.
FPGA (Field Programmable Gate Array):
Similares a circuitos integrados pero reprogramables.
Programacion distinta a la paralela estandar.
DSP (Digital Signal Processor):
Para tratamiento de senales y problemas en tiempo real.
Normalmente para operaciones matematicas que se repite continuamente.
SBC (Single Board Computer):
Normalmente para sistemas embebidos, con bajo consumo de potencia.
Ejemplo: Raspberry Pi
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Clusters, Redes de ordenadores
Compuestos por varios componentes computacionales(nodos) conectados en red.
Los nodos pueden estar enrackados o de forma aislada.
En la actualidad los nodos suelen ser multicoresposiblemente con GPUs.
Pueden ser desde clusters pequenos formados por unospocos nodos hasta muchos nodos formando unsupercomputador.
En algunos casos los nodos comparten el sistema deficheros, que tambien puede ser distribuido.
Se suele usar un sistema de colas para mandar lostrabajos de los usuarios al sistema.
La programacion estandar es multihilo en los nodos ymultiprocesos entre nodos.
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Computacion heterogenea
Los componentes de un sistema computacional presentandistintas fuentes de heterogeneidad:
Memorias primarias y secundarias de distinta capacidad ycon distinta organizacion.
Componentes computacionales con distinta velocidad.
Componentes computacionales de distinta arquitectura(ejemplo, multicore+GPU).
Redes de conexion a distinta velocidad.
...
lo que hace que haya que programarlos de forma especial paraaprovechar al maximo la capacidad de todos ellos, quizas conprogramacion paralela estandar pero asignacion balanceada detrabajos a los distintos componentes.
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Supercomputacion
La que se realiza en loscomputadores mas potentes pararesolver los problemas cientıficos conmayores necesidadescomputacionales (simulacionclimatica, analisis de ADN...)
Varıa historicamente. Lista Top500contiene los 500 mas rapidos delmundo, se actualiza cada seis meses.
Problemas de gestion, sistemas deenfriamiento, reduccion del consumode energıa (Green computing)...
Sunway TaihuLighten el National Super Computer Center inWuxi, ChinaCluster de Intel Xeon + Xeon Phi10.649.600 corespotencia 15.371 kwrendimiento maximo 125.435,9 (93.014,6)Tflops/seg
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
HPC
La Computacion de Alto Rendimiento (o Altas Prestaciones,High Performance Computing) consiste en el aprovechamientoal maximo de las capacidades computacionales del sistema.
Normalmente en supercomputadores, pero tambien enclusters, multicores, y para tiempo real.
Programacion Adaptativa
Al compartirse los grandes sistemas o clusters entre variosusuarios las condiciones de los sistemas cambian a lo largodel tiempo.
Se pueden desarrollar programas que se adapten a lascondiciones del sistema durante su ejecucion.
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Computacion Distribuida - Computacion en Grid
Computacion Distribuida
Componentes computacionales organizados en red colaboranen la resolucion de un problema.
Las redes pueden ser geograficamente locales (clusters) odistribuidas.
Interaccionan con envıo de mensajes.
Computacion en Grid
Como la distribuida, pero los componentes computacionalesestan mas separados geograficamente, son heterogeneos, sededican a distintas tareas...
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Cloud computing - Virtualizacion
Computacion en la nube
Uso de recursos computacionales, de almacenamiento, de servicios... ofrecidos atraves de algun sistema como Internet.
Normalmente se refiere a la oferta de los servicios. Hay proveedores de espacio yservicios, incluyendo computacion (por ejemplo, Amazon, Google Compute Engine).
Cuando se ofrece uso de elementos hardware el sistema ofrece esos recursos perono estan siempre asignados fısicamente al mismo hardware.
... Sky Computing, Jungle Computing...
Virtualizacion
Consiste en la oferta y uso de entornos virtuales, ya sea de hardware, sistemas,redes...
Puede permitir un mayor aprovechamiento de los recursos, pues varias maquinasvirtuales pueden estar usando la misma maquina real disminuyenso ası los puntosmuertos.
Ejemplo, rCUDA.
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Computacion ubicua - Computacion voluntaria
Computacion ubicua
Se realiza en cualquier momento y con cualquier tipo de dispositivo (moviles,sensores, portatiles, clusters, supercomputadores...)
Puede incluir sistemas con autonomıa, por ejemplo, frigorıficos poniendoseen contacto directamente con la tienda.
Algunos conceptos relacionados: pervasive computing, computacion movil,Internet de las cosas...
Computacion voluntaria
Cuando los usuarios ofrecen sus recursos computacionales(almacenamiento y capacidad de computo) para la resolucion de problemas.
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Computacion no convencional
Existen otros tipos de computacion no convencionales que no estan totalmentedesarrollados y que intrınsecamente incluyen paralelismo.
Computacion cuantica
Basada en las propiedades de la fısica cuantica.
Podrıan realizarse multiples operaciones de forma simultanea.
Requiere forma de programacion distinta a la actual.
Hay ya algunos computadores cuanticos, de alto coste y poca capacidad de computoen terminos cuanticos, pero que resuelven algunos problemas determinados de formamucho mas rapida que con la computacion convencional.
Computacion biologica
Basada en la capacidad de elementos biologicos (moleculas, proteınas, ADN...) paraalmacenar y procesar datos.
Se usa en algunas aplicaciones biologicas y de medicina, pero esta lejos de podertener un uso generalizado.
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Futuro?
Un par de transparencias de la presentacion de Rafael Asenjo en las Jornadas de
Paralelismo de 2014
Domingo Gimenez (domingo@um.es)
IntroduccionSistemas y Programacion Paralela
Futuro?
Domingo Gimenez (domingo@um.es)