600 likes | 725 Views
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
E N D
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 • Luis Piñuel • Daniel Chaver • Carlos García • Roberto Lario • Christian Tenllado
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?
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.
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
JPEG2000: un vistazo al estándar • Profiling Jasper: Implementación de referencia creada por miembros de JPEG
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”.
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.
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
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.
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
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 +
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.
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
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
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.
Superescalares: El problema de la memoria • Majorando la localidad espacial: layouts no lineales: 4D y Morton. 4D Layout Filtrado Horizontal con 4D Layout
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.
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
Superescalares: El problema de la memoria • Pipeline Computation + 4D layout
Superescalares: El problema de la memoria • Necesitamos un tamaño de buffer auxiliar de tres bloques: independiente del tamaño de la matriz.
Superescalares: El problema de la memoria • Algunos resultados (P-III, imagen de 8192x8192)
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)
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.
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)
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.
* * * * * 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
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)
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]; }
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
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.
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.
InplaMallat Nuevas estrategias de memoria para Lifting • Alternativa: Mallat (propuesta por Chatterjee) • Nuestra Propuesta: Inplace-Mallat Mallat Inplace-Mallat
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
Nuevas estrategias de memoria para Lifting • Añadiendo 4D podría vectorizarse el filtrado vertical!! Versiones Escalares Versiones Vectoriales
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.
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
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)
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.
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
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
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)
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
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”.
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.
Paralelismo a nivel de Thread dentro del chip: SMT • Data Partitioning
Paralelismo a nivel de Thread dentro del chip: SMT • Data Partitioning
Secheduling Overhead Paralelismo a nivel de Thread dentro del chip: SMT • Functional Partitioning
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