Definición y justificación Programas paralelos Algoritmos paralelos Rendimiento

36
Definici´onyjustificaci´on Programas paralelos Algoritmos paralelos Rendimiento Introducci´ on a la programaci´on paralela Colaboratorio Nacional de Computaci´ on Avanzada (CNCA) 2014

Transcript of Definición y justificación Programas paralelos Algoritmos paralelos Rendimiento

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Introduccion a la programacion paralela

Colaboratorio Nacional de Computacion Avanzada (CNCA)

2014

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Contenidos

1 Definicion y justificacion

2 Programas paralelosAnalisis del problemaEstrategias de paralelizacion

3 Algoritmos paralelos

4 Rendimiento

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Definicion

Estudio, diseno, analisis e implementacion de algoritmos que realizan mas de unatarea por unidad de tiempo.

Involucra el uso de multiples procesadores y, por lo general, mucha memoria.

Paradigma para la modelacion computacional, util para muchas disciplinascientıficas.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Definicion

Estudio, diseno, analisis e implementacion de algoritmos que realizan mas de unatarea por unidad de tiempo.

Involucra el uso de multiples procesadores y, por lo general, mucha memoria.

Paradigma para la modelacion computacional, util para muchas disciplinascientıficas.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Definicion

Estudio, diseno, analisis e implementacion de algoritmos que realizan mas de unatarea por unidad de tiempo.

Involucra el uso de multiples procesadores y, por lo general, mucha memoria.

Paradigma para la modelacion computacional, util para muchas disciplinascientıficas.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Justificacion

El mundo natural es paralelo; muchos eventos complejos sucedensimultaneamente y se relacionan entre sı. Ej:

Formacion de galaxiasCambio climaticoEnsamblaje de automoviles

Permite trabajar con problemas complejos, impracticos o imposibles para un soloCPU.

Lımites de la computacion secuencial:

Velocidad de transimision depende del medio fısico y la proximidad de loscomponentesMiniaturizacion limitada, aunque sea en escala atomica.Limitaciones economicas: multiples CPUs de bajo costo vs. 1 CPU extremadamenterapido.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Justificacion

El mundo natural es paralelo; muchos eventos complejos sucedensimultaneamente y se relacionan entre sı. Ej:

Formacion de galaxiasCambio climaticoEnsamblaje de automoviles

Permite trabajar con problemas complejos, impracticos o imposibles para un soloCPU.

Lımites de la computacion secuencial:

Velocidad de transimision depende del medio fısico y la proximidad de loscomponentesMiniaturizacion limitada, aunque sea en escala atomica.Limitaciones economicas: multiples CPUs de bajo costo vs. 1 CPU extremadamenterapido.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Justificacion

El mundo natural es paralelo; muchos eventos complejos sucedensimultaneamente y se relacionan entre sı. Ej:

Formacion de galaxiasCambio climaticoEnsamblaje de automoviles

Permite trabajar con problemas complejos, impracticos o imposibles para un soloCPU.

Lımites de la computacion secuencial:

Velocidad de transimision depende del medio fısico y la proximidad de loscomponentesMiniaturizacion limitada, aunque sea en escala atomica.Limitaciones economicas: multiples CPUs de bajo costo vs. 1 CPU extremadamenterapido.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Tipos de problemas

Trivialmente paralelizables:

Pocas o ninguna dependencia funcionalNo hay dependencias de datosRequieren mınima comunicacion

Fuertemente acoplados:

Fuertes dependencias estructurales y/o fucionales.Requieren comunicacion y sincronizacion.

Hıbridos

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Tipos de problemas

Trivialmente paralelizables:

Pocas o ninguna dependencia funcionalNo hay dependencias de datosRequieren mınima comunicacion

Fuertemente acoplados:

Fuertes dependencias estructurales y/o fucionales.Requieren comunicacion y sincronizacion.

Hıbridos

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Tipos de problemas

Trivialmente paralelizables:

Pocas o ninguna dependencia funcionalNo hay dependencias de datosRequieren mınima comunicacion

Fuertemente acoplados:

Fuertes dependencias estructurales y/o fucionales.Requieren comunicacion y sincronizacion.

Hıbridos

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Identificacion del paralelismo

El significado de un programa se define en terminos de su implementacionsecuencial: ambos producen los mismos resultados.

Determinar cuando dos o mas calculos de un programa secuencial puedenejecutarse en paralelo preservando los resultados finales.

Ejemplo 1: paralelizar calculos que no comparten datos.

Ejemplo 2: paralelizar calculos con datos compartidos que solamente son leıdos(no modificados).

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Identificacion del paralelismo

El significado de un programa se define en terminos de su implementacionsecuencial: ambos producen los mismos resultados.

Determinar cuando dos o mas calculos de un programa secuencial puedenejecutarse en paralelo preservando los resultados finales.

Ejemplo 1: paralelizar calculos que no comparten datos.

Ejemplo 2: paralelizar calculos con datos compartidos que solamente son leıdos(no modificados).

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Identificacion del paralelismo

El significado de un programa se define en terminos de su implementacionsecuencial: ambos producen los mismos resultados.

Determinar cuando dos o mas calculos de un programa secuencial puedenejecutarse en paralelo preservando los resultados finales.

Ejemplo 1: paralelizar calculos que no comparten datos.

Ejemplo 2: paralelizar calculos con datos compartidos que solamente son leıdos(no modificados).

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Identificacion del paralelismo

El significado de un programa se define en terminos de su implementacionsecuencial: ambos producen los mismos resultados.

Determinar cuando dos o mas calculos de un programa secuencial puedenejecutarse en paralelo preservando los resultados finales.

Ejemplo 1: paralelizar calculos que no comparten datos.

Ejemplo 2: paralelizar calculos con datos compartidos que solamente son leıdos(no modificados).

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Identificacion del paralelismo

Dos calculos C1 y C2 pueden ser ejecutados en paralelo sin sincronizacion si y solo si:

1 C1 no modifica en una region que es leıda posteriormente por C2. Conocido comoLectura tras escritura (RAW, read-after-write).

2 C1 no lee una region que luego es modificada por C2. Conocido como Escrituratras lectura (WAR, write-after-read).

3 C1 no modifica una region que luego es sobreescrita por C2. Conocido comoEscritura tras escritura (WAW, write-after-write).

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Identificacion del paralelismo

Dos calculos C1 y C2 pueden ser ejecutados en paralelo sin sincronizacion si y solo si:

1 C1 no modifica en una region que es leıda posteriormente por C2. Conocido comoLectura tras escritura (RAW, read-after-write).

2 C1 no lee una region que luego es modificada por C2. Conocido como Escrituratras lectura (WAR, write-after-read).

3 C1 no modifica una region que luego es sobreescrita por C2. Conocido comoEscritura tras escritura (WAW, write-after-write).

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Identificacion del paralelismo

Dos calculos C1 y C2 pueden ser ejecutados en paralelo sin sincronizacion si y solo si:

1 C1 no modifica en una region que es leıda posteriormente por C2. Conocido comoLectura tras escritura (RAW, read-after-write).

2 C1 no lee una region que luego es modificada por C2. Conocido como Escrituratras lectura (WAR, write-after-read).

3 C1 no modifica una region que luego es sobreescrita por C2. Conocido comoEscritura tras escritura (WAW, write-after-write).

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Representacion de datos

Los datos pueden ser representados en forma homologa a las arquitecturas:Memoria compartida:

Los datos residen en la memoria global

Multiples hilos manipulan las estructuras de datos

La escritura debe ser sincronizada

Permite utilizar paralelismo de grano fino

Memoria distribuida:

Los datos estan distribuidos en espacios de memoria independientes

Un proceso accede solo su memoria local

Requiere comunicacion para lectura y escritura de datos remotos, usualmente atraves de paso de mensajes

Por lo general utiliza paralelismo de grano grueso

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Representacion de datos

Los datos pueden ser representados en forma homologa a las arquitecturas:Memoria compartida:

Los datos residen en la memoria global

Multiples hilos manipulan las estructuras de datos

La escritura debe ser sincronizada

Permite utilizar paralelismo de grano fino

Memoria distribuida:

Los datos estan distribuidos en espacios de memoria independientes

Un proceso accede solo su memoria local

Requiere comunicacion para lectura y escritura de datos remotos, usualmente atraves de paso de mensajes

Por lo general utiliza paralelismo de grano grueso

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Granularidad

Grano fino:

Poco trabajo computacional entre cada evento de sincronizacion

Relacionado con memoria compartida, hilos y tecnologıas como OpenMP.

Grano grueso:

Mucho trabajo computacional entre cada sincronizacion.

Enfocado en la distribucion inicial de datos y procesamiento pesado

Relacionado con computacion cluster, memoria distribuida, procesos y tecnologıascomo MPI.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Granularidad

Grano fino:

Poco trabajo computacional entre cada evento de sincronizacion

Relacionado con memoria compartida, hilos y tecnologıas como OpenMP.

Grano grueso:

Mucho trabajo computacional entre cada sincronizacion.

Enfocado en la distribucion inicial de datos y procesamiento pesado

Relacionado con computacion cluster, memoria distribuida, procesos y tecnologıascomo MPI.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Modelos de bajo nivel

Hilos Datos Tareas

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Modelos de alto nivel

SPMD MPMD

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Medidas de Rendimiento

Aceleracion: tiempo secuencial / tiempo paralelo

S = Ts/Tp

Amdahl: S = Ts(1−r)Ts+rTs/p

= 1(1−r)+r/p

Aceleracion maxima: P = TsT∞

, T∞ ruta crıtica. P paralelismo de un algoritmo.

Si S = p, es decir Tp = Ts/p entonces la aceleracion es lineal.

Aceleracion supralineal: Tp < Ts/p. ¿Por que?

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Medidas de Rendimiento

Eficiencia: aceleracion / procesadores

E = S/p = Ts/pTp

Trabajo: tiempo de ejecucion total

Ws = Ts

Wp =p∑

i=1Wi = pTp

Overhead: trabajo paralelo que no forma parte del secuencial

To = pTp − Ts

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Medidas de rendimiento

Escalabilidad: capacidad del algoritmo (paralelo) para mejorar su rendimiento cuandoutiliza mas recursos.Un algoritmo es escalable si incrementa su rendimiento en forma proporcional a losrecursos disponibles. O bien, si se incrementa el tamano del problema y los recursis, laeficiencia permanece igual.

Es posible redefinir eficiencia en terminos de overhead:

E(n, p) = Ts(n,p)To(n,p)+Ts(n,p)

= 1To(n,p)/Ts(n,p)+1

Eficiencia esta determinada por el overhead.

Si n aumenta igual que p (1:1), la eficiencia decrece si To crece mas rapidamenteque n = p.

Objetivo: encontrar funcion que determine el crecimiento de n con respecto a p deforma que E sea constante.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Medidas de rendimiento

Escalabilidad: capacidad del algoritmo (paralelo) para mejorar su rendimiento cuandoutiliza mas recursos.Un algoritmo es escalable si incrementa su rendimiento en forma proporcional a losrecursos disponibles. O bien, si se incrementa el tamano del problema y los recursis, laeficiencia permanece igual.Es posible redefinir eficiencia en terminos de overhead:

E(n, p) = Ts(n,p)To(n,p)+Ts(n,p)

= 1To(n,p)/Ts(n,p)+1

Eficiencia esta determinada por el overhead.

Si n aumenta igual que p (1:1), la eficiencia decrece si To crece mas rapidamenteque n = p.

Objetivo: encontrar funcion que determine el crecimiento de n con respecto a p deforma que E sea constante.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Medidas de rendimiento

Escalabilidad: capacidad del algoritmo (paralelo) para mejorar su rendimiento cuandoutiliza mas recursos.Un algoritmo es escalable si incrementa su rendimiento en forma proporcional a losrecursos disponibles. O bien, si se incrementa el tamano del problema y los recursis, laeficiencia permanece igual.Es posible redefinir eficiencia en terminos de overhead:

E(n, p) = Ts(n,p)To(n,p)+Ts(n,p)

= 1To(n,p)/Ts(n,p)+1

Eficiencia esta determinada por el overhead.

Si n aumenta igual que p (1:1), la eficiencia decrece si To crece mas rapidamenteque n = p.

Objetivo: encontrar funcion que determine el crecimiento de n con respecto a p deforma que E sea constante.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Medidas de rendimiento

Escalabilidad: capacidad del algoritmo (paralelo) para mejorar su rendimiento cuandoutiliza mas recursos.Un algoritmo es escalable si incrementa su rendimiento en forma proporcional a losrecursos disponibles. O bien, si se incrementa el tamano del problema y los recursis, laeficiencia permanece igual.Es posible redefinir eficiencia en terminos de overhead:

E(n, p) = Ts(n,p)To(n,p)+Ts(n,p)

= 1To(n,p)/Ts(n,p)+1

Eficiencia esta determinada por el overhead.

Si n aumenta igual que p (1:1), la eficiencia decrece si To crece mas rapidamenteque n = p.

Objetivo: encontrar funcion que determine el crecimiento de n con respecto a p deforma que E sea constante.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Producto punto (secuencial)

Algorithm 1 Producto punto

1: Sean a y b vectores2: N = ||a||3: producto = 04: for i = 0 : N do5: producto += ai · bi6: end for7: Retornar producto

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Paralelizacion del Producto punto

Cada producto es independiente de los demas

La suma y el producto son operaciones lineales:n∑

i=1aibi =

k∑i=1

aibi + · · ·+n∑

i=k

aibi

Si tenemos p procesadores y vectores de norma n, podemos asignar a cadaprocesador n/p elementos, para luego sumar las sumas parciales de cadaprocesador.

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Paralelizacion del Producto punto

Algorithm 2 Producto punto paralelo

1: p = cantidad de procesadores2: a y b vectores3: N = ||a||4: n = N/p5: Declarar nuevos vectores a local y b local de norma n6: Distribuir n elementos de a a cada proceso y guardarlos en a local7: Distribuir n elementos de b a cada proceso y guardarlos en b local8: producto local = 09: for i = 0 : n do

10: producto local+ = a locali · b locali11: end for12: Reducir producto local en producto13: Retornar producto

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Analisis

Sin comunicacion:

Declaracion de vectores locales: 1

Producto punto: p · n local = n

S = nn/p = p

E = np·(n/p) = 1

Comunicacion (Modelo de Hockney):

Distribucion de vectores: 2Tcom(n) = 2p(α+ βn)

Reduccion: Tcom(p) = (α+ βp)

Tiempo computacional:

T (n) = n+ 2p(α+ βn) + (α+ βp) + 1

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Analisis

Sin comunicacion:

Declaracion de vectores locales: 1

Producto punto: p · n local = n

S = nn/p = p

E = np·(n/p) = 1

Comunicacion (Modelo de Hockney):

Distribucion de vectores: 2Tcom(n) = 2p(α+ βn)

Reduccion: Tcom(p) = (α+ βp)

Tiempo computacional:

T (n) = n+ 2p(α+ βn) + (α+ βp) + 1

Definicion y justificacion Programas paralelos Algoritmos paralelos Rendimiento

Analisis

Sin comunicacion:

Declaracion de vectores locales: 1

Producto punto: p · n local = n

S = nn/p = p

E = np·(n/p) = 1

Comunicacion (Modelo de Hockney):

Distribucion de vectores: 2Tcom(n) = 2p(α+ βn)

Reduccion: Tcom(p) = (α+ βp)

Tiempo computacional:

T (n) = n+ 2p(α+ βn) + (α+ βp) + 1