Metodolog a de la Programaci n Paralela...

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

Transcript of Metodolog a de la Programaci n Paralela...

Page 1: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

Metodologıa de la Programacion Paralela2015-2016

Facultad Informatica, Universidad de Murcia

Esquemas algorıtmicosparalelos - Particionado y

Paralelismo de Datos

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 1 / 31

Page 2: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 2 / 31

Page 3: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 3 / 31

Page 4: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 4 / 31

Page 5: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

SesionesLos agruparemos en 5 sesiones de teorıa y las correspondientes depracticas:

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) Curso 2015-2016 5 / 31

Page 6: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 6 / 31

Page 7: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 7 / 31

Page 8: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 8 / 31

Page 9: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

Ejemplos

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

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 9 / 31

Page 10: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

Ejemplos

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

Claramente la multiplicacion de matrices¿Caracterısticas?

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 9 / 31

Page 11: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 9 / 31

Page 12: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

Ejemplo - Suma de n datosEsquema secuencial:

s=0;

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

s=s+a[i];

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 10 / 31

Page 13: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

Ejemplo - Suma de n datosEsquema secuencial:

s=0;

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

s=s+a[i];

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

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 10 / 31

Page 14: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

Ejemplo - Suma de n datosEsquema secuencial:

s=0;

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

s=s+a[i];

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

Con pragma:

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) Curso 2015-2016 10 / 31

Page 15: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

Ejemplo - Suma de n datosEsquema secuencial:

s=0;

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

s=s+a[i];

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

Con pragma:

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 procesadores,con clausula schedule: bloques contiguos, cıclica, dinamica.

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 10 / 31

Page 16: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

Ejemplo - Suma de n datosEsquema secuencial:

s=0;

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

s=s+a[i];

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

Con pragma:

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 procesadores,con clausula schedule: bloques contiguos, cıclica, dinamica.

¿Cual es la mejor manera de ejecutarlo? ¿Merece la penaparalelizar?

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 10 / 31

Page 17: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 11 / 31

Page 18: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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?

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 11 / 31

Page 19: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 12 / 31

Page 20: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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?¿Como situarlos en su posicion?¿Que pasa si dos datos son iguales?¿Se pueden colapsar los dos bucles?

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 12 / 31

Page 21: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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;

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 13 / 31

Page 22: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 14 / 31

Page 23: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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];

}

¿Por que en los ejemplos usabamos arrays unidimensionales y unavariable s para acumular el producto escalar?

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 14 / 31

Page 24: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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];

}

¿Por que en los ejemplos usabamos arrays unidimensionales y unavariable s para acumular el producto escalar?

Se pueden mejorar las prestaciones con algoritmos por bloques,vectorizacion, reordenacion de bucles...

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 14 / 31

Page 25: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 15 / 31

Page 26: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 16 / 31

Page 27: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 17 / 31

Page 28: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 18 / 31

Page 29: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 19 / 31

Page 30: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

Ejemplos

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

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 20 / 31

Page 31: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 20 / 31

Page 32: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 20 / 31

Page 33: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

Ejemplo - Suma de n datos

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

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 21 / 31

Page 34: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

Ejemplo - Suma de n datos

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

Cada proceso sumara np datos.

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 21 / 31

Page 35: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

Ejemplo - Suma de n datos

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

Cada proceso sumara np datos.

Necesarias comunicaciones:

◮ Envıo de np datos a cada proceso.

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

◮ Acumulacion de los resultados.◮ Parte secuencial de sumar las sumas parciales.◮ Dependen de la topologıa logica de procesos y de las funciones de

comunicacion que se usen (¿Cuales usarıamos?)

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 21 / 31

Page 36: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 22 / 31

Page 37: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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

En particionado de datos puede ser:

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 22 / 31

Page 38: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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

En particionado de datos puede ser:

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) Curso 2015-2016 22 / 31

Page 39: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 23 / 31

Page 40: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 23 / 31

Page 41: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 24 / 31

Page 42: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 25 / 31

Page 43: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 26 / 31

Page 44: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 27 / 31

Page 45: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 28 / 31

Page 46: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 29 / 31

Page 47: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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) Curso 2015-2016 30 / 31

Page 48: Metodolog a de la Programaci n Paralela 2015-2016dis.um.es/~domingo/apuntes/AlgProPar/1617/ParDatos.pdf · Distribucion del trabajo entre los hilos ... Ejemplo - Multiplicacion de

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 del22 de septiembre).

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

En la sesion de pr acticas se propondran uno o dos problemas paraabordarlos con los paradigmas presentados.

Domingo Gimenez (Universidad de Murcia) Curso 2015-2016 31 / 31