Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Laboratorio de Paralelismo
IF - EHU
Índice
1. Introducción.
2. Análisis de algoritmos.
3. Metodología de desarrollo de programas
paralelos.
4. Esquemas de algoritmos paralelos.
5. Problemas numéricos. Librerías.
Laboratorio de Paralelismo
IF - EHU
Introducción 43
Laboratorio de Paralelismo
IF - EHU
Introducción 44
Laboratorio de Paralelismo
IF - EHU
Introducción 45
1. Introducción.
2. Análisis de algoritmos.
3. Metodología de desarrollo de programas
paralelos.
4. Esquemas de algoritmos paralelos.
5. Problemas numéricos. Librerías.
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 47
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 48
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 49
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 411
Estudio a posteriori
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 412
Conteo de instrucciones
- decidir qué instrucciones/operaciones (flop) se
quieren contar.
- asignar costes a instrucciones de cada tipo.
- una función: coste de las instrucciones que la
componen.
- bucles: mediante sumatorios o cotas superior e
inferior si no se conoce el número de veces que se
ejecutará.
- bifurcaciones: contar el número de veces que pasa
por cada rama, o establecer una cota superior (rama
más costosa) o una inferior (rama menos costosa).
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 415
t
pn
,
i
j1
i
p,j
j
Notación asintótica
Dado que lo que interesa es saber cómo se comporta
el algoritmo cuando crece el tamaño de la entrada
(tamaños grandes), ya que es cuando podemos
tener problemas de tiempo, se suelen utilizar
notaciones asintóticas.
Acotan la forma en que crece el tiempo de ejecución
cuando el tamaño de la entrada tiende a infinito, sin
tener en cuenta las constantes que le afectan.
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 417
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 418
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 419
tcom n, p ¿?
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 420
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 421
s = a[0];
for(i=1; i<n; i++)
s = s + a[i];
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 422
0 1 2 3 4 5 6 7 k=1
0, 1 2, 3 4, 5 6, 7 k=2
0, 1, 2, 3 4, 5, 6, 7 …
0, 1, 2, 3, 4, 5, 6, 7 k = log n
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 424
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 425
Problemas:
- añade la comunicación y su gestión, cuyo coste
puede influir más o menos
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 427
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 428
Algunas conclusiones:
- No tiene sentido suponer p ilimitado para una
entrada constante (eliminar la restricción n = 2p),
n y p deben ser independientes.
- No tiene sentido utilizar programación paralela
para resolver problemas pequeños. Mejor
resolverlos secuencialmente. En el ejemplo, el
coste es lineal, y, por tanto, no es adecuado.
- Dependiendo de la plataforma, un programa
derivado de un algoritmo puede proporcionar unas
prestaciones muy diferentes.
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 429
Medidas de prestaciones:
- Speed-up t n
S n, p
t n, p
Medidas de prestaciones:
S n, p t n
- Eficiencia E n, p
p p * t n, p
- Memoria distribuida E n, p
n 1
n p log p p p log p 1 t s t w
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 431
Medidas de prestaciones:
- Coste C n, p p * t n, p
- Función overhead:
tover n, p C n, p t n p * t n, p t n
Escalabilidad
Que se mantengan las prestaciones al aumentar p y el
tamaño del problema.
Función de isoeficiencia
Indica la forma en la que debe aumentar el tamaño de la
entrada en función del tamaño del sistema para mantener
las prestaciones (despejar n en función de p).
n
E,
p
t
n
t
n
t
n
K
p
*tn
, C
p n ,p tn
,
over
p n
t
K
n
t tn
,
p
overK'
t n
,
p
over
1K
Laboratorio de Paralelismo
IF - EHU
Análisis de algoritmos 433
p2 log p2
p1 log p1
Laboratorio de Paralelismo
IF - EHU
Índice
1. Introducción.
2. Análisis de algoritmos.
3. Metodología de desarrollo de
programas paralelos.
4. Esquemas de algoritmos paralelos.
5. Problemas numéricos. Librerías.
Laboratorio de Paralelismo
IF - EHU
Metodología 436
Laboratorio de Paralelismo
IF - EHU
Metodología 437
Laboratorio de Paralelismo
IF - EHU
Metodología 438
Laboratorio de Paralelismo
IF - EHU
Metodología 439
Particionado
PROBLEMA
Comunicación
Aglomerado
Mapeado
Laboratorio de Paralelismo
IF - EHU
Metodología Modelo PCAM 441
Particionado
PROBLEMA
Descomposición (tareas+comunicación)
Comunicación
Aglomerado
Mapeado
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 442
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 443
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 444
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 445
gmc
concurrencia (gmc), es decir, el número medio de
tareas que se podrían ejecutar en paralelo.
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 447
Lectura+reparto
4 4
4 4
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 448
- Descomposición exploratoria
- Descomposición especulativa
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 449
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 450
n
( pid 1) 1 p1
p
pe pid x y j j
pe pepid
n pid0
j pid
p
Suma final patrón recursivo (≈ ejemplo1)
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 451
A10 A11
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 454
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 455
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 457
----
tarea i tarea j
0--- 1---
00-- 01--
ojo, reparto de trabajo!
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 458
Cálculo tipo2
Entrada … Salida
Cálculo tipoX
Cálculo selección
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 459
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 460
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 461
-- Creación estática/dinámica
Según se conozcan a priori las tareas a realizar
(ejemplo 2 – jacobi) o se vayan generando durante la
ejecución del programa (ejemplo 6 – integración
numérica).
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 462
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 463
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 464
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 465
-- Replicación de datos/cálculo
Conviene evitar que las tareas compartan mucho
cálculo o datos del problema.
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 466
-- Patrones locales/globales
Un patrón de comunicación se dice que es local
cuando cada tarea interacciona sólo con un
subconjunto pequeño de tareas (vecinas).
Se utiliza el grafo de dependencias para determinar las
necesidades de comunicación o sincronización.
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 467
-- Patrones locales/globales
El ejemplo 2 –jacobi– es un caso de patrón local de
comunicación.
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 468
-- Patrones locales/globales
Un patrón de comunicación se dice que es global
cuando múltiples tareas aportan datos para realizar un
cálculo en paralelo. Ejemplo 3 – producto escalar.
Descomp. recursiva
-- Patrones estáticos/dinámicos
En los estáticos se conoce a priori qué tareas y cuándo
se comunican.
Los ejemplos 1, 2 y 3 –eval. polinomial, jacobi y
producto escalar– tienen patrones de comunicación
estáticos.
Sin embargo, en el ejemplo 6 –integración numérica–
no se sabe a priori cuándo se va a producir la
actualización del área global, ya que depende de la
función que se esté integrando.
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 470
-- Patrones regulares/irregulares
Se habla de patrón regular cuando la comunicación
presenta una topología espacial. Los patrones
regulares simplifican la etapa de asignación y
programación en el modelo de paso de mensajes.
En el ejemplo 2 –jacobi– la comunicación se realiza
entre las cuatro tareas vecinas en la malla.
El ejemplo 6 –integración numérica– presenta un
patrón de comunicación irregular.
Laboratorio de Paralelismo
IF - EHU
Metodología Descomposición 471
Laboratorio de Paralelismo
IF - EHU
Metodología Asignación 474
Laboratorio de Paralelismo
IF - EHU
Metodología Asignación 475
Objetivos de la asignación:
- Reducir el tiempo de computación.
- Minimizar el tiempo de comunicación.
- Evitar el tiempo de ocio (por mal reparto de carga
o por esperas en
sincronizaciones/comunicaciones).
Dos tipos generales de esquemas de asignación:
- Asignación estática (técnicas de planificación
deterministas).
- Asignación dinámica.
Laboratorio de Paralelismo
IF - EHU
Metodología Asignación 476
Asignación estática
Cuando se conoce o se puede estimar a priori el
coste computacional de las tareas y las relaciones
entre ellas, y, por tanto, se decide a priori qué unidad
de proceso ejecutará cada tarea.
El problema de asignación estática óptima es NP-
completo técnicas heurísticas.
La gran ventaja frente a los dinámicos es que no
añaden ninguna sobrecarga en tiempo de ejecución.
Laboratorio de Paralelismo
IF - EHU
Metodología Asignación 477
Asignación dinámica
Se utiliza cuando las tareas se generan
dinámicamente (ejemplo 6 –integración numérica–),
o cuando no se conoce a priori el tamaño de las
tareas (ejemplo 7 –suma del subconjunto– con
poda).
Laboratorio de Paralelismo
IF - EHU
Metodología Asignación 478
Laboratorio de Paralelismo
IF - EHU
Metodología Asignación 479
Laboratorio de Paralelismo
IF - EHU
Metodología Asignación 480
Maestro
Colección de subproblemas
Subproblemas
Laboratorio de Paralelismo
IF - EHU
Metodología Asignación 481
Laboratorio de Paralelismo
IF - EHU
Metodología Asignación 482
Proceso i Proceso j
Colección de subproblemas Colección de subproblemas
Proceso k
Colección de subproblemas
Laboratorio de Paralelismo
IF - EHU
Metodología Asignación 483
Laboratorio de Paralelismo
IF - EHU
Índice
1. Introducción.
2. Análisis de algoritmos.
3. Metodología de desarrollo de programas
paralelos.
4. Esquemas de algoritmos paralelos.
5. Problemas numéricos. Librerías..
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 485
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 486
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 487
Particionado de datos
Es una especie de paralelismo de datos con paso de
mensajes.
La diferencia está en que no sólo se reparte el trabajo
sino que hay que distribuir los datos entre los
procesos. Por tanto, hay que tener en cuenta las
necesidades de comunicación entre procesos (y la
topología sobre la que se trabaja).
Los mismos ejemplos que en el paralelismo de datos
se pueden programar mediante el particionado de
datos.
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 488
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 490
F = G (M1M2/R2) → F = m Δv/Δt → Δx = v Δt
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 491
Un grupo de cuerpos se
considera como uno solo
situado en el centro de
masas si se cumple, por
d
r ejemplo, que r > d / .
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 492
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 493
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 494
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 495
x
Por ejemplo, cálculo de pi como x
la relación de áreas entre un x x
cuadrado y un círculo. x
x
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 496
f1 f2 f3 f4
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 497
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 498
Algunos ejemplos:
-- procesado de señal (sonido, vídeo...)
-- simulaciones de procesos segmentados (computación)
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 499
Paralelismo síncrono
Es el caso más habitual. Dos tipos:
-- paralelismo de datos
-- procesos iterativos
Hay que sincronizar los procesos, bien al final de una
operación o bien al final de una iteración.
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 4100
Paralelismo síncrono
La sincronización / comunicación entre procesos
añade problemas:
-- carga añadida al tiempo de cálculo
→ reducción del speed-up.
-- posibles problemas con el reparto equilibrado
de tareas (load balancing).
-- posibles deadlocks.
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 4101
Paralelismo síncrono
Como siempre, hay que intentar reducir las
necesidades de comunicación.
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 4102
Paralelismo síncrono
N/P N/P1/2
N N/P1/2
Total de comunicación:
2 veces N elementos 4 veces N / P1/2 elementos
Paralelismo síncrono
Tcol > Tblo → ti / te < N × (1 - 2/P1/2)
ti grande,
150
mejor por
columnas N = 128
100
ti / te
N = 64
50 ti pequeño,
mejor por
N = 32 bloques
0
1 10 100 1000
P
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 4104
Paralelismo síncrono
Otros ejemplos:
-- Resolución de un sistema de ecuaciones por el
método iterativo de Jacobi (ejemplo 2).
-- Difusión de calor en un determinado medio físico.
-- Autómatas celulares.
-- Multiplicación de matrices por el método Cannon.
-- Resolución de sistemas de ecuaciones lineales por
métodos iterativos.
-- El juego de la vida (problemas de simulación).
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 4105
Paralelismo síncrono
-- Resolución de un sistema de ecuaciones por el
método iterativo de Jacobi
> Diferencias finitas: Jacobi Gauss-Seidel: más “Red/black”
fácil de paralelizar eficiente, más complejo una alternativa
4
X(
t
) (
Xt)
(
t
X)
(
t
X)
(
t
X)
(
4
X
i
,
t
j
) (
t
X
i
1
1
,j
) (
t
X
i
1
)
,
j
(
t
X
i
,
j
1
1
) (
Xt
i
,
j
)
1
j
i
,
j
i
1,j
i
1,j i
,
j
1 i
,
j
1 (
t1)
X(
t
i
,
j
1)
X
i
,
8 8
Laboratorio de Paralelismo
IF - EHU
Esquemas de algoritmos paralelos 4106
Paradigma maestro-esclavo
Thread/proceso maestro que se encarga de poner en
marcha los esclavos dándoles trabajo y recopilando las
soluciones que van calculando.
Granja de procesos
Conjunto de procesos que trabaja de manera conjunta pero
independiente en la resolución de un problema (similar al de
los algoritmos relajados). Similar a maestro-esclavo, pero los
procesos hacen un trabajo idéntico.
Trabajadores replicados
Los workers son capaces de generar nuevas tareas que
pueden ejecutarlas ellos mismos y otros workers. Es una
versión descentralizada (control de finalización!).
Laboratorio de Paralelismo
IF - EHU
Índice
1. Introducción.
2. Análisis de algoritmos.
3. Metodología de desarrollo de programas
paralelos.
4. Esquemas de algoritmos paralelos.
5. Problemas numéricos. Librerías.
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4108
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4109
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4110
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4111
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4112
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4113
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4114
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4115
A : A i, j 0 si i j f si j i c
c
f
0’s
0’s
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4116
3 4 5 1 3 4 5 1
8 3 4 5 4 5 1 2
6 8 3 4 5 1 2 7
9 6 8 3 1 2 7 8
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4117
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4118
BLAS 1 (1973)
Programada en Fortran77, sólo cubría operaciones
elementales de complejidad O(n), p.e.: producto escalar de
vectores, suma de vectores con escalado: y = ax + y
En la optimización de código para arquitecturas vectoriales
BLAS 1 puede ser un problema ya que oculta al compilador
la naturaleza de las operaciones matriz-vector impidiendo
su optimización.
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4119
BLAS 2
Cubre un conjunto de operaciones sencillas de tipo matriz-
vector. Son operaciones de O(n2) del estilo:
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4120
BLAS 3
Para computadores con jerarquía de memoria, la
descomposición por bloques manteniendo el cálculo matricial
es mejor que la descomposición matriz-vector, ya que se
consigue una mayor reutilización de los datos en la memoria
cache (o memoria local).
BLAS 3 cubre estas necesidades implementando operaciones
tales como:
C = aAB + bC, C = aAAT + bC, B = aT-1B (con T
triangular)
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4121
Librería LAPACK
http://www.netlib.org/lapack/
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4122
Librería LAPACK
Está compuesta de subrutinas para resolver sistemas
de ecuaciones lineales, problemas de mínimos
cuadrados lineales, y problemas de valores
propios y valores singulares.
También contiene las descomposiciones que
permiten resolver los problemas anteriores: LU,
Cholesky, QR, SVD,…).
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4123
Librería LAPACK
Utiliza sobre todo el núcleo BLAS 3. De este modo los
fabricantes pueden proporcionar versiones nativas de
BLAS y conseguir muy buenas prestaciones para
LAPACK.
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4124
Librería LAPACK
Contiene tres tipos de rutinas:
> Rutinas driver: resuelven un problema completo
(cálculo de valores propios de una matriz simétrica,
resolución de un sistema de ecuaciones lineales…).
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4125
Librería LAPACK
Contiene tres tipos de rutinas:
> Rutinas auxiliares: realizan subtareas de los
algoritmos orientados a bloques; se pueden considerar
como extensiones de BLAS.
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4126
Librería ScaLAPACK
http://www.netlib.org/scalapack/
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4127
Librería ScaLAPACK
Portable a cualquier computador en el que esté
instalado MPI, y está escrito siguiendo el modelo
SPMD.
Trabaja con matrices que están distribuidas por los
procesadores mediante una distribución cíclica por
bloques, y sirve para matrices densas y banda, no
para dispersas.
Los tipos de datos que contempla son reales y
complejos de simple y doble precisión.
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4128
Librería ScaLAPACK
Se basa en el núcleo PBLAS (Parallel Basic Linear
Algebra Subroutines), que es una extensión de BLAS
para el modelo de paso de mensajes. Al igual que
BLAS, está organizada por niveles (PBLAS 1, PBLAS 2 y
PBLAS 3).
Para el diseño de PBLAS se diseñó otro paquete núcleo
computacional especializado en las comunicaciones
denominado BLACS (Basic Linear Algebra
Communications Subroutines), que a su vez utiliza MPI.
Laboratorio de Paralelismo
IF - EHU
Problemas numéricos. Librerías 4129
Librería ScaLAPACK
ScaLAPACK
PBLAS Global
Local
LAPACK BLACS
http://www.netlib.org/
Laboratorio de Paralelismo
IF - EHU
Referencias
Programación Paralela
• F. Almeida et al: Introducción a la programación paralela.
Paraninfo, 2008.
• I. Foster: Designing and Building Parallel Programs.
Addison Wesley (version on-line).
• B. Wilkinson, M. Allen: Parallel Programming Techniques and
Applications… Pearson, 2005 (2. ed.).
• M.J. Quinn: Parallel Programming in C with MPI and OpenMP.
McGraw Hill, 2003.
• A. Grama, A. Gupta, G. Karypis, V. Kumar: Introduction to
Parallel Computing (2. ed.). Pearson, 2003.
Laboratorio de Paralelismo
IF - EHU