1 / 60

APLICACIONES MULTIMEDIA: USO EFICIENTE DE RECURSOS PARALELOS EN ARQUITECTURAS MODERNAS

LA TRANFORMADA WAVELET COMO CASO DE ESTUDIO. APLICACIONES MULTIMEDIA: USO EFICIENTE DE RECURSOS PARALELOS EN ARQUITECTURAS MODERNAS. Christian Tenllado van der Reijden. Dpto. Arquitectura de Computadores y Automática Universidad Complutense de Madrid. Quienes han participado. Manuel Prieto

kiana
Download Presentation

APLICACIONES MULTIMEDIA: USO EFICIENTE DE RECURSOS PARALELOS EN ARQUITECTURAS MODERNAS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LA TRANFORMADA WAVELET COMO CASO DE ESTUDIO APLICACIONES MULTIMEDIA: USO EFICIENTE DE RECURSOS PARALELOS EN ARQUITECTURAS MODERNAS Christian Tenllado van der Reijden. Dpto. Arquitectura de Computadores y Automática Universidad Complutense de Madrid

  2. Quienes han participado • Manuel Prieto • Luis Piñuel • Daniel Chaver • Carlos García • Roberto Lario • Christian Tenllado

  3. Qué voy a contar • JPEG2000: un vistazo al estándar. • La Transformada Wavelet Discreta • Procesadores Superescalares • El problema de la Memoria • Procesamiento vectorial en un superescalar: Extensiones SIMD • Nuevas estrategias de memoria para Lifting. • Paralelismo a nivel de Thread dentro del chip: SMT • Coprocesadores de flujos (streams): la GPU • Y... ¿hay más?

  4. JPEG2000: un vistazo al estándar • Nuevo estándar de compresión del Joint Photographics Expert Group. • Sucesor del antiguo JPEG • Añade nuevas características: • Compresión por bloques con o sin pérdidas. • Mejora tasa de compresión y calidad de imagen. • Soporta la codificación de regiones de interés. • Recuperación progresiva por nivel de detalle. • La Transformada Wavelet: • fundamental para conseguir estos objetivos • Sustituye a la transformada del coseno del JPEG.

  5. Ajusta el rango dinámico de la entrada, centrándolo en cero Cambia de RGB a YCrCb Transformada Wavelet Discreta (DWT):entera o real Cuantización en caso de DWT real Codificación tipo EZW y SPIHT Empaquetado JPEG2000: un vistazo al estándar Rate Control Original Image Coded Image Forward Intercomponent Transfrom Forward Intracomponent Transfrom Tier-1 Encoder Tier-2 Encoder Preprocessing Quantization Coded Image Inverse Intracomponent Transfrom Inverse Intercomponent Transfrom Tier-1 Dencoder Tier-2 Dencoder Postprocessing Dequantization Reconstructed Image

  6. JPEG2000: un vistazo al estándar • Profiling Jasper: Implementación de referencia creada por miembros de JPEG

  7. La Transformada Wavelet Discreta • Surge por una doble necesidad: • Poder analizar señales no estacionarias: resolución tiempo-frecuencia. • Aplicar diferentes resoluciones a diferentes frecuencias: análisis de multiresolución. • Ambas propiedades son muy útiles en compresión: • Detectamos cuantos detalles (altas frecuencias) tiene la señal y sabemos donde (localización). • Grandes frecuencias => más resolución. Más coeficientes que representan detalles => “Muchos ceros”.

  8. La Transformada Wavelet Discreta • Dos algoritmos para implementar la 1D-DWT: • Filter-Bank: Basado en operaciones de filtrado lineal y submuestreo con un par de filtros paso baja y paso alta (h,g). • Lifting: Sweldens propone una reestructuración: • reduce el número de cómputos • Menor uso de memoria • Permite versión entera de la transformada • La transformada inversa es casi idéntica • Sin embargo introduce dependencias. • La extensión a 2D se realiza aplicando una 1D primero a cada fila (horizontal) y luego a cada columna (vertical). La vertical procesa el resultado de la horizontal.

  9. Sub-banda de mayor frecuencia Detalle Siguiente sub-banda H(z) 2 Aproximación … G(z) 2 La Transformada Wavelet Discreta • Esquema Filterbank H(z) 2 S(n) G(z) 2

  10. La Transformada Wavelet Discreta for( i=0; i < N; i++) { for(j=0, jj=0; j<N; j+=2,jj++) { mat2i,jj = mat1i,j-1*h0+ mat1i,j*h1 + mat1i,j+1*h0; mat2i,jj+N/2 = mat1i,j-1*g0+ mat1i,j*g1+ mat1i,j+1*g0; } } • Características importantes: • No hay dependencias en entre iteraciones. • Requiere dos matrices. • Aproximaciones y detalles quedan contiguos pero separados.

  11. La Transformada Wavelet Discreta • Extensión 2D: • La matriz se reduce a una cuarta parte cada vez que se desciende un nivel HLn-1 LLn-1 HLn H L LLn LHn-1 HHn-1 L H LHn HHn

  12. La Transformada Wavelet Discreta

  13. Lazzy Transform Predict Update Norm La Transformada Wavelet Discreta • Esquema Lifting: A K1 + 2 + S(n) Bλ(z) A0(z) B1(z) Aλ-1(z) D K2 + z 2 +

  14. La Transformada Wavelet Discreta for( i=0; i < N; i++){ for(j=0, jj=0; j<N; j+=2,jj++){ mati,j+3+= α(mati,j+2+mati,j+4); mati,j+2+= β(mati,j+1+mati,j+3); mati,j+1+= γ(mati,j +mati,j+1); mati,j += δ(mati,j-1 +mati,j+1); mati,j-1 *=ζ; mati,j-2 *= 1/ζ; } } • Características: • Hay dependencias en entre iteraciones. • Puede hacerse en una sola matriz • Aproximaciones y detalles quedan entrelazados: suele requerirse una reordenación.

  15. HL HL LL LL LL LH HH LH HH LH HL HL LL LL LL L H L H L HH HH LH LH LH LL HL LL HL LL La Transformada Wavelet Discreta • Extensión 2D: • Los datos de alta y baja frecuencia quedan entrelazados

  16. Superescalares: El problema de la memoria • El acceso a la memoria es el principal cuello de botella. • La DWT tiene mala localidad en uno de los dos procesos, en función del layout escogido. • Filtrados Vertical y Horizontal no balanceados. Datos lejanos en memoria Datos contiguos en memoria Un layout vertical favorece el procesamiento vertical

  17. Superescalares: El problema de la memoria • Bloqueo (Aggregation) • Layout vertical: column mayor • Filtrado horizontal: no hay dependencias entre filas. • Alteramos el orden de los bucles: barremos en el sentido del layout.

  18. Superescalares: El problema de la memoria • Majorando la localidad espacial: layouts no lineales: 4D y Morton. 4D Layout Filtrado Horizontal con 4D Layout

  19. Superescalares: El problema de la memoria • Reducen significativamente los fallos de cache de L2. • Gran impacto en los fallos por conflicto. • El algoritmo esta limitado por la L2-cache. • 4D y Morton dan resultados similares.

  20. Superescalares: El problema de la memoria • Mejorando la localidad temporal: Pipeline computation • Filtrar verticalmente tan pronto como se pueda. • Sólo es eficiente si el orden de los cómputos es el de aggregation. • Requerimos un buffer auxiliar: para el filtro del ejemplo un buffer de dos columnas • Para imágenes muy grandes el buffer auxiliar puede ser un problema Buffer Auxiliar

  21. Superescalares: El problema de la memoria • Pipeline Computation + 4D layout

  22. Superescalares: El problema de la memoria • Necesitamos un tamaño de buffer auxiliar de tres bloques: independiente del tamaño de la matriz.

  23. Superescalares: El problema de la memoria • Algunos resultados (P-III, imagen de 8192x8192)

  24. Procesamiento vectorial : Extensiones SIMD • Aplicaciones multimedia pueden considerarse Streaming applications. • Encaja con el estilo SIMD (Single Instruction Multiple Data) • Muchos datos son cortos (8 y 16 bits) que en C son previamente convertidos a entero • Las Extensiones Multimedia (MME) surgen inicialmente con el propósito de manejar eficientemente datos cortos (MMX en Pentium II) con un estilo SIMD. • Ponto surge la necesidad de aplicar el mismo concepto a FP (SSE en Pentium III y SSE2 en Pentium 4)

  25. Procesamiento vectorial : Extensiones SIMD • SSE2: MME del Pentium 4 • Ampliación del ISA. • Xmm0-7: nuevos registros independientes de los tradicionales x87-FP. Son de 128 bits. • X87-FP modelo de registros en pila. Xmm es un modelo de registros independientes. • Pueden ser utilizados para operaciones FP escalares. • Instrucciones que permiten al programador modificar el comportamiento de la jerarquía de memoria: prefetching y streaming stores.

  26. OP OP OP OP OP Procesamiento vectorial : Extensiones SIMD Op vectorial X2(SP) X4(SP) X1(SP) X3(SP) 128 Y2(SP) Y4(SP) Y1(SP) Y3(SP) 128 Vector Unit 4 32-bit Integers Zi= Xi OP Yi 8 16-bit Shorts Z2(SP) Z4(SP) Z1(SP) Z3(SP) 16 8-bit Chars 128 xmm0-xmm7 Op escalar X2(SP) X4(SP) X1(SP) X3(SP) 4 32-bit single FP numbers Y2(SP) Y4(SP) Y1(SP) Y3(SP) 2 64-bit double FP numbers Z2(SP) Z4(SP) Z1(SP) Z3(SP)

  27. Procesamiento vectorial : Extensiones SIMD • MME vs Procesadores Vectoriales • Vectores de menor longitud • Unidades de acceso a memoria más limitadas. • No soportan operaciones de Gather/Scatter • En muchos casos los datos deben estar alineados, o si son no alineados el coste de la operación se eleva. • Repertorio de instrucciones menos general y flexible. • MME preparadas para manejar referencias a través de punteros.

  28. * * * * * Procesamiento vectorial : Extensiones SIMD • Técnicas de vectorización • Tradicional: Vectorización del filtro • Problema con SSE: no hay operaciones de reducción en el repertorio bi bi+1 bi+2 bi+3 bi+4 h0 h1 h2 h3 h4 y0 y4 y1 y2 y3 Reducción

  29. Procesamiento vectorial : Extensiones SIMD • Nuestra Propuesta: En lugar de vectorizar el filtro, filtrar en paralelo varias filas/columnas • Sinergia con aggregation si tenemos los datos alineados!!! • Problema: sólo se vectoriza de manera efficiente uno de los dos filtrados (el horizontal con un layout vertical)

  30. Procesamiento vectorial : Extensiones SIMD • ¿Cómo vectorizar con MME? • Ensamblador • Intrínsecas • Compilación: Vectorización guiada • Desambiguación explícita de puteros • Alineación de memoria a 16 bytes. • Simplificación de estructuras de bucle • Indexación simple de vectores. float restrict* a; float restrict* b; float restrict* c; float restrict* d; … #pragma vector aligned for(i=0; i< N; i++) { a[i] = b[i]*c[i]+d[i]; }

  31. No Vectorizado Vectorizado Procesamiento vectorial : Extensiones SIMD • Efectos laterales: • Se reduce el número de instrucciones • Se reduce el número de loads • Consecuencia: mejor aprovechamiento de recursos de planificación

  32. Procesamiento vectorial : Extensiones SIMD • Sinergia SIMD-Memoria: • Vectorización de iteraciones: sólo es eficiente con aggregation y memoria alineada • Con 4D podemos vectorizar los dos filtrados • Utilizamos una técnica de transposición de bloques.

  33. Nuevas estrategias de memoria para Lifting • Lifting puede hacerse inplace • Menos consumo de memoria y menos fallos de cache. • Los datos quedan dispersos => sólo se puede vectorizar el primer nivel de la transformada. • En muchas aplicaciones es necesario un reordenamiento posterior. • Parece interesante modificar el algoritmo para: • Vectorizar todos los niveles: • Colocar los datos finales de forma óptima para el codificador.

  34. InplaMallat Nuevas estrategias de memoria para Lifting • Alternativa: Mallat (propuesta por Chatterjee) • Nuestra Propuesta: Inplace-Mallat Mallat Inplace-Mallat

  35. Nuevas estrategias de memoria para Lifting • Todos los niveles tienen un layout column major • Datos a procesar contiguos • Memoria alineada • Conclusión: se pueden vectorizar todos los niveles • Los datos contiguos por subbandas => Orden óptimo

  36. Nuevas estrategias de memoria para Lifting • Añadiendo 4D podría vectorizarse el filtrado vertical!! Versiones Escalares Versiones Vectoriales

  37. Paralelismo a nivel de Thread dentro del chip: SMT • Estrategias tradicionales para incrementar la eficiencia de los procesadores están llegando a su límite: • Superpipelining • Predicción de saltos • Ejecución superescalar • Ejecución fuera de orden • Han hecho a los procesadores cada vez más complejos, con más transistores y más consumo. • Diseñadores intentan buscar métodos de incrementar el rendimiento a una tasa mayor que el consumo de potencia y el número de transistores.

  38. Paralelismo a nivel de Thread dentro del chip: SMT • Las técnicas de ILP tratan de incrementar el número de instrucciones que pueden procesarse por ciclo. • El problema es encontrar instrucciones suficientes para ejecutar. • Limitado por dependencias • Acceso a la DRAM lento. • El procesador se queda sin instrucciones ejecutar cuando se produce un fallo de cache. • Consecuencia: doblar el número de unidades de ejecución no va a doblar el rendimiento del procesador. • Limitado paralelismo en el flujo de instrucciones

  39. Paralelismo a nivel de Thread dentro del chip: SMT • Solución, extraer paralelismo de otras fuentes. • La mayor parte del software está organizado en threads • Extraer paralelismo entre threads • Alternativas • Chip Multiprocessing: poner dos procesadores completos en un mismo chip. • Permitir que un procesador ejecute varios threads alternando (switching) entre ellos. • Time-slice multithreading • Switch-on-event multithreading • Simultaneous Multi-threading (SMT)

  40. Paralelismo a nivel de Thread dentro del chip: SMT • Simultaneous Multi-threading. • Hace que un procesador físico aparezca como múltiples procesadores lógicos. • Una copia de estado arquitectónico por procesador lógico. • Recursos físicos compartidos: unidades de ejecución, recursos de planificación, lógica de predicción, caches, … • SO y usuarios pueden planificar procesos o threads como si fuesen procesadores físicos convencionales. • Micro-arquitectura: las unidades funcionales estarán procesando simultáneamente instrucciones de distintos threads.

  41. Paralelismo a nivel de Thread dentro del chip: SMT • Multiprocesador tradicional vs SMT processor Arch State Arch State Arch State Arch State Processor Execution Resources Processor Execution Resources Processor Execution Resources Multiprocesador Procesador con SMT

  42. Paralelismo a nivel de Thread dentro del chip: SMT • Implementación Intel: Hyper-threading • Se incrementan menos de un 5% el tamaño del dado y el consumo de potencia • Características de implementación: • Se controlan las colas de acceso a los recursos compartidos • El progreso independiente de cada thread se garantiza: • O bien duplicando las colas: una para cada thread • O bien limitando el número de entradas de las colas compartidas que puede copar un thread

  43. Paralelismo a nivel de Thread dentro del chip: SMT • Recursos que han sido duplicados • Control de acceso a TC y a la microcode ROM • ITLB • Cola de Streaming buffers • GBHR y Return Stack Buffer • RAT’s (tabla de renombrado)

  44. Paralelismo a nivel de Thread dentro del chip: SMT • Recursos compartidos • TC y microcode ROM • Tabla de historia de patrones (PHT) • Uop Queue, la mitad para cada uno. • ROB, load y store buffers (como máximo cada uno puede usar la mitad) • Colas para la etapa de scheduling (memory & general) (como máximo cada uno puede usar la mitad) • Schedulers y las colas de schedulers (limitado el máximo número de etradas por procesador lógico) • DTLB, L1 DC, L2 y L3 caches. • Unidades Funcionales y Registros

  45. Paralelismo a nivel de Thread dentro del chip: SMT • Aplicamos la idea a la DWT • Utilizamos OpenMP para la generación de código multithread • Dos posibles estrategias • Data Partitioning (DP) • La mitad de los datos para cada procesador lógico (grupos de columnas). • El trabajo de ambos procesadores lógicos es el mismo: están balanceados. • Los dos threads compiten por recursos físicos compartidos. • El modelo es “teóricamente escalable”.

  46. Paralelismo a nivel de Thread dentro del chip: SMT • Dos posibles estrategias • Functional Partitioning (FP) • Cada uno de los threads realiza una de las dos funciones principales: Filtrado Horizontal y Filtrado Vertical. • No se compite por la cache de datos • El thread vectorizado va por delante, provocando los fallos de cache • Puede equilibrar ambos threads • Puede haber un efecto de prefetching entre threads • Necesidad de una correcta sincronización: sobrecarga • Modelo sólo escalable si se combinan DP y FP • Sólo puede aplicarse a versiones Inplace e Inplace-Mallat con estrategia pipeline.

  47. Paralelismo a nivel de Thread dentro del chip: SMT • Data Partitioning

  48. Paralelismo a nivel de Thread dentro del chip: SMT • Data Partitioning

  49. Secheduling Overhead Paralelismo a nivel de Thread dentro del chip: SMT • Functional Partitioning

  50. Paralelismo a nivel de Thread dentro del chip: SMT • DP vs FP: • Utilizamos la estrategia Inplace-Mallat vectorizada • Alcazan speedups elevados • Para matrices pequeñas mejor DP: la imagen cabe en L3 • Para matrices grandes, mejor FP: el overhead de sincronización se hace despreciable. • Hay que buscar estrategias mixtas

More Related