Algoritmos genéticos con edades para resolver el problema ...
Definición y justificación Programas paralelos Algoritmos paralelos Rendimiento
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