0% encontró este documento útil (0 votos)
3 vistas9 páginas

Metodología APOD para Programación Paralela

Cargado por

cuentaspamusa
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas9 páginas

Metodología APOD para Programación Paralela

Cargado por

cuentaspamusa
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Programación paralela

APOD

José M. Cecilia
APOD
APOD (Assess, Parallelize, Optimize, Deploy)
Metodología de desarrollo para aplicaciones
que se quieren acelerar.
Ciclo de vida iterativo.
 4 etapas: Evaluar, Paralelizar,
Optimizar y Desplegar.
Evaluación
 Evaluar el código objeto de aceleración.
 Identificar dónde se consume la mayor parte del
tiempo -> Cuello de botella.
 Ver si esa parte es significativa respecto al tiempo
total de la aplicación.
 La evaluación es fundamental en todos los pasos
de APOD.
Evaluación: Profilers
 Confirmar hipótesis.
 Usar múltiples conjuntos heterogéneos de datos.
 Usar cargas de datos realistas.
 Utilizar herramientas como gprof y Vtune para analizar
el código.
 Temporizadores (cudaEvent) y Nsight para VS.
 El rendimiento de la aplicación cuando se ejecuta un
profiling se puede ver afectado
Escalado de las aplicaciones
 Si 1 core = 10 seg; ¿2 cores = 5 seg? ¿2x speed-up?
 Strong scaling o Ley de Amdahl -> Corto plazo
 ¿Qué speed-up obtengo al añadir más procesadores?
 Weak scaling o Ley de Gustafson -> Largo plazo
 ¿Qué speed-up obtengo al añadir más procesadores
pero si vario las condiciones de entrada del problema?
Paralelización
 Elegir el lenguaje de programación
(OpenMP, MPI, CUDA,…) ->
depende de la plataforma objetivo.
 Paralelizar:
 Usar librerías (BLAS, CUDA, FFT,
cuSPARSE)
 Usar compiladores paralelizantes (-
O3, --Parallel).
 Paralelización utilizando el lenguaje
nativo.
Optimizar
Todo es rendimiento -> Medir rendimiento.
Seguir prácticas adecuadas:
 Elección de algoritmos, movimiento de datos,
conocimiento del hardware.
Utilizar profilers.
Desplegar
Ser evolucionario y no revolucionario.
Obtener beneficios pronto y notables.
Codificar pensando en los errores.
Información de depuración
GRACIAS

También podría gustarte