Transcript
Page 1: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Resolución de problemas en paralelo

Algoritmos ParalelosTema 1. Introducción a la computación paralela

(segunda parte)

Vicente Cerverón – Universitat de València

Page 2: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 34

Descomposición de problemas

• El primer paso para diseñar un algoritmo paralelo es descomponer el problema en problemas más pequeños. Estos subproblemas son asignados a procesadores para ser resueltos simultáneamente.

Básicamente hay dos tipos de descomposición

1. Descomposición de dominio2. Descomposición funcional

Resolución de problemas en paralelo

Page 3: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 35

• En la descomposición de dominio, también llamada paralelismo de datos, los datos son divididos en partes de aproximadamente el mismo tamaño y las partes son asignadas a diferentes procesadores. Cada procesador trabaja sólo com la parte de datos que le son asignados. Por supuesto, los procesadores pueden necesitar comunicarse para intercambiar datos.

• El paralelismo de datos permite mantener un flujo único de control y seguir el modelo SPMD (single program multipledata). El algoritmo con paralelismo de datos consiste en una secuencia de instrucciones aplicadas a distintos datos.

Descomposición de dominio

Page 4: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 36

• La estrategia de descomposición de dominio puede no ser la más eficiente cuando las partes asignadas a los diferentes procesadores pueden requerir tiempos de proceso significativamente diferentes de unos a otros, sin que dichas diferencias puedan ser conocidas previamente. En tal caso el tiempo de ejecución viene determinado por el proceso que tarde más, mientras que los otros procesadores permanecen ociosos un tiempo.

• La descomposición funcional o paralelismo de tareas (también reparto dinámico de tareas) el problema se divide en un gran número de partes más pequeñas (muchas más partes que procesadores disponibles) y las subtareas son asignadas a los procesadores disponibles. Tan pronto como un procesador termina una subtarea, recibe otra subtarea hasta que queden resueltas todas.

• El paralelismo de tareas se implementa sobre un paradigma de maestro y esclavos. El proceso maestro va asignando las subtareas a los procesos esclavos, recogiendo los resultados producidos y asignando subtareas restantes.

Descomposición funcional

Page 5: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 37

Los paradigmas de programación no están unívocamente ligados a las arquitecturas paralelas, aunque sí que guarden relación como se indicará, existen dos paradigmas principales de programar computadores paralelos:

• Programación paralela mediante memoria compartida (espacio de direcciones único)

• Programación paralela mediante paso de mensajes

Paradigmas de programación paralela

Page 6: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 38

• El programador escribe el programa, bien empleando directivas de paralelismo de datos bien asumiendo explícitamente diferentes procesos que pueden acceder a un espacio de direcciones único, con variables globales compartidas.

• Este paradigma es apropiado para arquitecturas de memoria compartida, aunque el espacio de direcciones único también puede ser simulado sobre arquitecturas de memoria distribuida.

Programación paralela mediante Programación paralela mediante Programación paralela mediante Programación paralela mediante

memoria compartidamemoria compartidamemoria compartidamemoria compartida

Page 7: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 39

• El programador explícitamente divide el trabajo y los datos entre varios procesos y debe gestionar la comunicación de datos entre ellos.

• Esta aproximación es completamente flexible, si bien requiere un mayor trabajo del programador. Puede ser empleado en arquitecturas de memoria distribuida e incluso en redes de ordenadores, y también en arquitecturas de memoria compartida, aunque en ese caso los diferentes procesos utilizan partes de memoria independientes y separadas.

Programación paralela mediante Programación paralela mediante Programación paralela mediante Programación paralela mediante

paso de mensajespaso de mensajespaso de mensajespaso de mensajes

Page 8: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 40

Métricas

• Concurrencia• Tiempo de ejecución

paralelo• Coste paralelo• Trabajo• Aceleración• Eficiencia

Análisis de algoritmos paralelos

Conceptos

• Optimalidad• Granularidad• Sobrecostes• Ley de Amdahl• Ley de Gustaffon

Page 9: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 41

Aceleración (speed-up)

donde ts es el tiempo de ejecución en un procesador secuencial y tp es el tiempo de ejecución en un computador paralelo.

Debe usarse el tiempo del mejor algoritmo secuencial conocido. El algoritmo para la implementación paralela puede ser diferente.

Puede usarse el tiempo (real) o el estimado por número de pasos

Análisis de algoritmos paralelos

S(p) = Execution time using one processor (best sequential algorithm)

Execution time using a multiprocessor with p processors

ts

tp=

Page 10: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 42

Aceleración máxima

La aceleración máxima es usualmente p con p procesadores (aceleración lineal).

Es posible tener aceleración superlineal (mayor quep) pero sólo en casos específicos debidos:

• Mayor disponibilidad de memoria principal• Algoritmos no deterministas

Análisis de algoritmos paralelos

Page 11: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 43

Aceleración según la ley de Amdahl

Análisis de algoritmos paralelos

Serial section Parallelizable sections

(a) One processor

(b) Multipleprocessors

fts (1 - f)ts

ts

(1 - f)ts /ptp

p processors

Page 12: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 44

Análisis de algoritmos paralelos

Aceleración según la ley de Amdahl

S(p) = ts p

=fts + (1 − f )ts /p 1 + (p − 1)f

4

8

12

16

20

4 8 12 16 20

f = 20%

f = 10%

f = 5%

f = 0%

Number of processors, p

Page 13: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 45

El principal objetivo cuando se diseña un algoritmo paralelo y se escribe un programa paralelo es conseguir mejores prestaciones que una versión secuencial.

Para ello hay que tener varios aspectos en consideración:

• equilibrado de la carga• minimización de las comunicaciones• solapamiento de computación y comunicaciones

Aspectos de programación paralela

Page 14: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 46

Equilibrado de la carga

El equilibrado de la carga es la labor de dividir equitativamente el trabajo entre los procesadores disponibles.

Puede ser inmediato cuando el coste de las operaciones es el mismo para cada dato, en cuyo caso se procede a un simple paralelismo de datos, o no tanto cuando el tiempo de proceso depende de los valores de los datos.

Aspectos de programación paralela

Page 15: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 47

Minimización de las comunicaciones

El tiempo total para completar la ejecución es la preocupación principal de la programación paralela, y en él intervienen tres componentes:

* tiempo de computación* tiempo ocioso (idle time)* tiempo de comunicación

Aspectos de programación paralela

Page 16: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 48

Minimización de las comunicacionesEl tiempo de computación es el tiempo empleado en realizar cálculos

sobre los datos. Idealmente, esperaríamos que al disponer de P procesadores trabajando sobre un problema pudiésemos terminar el trabajo en una fracción de 1/P del tiempo empleado en un procesador secuencial. Este sería el caso si todo el tiempo de todos los procesadores pudiera ser empleado en realizar cálculos.

El tiempo ocioso (idle time) es el tiempo que un procesador gasta esperando datos de otros procesadores. Durante este tiempo el procesador no realiza trabajo útil. También existen tiempos ociosos cuando determinada subsecuencia del problema no puede ser dividida entre los procesadores disponibles y sólo puede ser realizada por un procesador o un subconjunto de ellos.

El tiempo de comunicación es el tiempo empleado en enviar y recibir datos en forma de mensajes. El coste de las comunicaciones en eltiempo total de ejecución puede ser expresado en términos de latencia y ancho de banda, siendo la latencia el tiempo necesario para preparar el envío de cada mensaje y el ancho de banda la velocidad de transmisión por dato de los que forman el mensaje. Los programas secuenciales no emplean comunicaciones entre procesos, por lo que debe minimizarse siempre el tiempo de comunicaciones que supone en todo caso un sobrecoste.

Aspectos de programación paralela

Page 17: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 49

Solapamiento de computación y comunicaciones

Siempre que sea posible, deben evitarse los tiempos ociosos, procurando que los procesadores realicen cálculos útiles mientras esperan datos necesarios provenientes de otros procesadores.

Esto, que se puede conseguir mediante métodos de comunicación no bloqueantes, es siempre difícil y no existen modos generales de conseguirlo, diseñándose en cada caso para cada algoritmo.

Aspectos de programación paralela

Page 18: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 50

• Emplearemos pseudocódigo para describir los algoritmos paralelos para poder analizarlos, como paso previo a su programación

• El pseudocódigo será sencillo, pero a la vez parecido a los lenguajes y estructuras que se usarán en la programación (codificación) paralela

• Existirán dos maneras de emplear pseudocódigo, según sea:– para memoria compartida (espacio de direcciones único)– para paso de mensajes

• Lo ejemplificamos con el problema de sumar con P proceos los N elementos de un vector

Descripción de algoritmos en pseudocódigo

Page 19: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 51

• Para el paradigma de memoria compartida (1)

Pk (programa que ejecutará el proceso k, siendo k de 0 a P-1)

variables globalesv[N], suma, sumaparcial[P]

iniciosumaparcial[k] = v[k*N/P]

desde i=1 hasta N/P-1 con i++sumaparcial[k] = sumaparcial[k] + v[k*N/P + i]

(sigue …)

Descripción de algoritmos en pseudocódigo

Page 20: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 52

• Para el paradigma de memoria compartida (2)(continuación …)

desde salto=1 hasta P/2 con salto*=2si k MOD 2*salto == 0

sumaparcial[k] = sumaparcial[k] + sumaparcial[k + salto]

si k==0suma = sumaparcial[0]

fin

Descripción de algoritmos en pseudocódigo

Page 21: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 53

• Para el paradigma de paso de mensajes (1)

Pk (programa que ejecutará el proceso k, siendo k de 0 a P-1)

variablesv[N/P], suma, aux

iniciosuma = v[0]

desde i=1 hasta N/P-1 con i++suma = suma + v[i]

(sigue …)

Descripción de algoritmos en pseudocódigo

Page 22: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 54

• Para el paradigma de paso de mensajes (2)(continuación …)

desde salto=1 hasta P/2 con salto*=2si k MOD 2*salto == 0

recibir(k+salto, REF aux)suma = suma + aux

si_no si k MOD salto == 0enviar(k-salto, suma)

fin

En este caso la súma total sólo la sabrá el P0

Descripción de algoritmos en pseudocódigo

Page 23: Resolución de problemas en paralelo - informatica.uv.esinformatica.uv.es/iiguia/ALP/materiales/1_2_a_ComputacionParalela.pdf · procesadores para ser resueltos simultáneamente

Introducción a la Computación Paralela 55

• Ejercicio: resolver la suma mediante paso de mensajes para que todos los procesos acaben conociendo la suma total

• Ejercicio: resolver mediante los dos paradigmas de programación paralela el problema de normalizar un vector, esto es, dividir cada uno de sus componentes por su módulo (la raíz cuadrada de la suma de los cuadrados de cada elemento)

Fin del tema 1

Descripción de algoritmos en pseudocódigo


Recommended