Sie sind auf Seite 1von 58

Algoritmos

Paralelos
Introducción
Modelos formales

Prof. J.Fiestas
Algoritmos Paralelos

Algoritmo
CS50 - Algoritmos

Algoritmo: camino a la UNI

x3
x3

if
Algoritmos Paralelos

Computación
paralela
Algoritmo: producción tex>l

tela teñidora
tejedora

prenda

acabados
Algoritmo: producción tex>l
Algoritmo: producción tex>l
Algoritmos Paralelos

Aplicaciones: Modelos 3D de pruebas


nucleares
Modelos climáticos

Simulación de choques Brute force code breaking


Algoritmos Paralelos

Sistemas MultiGPU son usados para


procesamiento gráfico de alta
performance y en paralelo

Análisis sísmico en sistemas


Multi-GPU, para mejorar
interpretación de datos en la
exploración de gas y petróleo

Diseño realistico en sistemas


Muti-GPU, acorta tiempos de
diseño logrando llegar más
rápido al mercado.
Algoritmos Paralelos

Aplicaciones:
Procesamiento de imágenes
médicas, para manipular
imágenes en 3D

Dinámica de fluídos, utiliza


software sofisticado que requiere
alto poder computacional

Dinámica molecular, para mejorar


productos que no afecten el medio
ambiente
Modelos N-cuerpos:

Astrofísica:
Movimiento de N cuerpos
bajo la influencia de fuerzas
de Newton. Física a escalas
largas.

•  Cosmología (1010
cuerpos)

Millenium simulation (1010


cuerpos en 109 años luz)
Física I of growing SMBHs in galaxy cores
Dynamics
Algoritmos Paralelos

Modelos N-cuerpos:
Biologia/Química: dinámica molecular
Fuerzas electrostáticas
Plegamiento de proteínas
(106 cuerpos)
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Desarrollo de Algoritmos Paralelos

SOFTWARE

TOPOLOGY

HARDWARE

ALGORITMO EFICIENTE
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Paradigmas básicos de paralelismo y coordinación

- Paralelismo del resultado



- Paralelismo del Especialista

- Paralelismo de la agenda
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Métodos de Programación,
Paralelismo del Especialista: se paraleliza la
Message Passing: tarea (especialidad) y se agrupa a los
especialistas conectados en paralelo en una
red lógica
-  Comunicación (envío de mensajes) entre procesos.
-  U>lizado en programación en paralelo (MPI) y orientada
a objetos (C,C++,Fortran)
-  No u>liza memoria compar>da, sino espacio de
memoria par>cionado en p nodos.
-  Paralelización
es explícita.
à Paralelismo del
Especialista
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Método de Estructura Paralelismo del resultado: se construye


alrededor del resultado final, procesando los
de Datos elementos del resultado simultáneamente

La estructura del
resultado define el
programa. Cada proceso
solo es responsable de
una tarea. La información
entre los procesos no se
envía, sino se lee de la
memoria compar>da.
Procesos y comunicación
es implícita
(OpenMP)
à Paralelismo del
resultado
Algoritmos Paralelos

Estructura de datos distribuída


Paralelismo de la agenda: se construye
enfocado en la agenda de tareas, y se asigna
procesos paralelos para cumplirla.

Caso intermedio, que man>ene la dis>nción entre un grupo


de datos (objetos) y un grupo de procesos
à Paralelismo de la agenda
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

SoNware: Relaciones entre los métodos de paralelización


MPI+OpenMP
+CUDA
DATOS
DISTRIBUI
DOS
Paralelismo
de la
agenda

OpenMP,
MPI
CUDA DATOS MESSAGE
ESTRUCTU PASSING:
RADOS: Paralelismo
Paralelismo del
del especialista
resultado
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Topologias
Depende del problema a resolver
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Hardware:
Seymour Cray (1925 - 1996)
‘padre de la super-computación’

Fundó CDC (Control Data Corpora>on)
à cooperación

construyo el computador mas rápido de la época
à innovación

CRAY-1 (80 MFLOPs) - $ 8 800 000 Smartphone (1 GFLOPs) - $ 300


CRAY X-MP (800 MFLOPs)
“Computers should obey a square law –
when the price doubles, you should get at least four >mes as much speed”
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Tianhe-2

National Supercomputer Center, Guangzhou, China


32,000 Intel Xeon E5 12C (2.2 GHz), 48000 Xeon Phi 31S1P33.86 PFLOPs
US$ 390 millones
TOP500 Supercomputer en 2015

www.top500.org
TOP500 Supercomputadores en 2015, dominado por Graphic
Processing Units (GPUs)

www.top500.org
DEVICE:
GPU y su memoria (device
memory), multitasking

HOST:
CPU y su memoria
(host memory)
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Job scheduler
Control de trabajos en el background (batch processing)
Tipicamente, con una interfase gráfica, proveen un control de monitoreo y
ejecución automatizado de una red de procesadores.
Actualmente, dominan diferentes arquitecturas asi como sistemas
operativos.

Aplicación importante es el control de colas de trabajos en un cluster de


computadores, asignando trabajos a procesadores con menor carga
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Platform Load Sharing Facility (LSF)


En un medio distribuído (cientos de hosts):
-  Monitorear y controlar fuentes es complejo
-  El uso de recursos no es balanceado
-  El usuario percibe estas deficiencias

Que
recurso
usar?

LSF manejará y asignará el mejor recurso disponible para los trabajos


(jobs)
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Ejemplo: sistema LAOHU en NAOC, Beijing


http://laohu.bao.ac.cn/ganglia/
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Paradigmas en la prácaca:
MPI (Message Passing Interface)
vs
OPENMP (OPEN MulaProcessing)

OPENMP: memoria compar>da MPI: memoria distribuída


Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

GPUs y CUDA:

GPU: Graphic Processing Unit es un circuito
electrónico especializado en la manipulación de
memoria para acelerar la creación de imágenes en
un buffer con el fin de enviarlo a una pantalla
(dislplay)

CUDA: Compute Unified Device Architecture.
API creada por NVIDIA, que da acceso directo a
instrucciones y elementos paralelos de GPUs
orientado a procesamiento general (GPGPU).
CUDA se puede usar con C,C++,Fortran
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

GPU chip:
3 billones de transistores, en 512 núcleos (cores) distribuídos en 16
Streaming Mul>processors (SMs) de 32 Streaming Processors (núcleos)
cada uno
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

GPU chip:
Stream Processor (SP) es el núcleo del GPU, y estan agrupados
en Stream Multiprocessors (SM)
SM es un Single Instruction Multiple Data (SIMD)
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Mula-GPU:
Combina capacidades en hardware de dis>ntos >pos de GPU por proceso
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Ejemplo CUDA:
Trazado de rayos (ray tracing)
Se escoge un punto de
referencia (cámara) desde donde
se observa un objeto (3D), y se
determina la luz que alcanzará al
sensor de la cámara. Cada pixel
en el sensor deberá tener las
mismas caracteristicas de
intensidad y color que el rayo
que lo alcanza. Por ello se puede
cambiar la dirección del rayo y
reconstruir la imagen del objeto
en el sensor de acuerdo a lo que Asimismo, se puede sofisticar el
el pixel ‘ve’ del objeto (a la modelo creando múltiples rayos
intersección del rayo con el para reflexión o brillo,
objeto)
N-body simula>ons on GPU clusters
Dynamics of growing SMBHs in galaxy cores

Ejemplo MPI-OMP-CUDA:
Problema de N-cuerpos:
No hay solución analí>ca
desde N=3
mj

mi m j rij
Fi = −Gmi ∑ 3
1≤ j≤N rij
j≠i
Número de operaciones de cálculo de fuerza
N(N-1)/2
Física I of growing SMBHs in galaxy cores
Dynamics

Otro modelo de N-cuerpos ....

Cuerpo Interacción Medio ambiente


Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores

Desarrollo de Algoritmos Paralelos

Como programar en paralelo ...


-  escoger el paradigma (esquema formal) mas
cercano al problema,
-  escribir el programa usando el método mas
natural a este paradigma, y
-  en caso el programa no sea eficiente,
transformarlo en un método mas eficiente que
natural.
Algoritmos Paralelos

Desarrollo de Algoritmos Paralelos

Comunicación, sincronización:
Para descomponer e problema, y recolectar los resultados
se requiere comunicacion entre los procesadores.
Los procesadores deben estar a su vez, sincronizados.

Mal diseño de comunicación à mayor costo de comunicación


ademas del costo de computación
Mala sincronizacion à los procesadores se de>enen y esperan
Algoritmos Paralelos

Desarrollo de Algoritmos Paralelos


Velocidad del paralelismo

Hay problemas facil de paralelizar, y problemas imposibles de
paralelizar
EL Obje>vo es la aceleración de la ejecución
Si T(n,1) es el costo del algoritmo con un procesador, y T(n,p) el costo
de p procesadores, la velocidad esta definida como

S(p) es óp>ma, si S(p) = p


La eficiencia da la carga promedio de los procesadores


Algoritmos Paralelos

Desarrollo de Algoritmos Paralelos


El problema de la asignación

Obje>vo: minimizar el >empo de ejecución total
-  Tiempo de computo: maximizar la concurrencia
asignando tareas independientes a diferentes procesos
-  Tiempo de comunicación: asignando tareas interac>vas
al mismo proceso
-  Tiempo de ocio: evitar fuentes de ociosidad

Grafo de dependencias determina que tareas se


pueden ejecutar en paralelo
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores: techniques

Desarrollo de Algoritmos Paralelos

Timings:
Tiempos de cómputo y comunicación dependiendo del numero de par>culas
(complejidad)
Algoritmos Paralelos
Dynamics of growing SMBHs in galaxy cores: techniques

Desarrollo de Algoritmos Paralelos


Performance:
Velocidad (TFlops) vs. número de procesadores: 6th order Hermite: ~ 550 Gflops
por un GPU Tesla C2050.

Spurzem, Fiestas et al. (2011)


Algoritmos Paralelos

Big Data y paralelismo

Programacion
en paralelo de
Big Data via
MapReduce/SQL
u>lizando
‘parallel
dataflow’
Algoritmos Paralelos

Modelos (formales) de algoritmos


paralelos
Grafo aciclico dirigido: DAG (Directed Acyclic Graph )
Algoritmos Paralelos

Grafo aciclico dirigido: DAG (E,V)


Donde E son los cantos y V son los nodos. Cada nodo v
representa una operación y los cantos e las salidas y
entradas de un nodo a otro.
Algoritmos Paralelos

Modelos de algoritmos paralelos


Modelo de red, describe a través de un grafo no
dirigido, una red de procesadores (nodos) y sus
conexiones (cantos).
Cada nodo contiene una memoria local y transmite
información (envío y recibo) a sus vecinos.

Posibles topologías:
- Red lineal de p procesos, en la que cada nodo
tiene dos vecinos

P1 P2 P3 P4 P5 P6 P7
Algoritmos Paralelos

Modelos de algoritmos paralelos


Modelo de red,
Posibles topologías:
-  Una malla de dos dimensiones, en las que cada
nodo tiene 4 vecinos
-  Un cubo d-dimensional con 2d procesadores
Algoritmos Paralelos

Modelos de algoritmos paralelos


Modelo PRAM
(Parallel Random Access Machine):
Consiste en n procesadores, conectados con una
memoria compar>da

SHARED MEMORY

P1 P2 P3 Pn
Algoritmos Paralelos

Modelo PRAM: (parallel random access machine)


U>liza p procesos sincrónicos, todos con acceso a una
memoria compar>da. Es decir, cada instrucción es ejecutada
por los procesos al mismo >empo.

Sea una instrucción de la forma:

Procesador i: c := a + b

donde a, b, y c son espacios de memoria compar>dos, y las
instrucciones para el procesador i serán:
-  Copiar espacio a en la memoria local
-  Copiar espacio b en la memoria local
-  Sumar a y b
-  Escribir el resultado en el espacio c
Algoritmos Paralelos

Modelo PRAM: (parallel random access machine)


Se diferencias >pos de escritura/lectura:
globalRead(A,x), para leer de la memoria global A en
la memoria local x. También x:=A
globalWrite(x,A), para escribir en la memoria local x
de la memoria global A. También A:=x

Ejemplo: mul>plicación Matriz-Vector

Sea la matriz A (n x n) y el vector x de n-dimensiones,


el producto deberá ser distribuido en p procesadores
Algoritmos Paralelos

Modelo PRAM: (parallel random access machine)


Ejemplo: mul>plicación Matriz-Vector
Cada proceso ejecuta r=n/p filas del vector
resultante y
Algoritmos Paralelos

Modelo PRAM: (parallel random access machine)


Ejemplo: mul>plicación Matriz-Vector
Ingreso: A(n,n), x(n), p procesos i, r=n/p
Salida: componentes [(i-1) r +1, ... , i r ] del vector y

Programa para el proceso i:

globalRead(x,z) // procesos leen al mismo >empo
globalread(A[(i - 1) r + 1 : ir , 1 : n], B)
Calcular B . z
globalwrite(w, y[(i - 1) r + 1 : i r])
Algoritmos Paralelos

Modelo PRAM: (parallel random access machine)


Ejemplo: mul>plicación Matriz-Vector
Ingreso: A(n,n), x(n), p procesos i, r=n/p
Salida: componentes [(i-1) r +1, ... , i r ] del vector y

Programa para el proceso i:
1. z := X;
2. b := A[(i-1) r + 1 : ir , 1 : n];
3. w := b + z;
4. Y[(i - 1) r + 1 : i r] := w;
Algoritmos Paralelos

Modelo PRAM: (parallel random access machine)

Lenguaje formal u>liza pardo (do in parallel)






Es decir, n operaciones serán ejecutadas en paralelo,
i.e. Proceso P1 asigna B(1) a A(1), proceso P2 asigna
B(2) a A(2), etc
Algoritmos Paralelos

Modelo PRAM: (parallel random access machine)

Ejemplo: adición
Ingreso: un vector (array) A= A(1) .... A(n) de n
números
Problema: calcular A(1) + .... +A(n)

Algoritmo de solución:
En pasos, tal que en cada uno se sume cada
elemento impar con su subsequente elemento par
Algoritmos Paralelos

Modelo PRAM: (parallel random access machine)

Sea n=8:

Paso 1: A(1) + A(2), A(3) + A(4), A(5) + A(6), A(7) + A(8)
Paso 2: A(1) + A(2) + A(3) + A(4), A(5) + A(6) + A(7) + A(8)
Paso 3: A(1) + A(2) + A(3) + A(4) + A(5) + A(6) + A(7) + A(8)
Algoritmos Paralelos

Modelo PRAM: (parallel random access machine)

Entrada: vector A con


n= 2k números

Salida: suma S de los
números del vector
Algoritmos Paralelos

Modelo PRAM: (parallel random access machine)

B1=B1+B2

B1=B1+B2 B2=B3+B4

B1=B1+B2 B2=B3+B4 B3=B5+B6 B4=B7+B8

B1=a1 B2=a2 B3=a3 B4=a4 B5=a5 B6=a6 B7=a7 B8=a8

P1 P2 P3 P4 P5 P6 P7 P8

Das könnte Ihnen auch gefallen