metodolog a de la programaci n paralela -...

50
Metodolog´ ıa de la Programaci´ on Paralela Facultad Inform´ atica, Universidad de Murcia Esquemas algor´ ıtmicos paralelos - Particionado y Paralelismo de Datos Domingo Gim ´ enez (Universidad de Murcia) 1 / 31

Upload: duongnga

Post on 28-Sep-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Metodologıa de la Programacion Paralela

Facultad Informatica, Universidad de Murcia

Esquemas algorıtmicosparalelos - Particionado y

Paralelismo de Datos

Domingo Gimenez (Universidad de Murcia) 1 / 31

Contenido

1 Esquemas algorıtmicos paralelos

2 Paralelismo de datos

3 Particionado de datos

4 Esquemas de descomposicion de datos

5 Trabajo adicional

Domingo Gimenez (Universidad de Murcia) 2 / 31

Contenido

1 Esquemas algorıtmicos paralelos

2 Paralelismo de datos

3 Particionado de datos

4 Esquemas de descomposicion de datos

5 Trabajo adicional

Domingo Gimenez (Universidad de Murcia) 3 / 31

Tipos de esquemasPodemos considerar esquemas de distintos tipos:

Descomposicion del trabajo:Paralelismo de datos.Particionado de datos.Algoritmos relajados.De paralelismo basado en dependencias de datos:Paralelismo sıncrono.Dependencias en arbol o grafo.Pipeline.De paralelizacion de esquemas secuenciales:Divide y Venceras.Programacion Dinamica.Recorridos de arboles: Backtracking y Branch and Bound.De multiples tareas o trabajadores:Bolsa de tareas.Granja de procesos.Maestro-Esclavo.

Domingo Gimenez (Universidad de Murcia) 4 / 31

SesionesLos agruparemos en 5 sesiones de teorıa y dos de practicas:

Descomposicion del trabajo:Paralelismo de datos.Particionado de datos.Algoritmos relajados.

De paralelismo basado en dependencias de datos:Paralelismo sıncrono.Dependencias en arbol o grafo.Pipeline.

De paralelizacion de esquemas secuenciales:Divide y Venceras.Programacion Dinamica.Recorridos de arboles: Backtracking y Branch and Bound.

De multiples tareas o trabajadores:Bolsa de tareas. Granja de procesos. Maestro-Esclavo.

Domingo Gimenez (Universidad de Murcia) 5 / 31

Metodologıa

En clase de teor ıa se veran las ideas generales de cada paradigma

se discutiran sobre ejemplos basicos.

En las sesiones de pr acticas se propondra la resolucion de algunproblema usando esos paradigmas.

Los problemas a usar en practicas seran principalmente de losanalizados en teorıa y del Concurso de Programacion Paralela.

Los paradigmas no son disjuntos , por lo que se puede ver unmismo problema con distintos paradigmas.

Otras referencias, con ejemplos e implementaciones :Almeida, Gimenez, Mantas, Vidal: Introduccion a la ProgramacionParalela, Paraninfo. 2008. Capıtulo 6.Wilkinson, Allen: Techniques and Applications Using NetworkedWorkstations and Parallel Computers, Prentice-Hall, 2004.Quinn: Parallel Programming in C with MPI and OpenMP,McGraw-Hill, 2003.

Domingo Gimenez (Universidad de Murcia) 6 / 31

Contenido

1 Esquemas algorıtmicos paralelos

2 Paralelismo de datos

3 Particionado de datos

4 Esquemas de descomposicion de datos

5 Trabajo adicional

Domingo Gimenez (Universidad de Murcia) 7 / 31

Ideas generales

Muchos datos tratados de una forma igual o similar (tambienapropiado para GPU)

Tıpicamente algoritmos numericos

Datos en arrays o vectores

◮ Posible procesamiento vectorial◮ Paralelismo asignando partes distintas del array a distintos elementos

de proceso

Memoria Compartida (Paralelismo de datos):

◮ Distribucion del trabajo entre los hilos◮ Paralelizacion automatica o implıcita

Memoria Distribuida (Particionado de datos):

◮ Distribucion de los datos a los procesos◮ Paralelizacion explıcita

Domingo Gimenez (Universidad de Murcia) 8 / 31

Ejemplos

¿Alguno de los ejemplos vistos hasta ahora es de paralelismo dedatos?

Domingo Gimenez (Universidad de Murcia) 9 / 31

Ejemplos

¿Alguno de los ejemplos vistos hasta ahora es de paralelismo dedatos?

Claramente la multiplicacion de matrices¿Caracterısticas?

Domingo Gimenez (Universidad de Murcia) 9 / 31

Ejemplos

¿Alguno de los ejemplos vistos hasta ahora es de paralelismo dedatos?

Claramente la multiplicacion de matrices¿Caracterısticas?

¿Y la ordenacion?¿Como se podrıa hacer con palalelismo de datos?

Domingo Gimenez (Universidad de Murcia) 9 / 31

Ejemplo - Suma de n datosEsquema secuencial (t(n) = n):

s=0;

for (i=0;i<n;i++)

s=s+a[i];

Domingo Gimenez (Universidad de Murcia) 10 / 31

Ejemplo - Suma de n datosEsquema secuencial (t(n) = n):

s=0;

for (i=0;i<n;i++)

s=s+a[i];

Vectorizacion con simd.

Domingo Gimenez (Universidad de Murcia) 10 / 31

Ejemplo - Suma de n datosEsquema secuencial (t(n) = n):

s=0;

for (i=0;i<n;i++)

s=s+a[i];

Vectorizacion con simd.Paralelizacion automatica: con opcion de compilacion si no haydependencia de datos o el compilador detecta que se puede resolver.

Domingo Gimenez (Universidad de Murcia) 10 / 31

Ejemplo - Suma de n datosEsquema secuencial (t(n) = n):

s=0;

for (i=0;i<n;i++)

s=s+a[i];

Vectorizacion con simd.Paralelizacion automatica: con opcion de compilacion si no haydependencia de datos o el compilador detecta que se puede resolver.Con pragma (t(n, p) = n

p ):

s=0;

#pragma omp parallel for private(i) reduction(+:s)

for (i=0;i<n;i++)

s=s+a[i];

Domingo Gimenez (Universidad de Murcia) 10 / 31

Ejemplo - Suma de n datosEsquema secuencial (t(n) = n):

s=0;

for (i=0;i<n;i++)

s=s+a[i];

Vectorizacion con simd.Paralelizacion automatica: con opcion de compilacion si no haydependencia de datos o el compilador detecta que se puede resolver.Con pragma (t(n, p) = n

p ):

s=0;

#pragma omp parallel for private(i) reduction(+:s)

for (i=0;i<n;i++)

s=s+a[i];

Distintas posibilidades de asignacion de los datos a los hilos,con clausula schedule: bloques contiguos, cıclica, dinamica.

Domingo Gimenez (Universidad de Murcia) 10 / 31

Ejemplo - Suma de n datosEsquema secuencial (t(n) = n):

s=0;

for (i=0;i<n;i++)

s=s+a[i];

Vectorizacion con simd.Paralelizacion automatica: con opcion de compilacion si no haydependencia de datos o el compilador detecta que se puede resolver.Con pragma (t(n, p) = n

p ):

s=0;

#pragma omp parallel for private(i) reduction(+:s)

for (i=0;i<n;i++)

s=s+a[i];

Distintas posibilidades de asignacion de los datos a los hilos,con clausula schedule: bloques contiguos, cıclica, dinamica.¿Cual es la mejor manera de ejecutarlo? ¿Merece la penaparalelizar?

Domingo Gimenez (Universidad de Murcia) 10 / 31

Ejemplo - Suma de n datos, con paralelismo explıcito

#pragma omp parallel for private(s)

for(i=0;i<p;i++)

sumaparcial(&a[(i*n)/p],n,p);

if(nodo==0)

s=sumatotal(a,n,p);

sumaparcial(a,n,p):

s=0;

for(j=0;j<n/p;j++)

s=s+a[j];

a[0]=s;

sumatotal(a,n,p):

s=0;

for(j=0;j<p;j+=n/p)

s=s+a[j];

return s;

Domingo Gimenez (Universidad de Murcia) 11 / 31

Ejemplo - Suma de n datos, con paralelismo explıcito

#pragma omp parallel for private(s)

for(i=0;i<p;i++)

sumaparcial(&a[(i*n)/p],n,p);

if(nodo==0)

s=sumatotal(a,n,p);

sumaparcial(a,n,p):

s=0;

for(j=0;j<n/p;j++)

s=s+a[j];

a[0]=s;

sumatotal(a,n,p):

s=0;

for(j=0;j<p;j+=n/p)

s=s+a[j];

return s;

¿Merece la pena paralelizar sumatotal? t(n, p) = np + p

Domingo Gimenez (Universidad de Murcia) 11 / 31

Ejemplo - Ordenacion por rango

Se cuenta para cada elemento cuantos hay mayores que el (surango), y a continuacion se situa en la posicion dada por su rango.

#pragma omp parallel for private(i,j)

for(i=0;i<n;i++)

for(j=0;j<n;j++)

if(a[i]>a[j])

r[i]+=1;

Domingo Gimenez (Universidad de Murcia) 12 / 31

Ejemplo - Ordenacion por rango

Se cuenta para cada elemento cuantos hay mayores que el (surango), y a continuacion se situa en la posicion dada por su rango.

#pragma omp parallel for private(i,j)

for(i=0;i<n;i++)

for(j=0;j<n;j++)

if(a[i]>a[j])

r[i]+=1;

Problemas:¿Se hace trabajo de mas? n2 comparaciones + n2

2 sumas¿Como situarlos en su posicion? recorrido de orden n¿Que pasa si dos datos son iguales? comparacion adicional¿Se pueden colapsar los dos bucles?

Domingo Gimenez (Universidad de Murcia) 12 / 31

Ejemplo - Ordenacion por rango, con paralelismoexplıcitoSe hace asignacion del trabajo entre los hilos:

#pragma omp parallel for

for(i=0;i<p;i++)

calcularrango(a,n,i,p);

calcularrango(a,n,i,p):

for(j=(i*n)/p;j<((i+1)*n)/p;j++)

for(k=0;k<n;k++)

if(a[j]>a[k])

r[j]+=1;

Comparaciones n2

p , ¿sumas?Domingo Gimenez (Universidad de Murcia) 13 / 31

Ejemplo - Multiplicacion de matrices

Con paralelismo implıcito:

#pragma parallel for private(i,j,k)

for(i=0;i<n;i++)

for(j=0;j<n;j++) {

c[i,j]=0;

for(k=0;k<n;k++)

c[i,j]=c[i,j]+a[i,k]*b[k,j];

}

Domingo Gimenez (Universidad de Murcia) 14 / 31

Ejemplo - Multiplicacion de matrices

Con paralelismo implıcito:

#pragma parallel for private(i,j,k)

for(i=0;i<n;i++)

for(j=0;j<n;j++) {

c[i,j]=0;

for(k=0;k<n;k++)

c[i,j]=c[i,j]+a[i,k]*b[k,j];

}

El numero de operaciones en coma flotante es 2n3, pero se puedemejorar el tiempo de ejecucion sin cambiar el orden:

Domingo Gimenez (Universidad de Murcia) 14 / 31

Ejemplo - Multiplicacion de matrices

Con paralelismo implıcito:

#pragma parallel for private(i,j,k)

for(i=0;i<n;i++)

for(j=0;j<n;j++) {

c[i,j]=0;

for(k=0;k<n;k++)

c[i,j]=c[i,j]+a[i,k]*b[k,j];

}

El numero de operaciones en coma flotante es 2n3, pero se puedemejorar el tiempo de ejecucion sin cambiar el orden:

◮ En los ejemplos usabamos arrays unidimensionales y una variable spara acumular el producto escalar.

Domingo Gimenez (Universidad de Murcia) 14 / 31

Ejemplo - Multiplicacion de matrices

Con paralelismo implıcito:

#pragma parallel for private(i,j,k)

for(i=0;i<n;i++)

for(j=0;j<n;j++) {

c[i,j]=0;

for(k=0;k<n;k++)

c[i,j]=c[i,j]+a[i,k]*b[k,j];

}

El numero de operaciones en coma flotante es 2n3, pero se puedemejorar el tiempo de ejecucion sin cambiar el orden:

◮ En los ejemplos usabamos arrays unidimensionales y una variable spara acumular el producto escalar.

◮ Se pueden usar algoritmos por bloques, vectorizacion, reordenacionde bucles...

Domingo Gimenez (Universidad de Murcia) 14 / 31

Ejemplo - Multiplicacion de matrices, con paralelismoexplıcito

#pragma omp parallel for private(i)

for(i=0;i<p;i++)

multiplicar(c,a,b,i)

multiplicar(c,a,b,i):

for(j=(i*n)/p;j<((i+1)*n)/p;j++)

for(k=0;k<n;k++) {

c[j,k]=0;

for(l=0;l<n;l++)

c[j,k]=c[j,k]+a[j,l]*b[l,k];

}

Domingo Gimenez (Universidad de Murcia) 15 / 31

Otros ejemplos

Producto escalar de dos vectores x e y de tamano n:Similar a la suma de n datos.Asignacion de bloques de tamano n

p de x e y a los p hilos.Suma (secuencial o paralela) de los productos parciales.

Producto matriz-vector:Dos bucles, paralelizacion del mas externo.Posible trabajo por bloques.

Domingo Gimenez (Universidad de Murcia) 16 / 31

Producto matriz-vector por bloques

Matriz A de dimension n × n y vector x de dimension n × 1:A dividida en m ×m bloques Aij de dimensiones n

m ×nm

x dividido en m subvectores de dimension nm × 1,

Vector resultado r en m subvectores de dimension nm × 1, que se obtienen:

ri =m∑

j=1

Aijxj

¿Ventajas del trabajo por bloques?

Domingo Gimenez (Universidad de Murcia) 17 / 31

Contenido

1 Esquemas algorıtmicos paralelos

2 Paralelismo de datos

3 Particionado de datos

4 Esquemas de descomposicion de datos

5 Trabajo adicional

Domingo Gimenez (Universidad de Murcia) 18 / 31

Ideas generales

Especie de paralelismo de datos para Memoria Distribuida - Paso deMensajes.

El espacio de datos se divide en regiones adyacentes:

◮ Se asignan a procesos distintos◮ Posible intercambio de datos entre regiones adyacentes◮ Mas semejante al Paralelismo de Datos explıcito

Para obtener buenas prestaciones: intentar que el volumen decomputacion entre comunicaciones sea grande⇒ paralelismo degrano grueso

Domingo Gimenez (Universidad de Murcia) 19 / 31

Ejemplos

¿Alguno de los ejemplos vistos hasta ahora es de particionado dedatos?

Domingo Gimenez (Universidad de Murcia) 20 / 31

Ejemplos

¿Alguno de los ejemplos vistos hasta ahora es de particionado dedatos?

Claramente la multiplicacion de matricesSe hace una distribucion expıcita de las matrices,pero la computacion que hace cada proceso es la misma que la quehace cada hilo con OpenMP.

Domingo Gimenez (Universidad de Murcia) 20 / 31

Ejemplos

¿Alguno de los ejemplos vistos hasta ahora es de particionado dedatos?

Claramente la multiplicacion de matricesSe hace una distribucion expıcita de las matrices,pero la computacion que hace cada proceso es la misma que la quehace cada hilo con OpenMP.

¿Y la ordenacion?Se particionan los datos,pero no es eso lo unico que se hace.

Domingo Gimenez (Universidad de Murcia) 20 / 31

Ejemplo - Suma de n datos

Programa similar al de Memoria Compartida con paralelismo expıcito.

Domingo Gimenez (Universidad de Murcia) 21 / 31

Ejemplo - Suma de n datos

Programa similar al de Memoria Compartida con paralelismo expıcito.

Cada proceso sumara np datos. tarit(n, p) = n

p

Domingo Gimenez (Universidad de Murcia) 21 / 31

Ejemplo - Suma de n datos

Programa similar al de Memoria Compartida con paralelismo expıcito.

Cada proceso sumara np datos. tarit(n, p) = n

p

Necesarias comunicaciones:

◮ Envıo de np datos a cada proceso. tcomu(n, p) = (p − 1)ts +

(

n − np

)

twCoste de comunicacion del mismo orden que el de la computacion(¿merece la pena?)

◮ Acumulacion de los resultados. tcomu = (p − 1) (ts + tw)◮ Parte secuencial de sumar las sumas parciales. tarit(n, p) = p◮ Costes anteriores con comunicaciones punto a punto entre proceso

cero y el resto.Dependen de la topologıa logica de procesos y de las funciones decomunicacion que se usen (¿Cuales usarıamos?)

Domingo Gimenez (Universidad de Murcia) 21 / 31

Ejemplo - Ordenacion por rangoEn paralelismo de datos se distribuye el trabajo:

Domingo Gimenez (Universidad de Murcia) 22 / 31

Ejemplo - Ordenacion por rangoEn paralelismo de datos se distribuye el trabajo:

En particionado de datos puede ser:

Coste distribucion de datos mayor: tcomu(n, p) = (p − 1) (ts + ntw)

Domingo Gimenez (Universidad de Murcia) 22 / 31

Ejemplo - Ordenacion por rangoEn paralelismo de datos se distribuye el trabajo:

En particionado de datos puede ser:

Coste distribucion de datos mayor: tcomu(n, p) = (p − 1) (ts + ntw)Los datos pueden estar inicialmente distribuidos:

Pi se encarga de calcular los valores de ri : necesita comparar ai concada aj ⇒ p pasos.

Domingo Gimenez (Universidad de Murcia) 22 / 31

Ejemplo - Ordenacion por rango, con datos distribuidos

En cada Pi, i=0,1,...,p-1

for(j=0;j<n/p;j++)

b[j]=a[j];

for(j=1;j<=p;j++) {

for(k=0;k<n/p;k++)

for(l=0;l<n/p;l++)

if(a[k]>b[l])

r[k]=r[k]+1;

enviar a[0]...a[n/p-1] a P(i-1) mod p;

recibir en b[0],...,b[n/p-1] de P(i+1) mod p;

} //de for en j

Domingo Gimenez (Universidad de Murcia) 23 / 31

Ejemplo - Ordenacion por rango, con datos distribuidos

En cada Pi, i=0,1,...,p-1

for(j=0;j<n/p;j++)

b[j]=a[j];

for(j=1;j<=p;j++) {

for(k=0;k<n/p;k++)

for(l=0;l<n/p;l++)

if(a[k]>b[l])

r[k]=r[k]+1;

enviar a[0]...a[n/p-1] a P(i-1) mod p;

recibir en b[0],...,b[n/p-1] de P(i+1) mod p;

} //de for en j

¿Puede haber problemas con las comunicaciones?

¿Que coste tiene?

¿Merece la pena hacerlo en paralelo?

Domingo Gimenez (Universidad de Murcia) 23 / 31

Contenido

1 Esquemas algorıtmicos paralelos

2 Paralelismo de datos

3 Particionado de datos

4 Esquemas de descomposicion de datos

5 Trabajo adicional

Domingo Gimenez (Universidad de Murcia) 24 / 31

Descomposicion de matriz unidimensional en array deprocesos

ındice global tamano bloque proceso ındice locali b = ⌈ np ⌉ ⌊ i

b ⌋ i mod b

P0 P1 P2

ındice global 0 1 2 3 4 5 6 7 8ındice local 0 1 2 0 1 2 0 1 2

Domingo Gimenez (Universidad de Murcia) 25 / 31

Descomposicion de matriz bidimensional en array deprocesosDistribucion en bloques de filas:

ındices globales tamano bloque proceso ındices locales(i, j) b = ⌈ np ⌉ filas ⌊ i

b ⌋ (i mod b , j)

Distribucion en bloques de columnas:ındices globales tamano bloque proceso ındices locales

(i, j) b = ⌈ np ⌉ columnas ⌊jb ⌋ (i, j mod b)

Domingo Gimenez (Universidad de Murcia) 26 / 31

Descomposicion de matriz bidimensional en mallabidimensional de procesos

ındices globales tamano bloque proceso ındices locales

(i, j) bx × by = ⌈ npx⌉ × ⌈ m

py⌉

(

⌊ ipx⌋, ⌊

jpy⌋

)

(i mod bx , j mod by)

Domingo Gimenez (Universidad de Murcia) 27 / 31

Distribucion cıclicaDistribucion cıclica (#pragma omp parallel forschedule(static,1)):

Distribucion cıclica por bloques (#pragma omp parallel forschedule(static,3)):

de matriz:

Domingo Gimenez (Universidad de Murcia) 28 / 31

Distribucion cıclica por bloques

Es general: comprende al resto con los valores correspondientes detamanos de bloque y de malla de procesos.Tamano de bloque reducido suele producir mejor balanceo, peropuede producir mas comunicaciones⇒ necesaria solucion decompromiso.

Domingo Gimenez (Universidad de Murcia) 29 / 31

Contenido

1 Esquemas algorıtmicos paralelos

2 Paralelismo de datos

3 Particionado de datos

4 Esquemas de descomposicion de datos

5 Trabajo adicional

Domingo Gimenez (Universidad de Murcia) 30 / 31

Se pueden consultar las secciones correspondientes y sus ejemplosdel capıtulo 6 del libro de Introduccion a la Programacion Paralela.

Buscar ejemplos de problemas del Concurso de ProgramacionParalela susceptibles de ser resueltos con Paralelismo o Particionadode Datos (ver “resultados del curso anterior” en la presentacion delcurso).

Y pensar como podrıan implementarse los ejemplos vistos en estasesion.

En las sesiones de pr acticas se propondran problemas pararesolverlos con algunos de los paradigmas vistos en teorıa.

Domingo Gimenez (Universidad de Murcia) 31 / 31