La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Un vistazo a la arquitectura Intel® Core 2 y herramientas del desarrollo de software Junio 2009.

Presentaciones similares


Presentación del tema: "Un vistazo a la arquitectura Intel® Core 2 y herramientas del desarrollo de software Junio 2009."— Transcripción de la presentación:

1 Un vistazo a la arquitectura Intel® Core 2 y herramientas del desarrollo de software Junio 2009

2 Un vistazo a la arquitectura y las herramientas Discutiremos: Qué materiales hay disponibles Qué prácticas hay disponibles En qué cursos pueden aplicarse los materiales Discusiones de alto nivel sobre la tecnología

3 Objetivos Al termino de este módulo, serpa capaz de: Estar al tanto y tener acceso a varias horas de temas relacionados con MC incluyendo arquitectura, tecnología del compilador, tecnología de caracterización, OpenMP, y efectos de la caché Será capaz de crear ejercicios y como evitar peligros comunes en en paralelización asociados con algunos sistemas MC- tales como una Pobre Utilización de la Caché, False Sharing y desbalanceo de carga Será capaz de crear ejercicios en como utilizar directivas del compilador y switches para mejorar el comportamiento en cada núcleo Será capaz de crear ejercicios en como aprovechar las herramientas para identificar rápidamente problemas de balanceo de carga, pobre reutilización de la caché y problemas de False Sharing

4 Agenda Motivación de Multi-core Un vistazo a las herramientas Aprovechar las características de Multi-core Aprovechar las características de paralelismo dentro de cada núcleo (SSEx) Evitar efectos de la Memoria/Cache

5 ¿Por qué la industria está moviéndose a la tecnología Multi-core? Para mejorar el rendimiento y reducir el consumo de energía Es más eficiente ejecutar varios núcleos a una menor frecuencia que un solo núcleo a una frecuencia más alta

6 Potencia y Frecuencia Curva de Potencia vs. Frecuencia para arquitecturas con un núcleo Frecuencia (GHz) Potencia (w) Baja de Frecuencia = Mayor baja de potencia Menor Frecuencia nos da espacio para un segundo núcleo

7 Agenda Motivación de Multi-core Un vistazo a las herramientas Aprovechar las características de Multi-core Aprovechar las características de paralelismo dentro de cada núcleo (SSEx) Evitar efectos de la Memoria/Cache

8 Optimizaciones independientes del procesador /OdOptimizaciones desabilitadas /O1Optimiza el tamaño del binario y velocidad: Código Servidor /O2Optimiza velocidad (default): Vectorización en Intel 64 /O3Optimiza Caché de Datos: Código cíclico con operaciones de punto flotante /ZiCrea símbolos para debug /Ob0Apaga inlining lo que ayuda a las herramientas de análisis a hacer un mejor trabajo

9 Optimizaciones de Vectorización QaxSSE2Intel Pentium 4 y procesadorres Intel compatibles. QaxSSE3 Procesadores de la familia Intel(R) Core(TM) con soporte SSE3 (Streaming SIMD Extensions 3) QaxSSE3_ATOMPuede generar instrucciones MOVBE para procesadores Intel y puede optimizar para el procesador Intel® Atom y tecnología Intel Centrino® Atom SSE3 QaxSSSE3 Procesadores Intel(R) Core(TM)2 con SSSE3 QaxSSE4.1Intel(R) 45nm Hi-k Nueva generación microarquitectura Intel Core(TM) con soporte para instrucciones de vectorización SSE4 y aceleración multimedia QaxSSE4.2Puede generar Intel(R) SSE4 instrucciones eficientes para aceleración en el procesamiento de strings y texto soportadas por procesadores Intel(R) Core(TM) i7. Puede generar vectorización Intel(R) SSE4 y aceleración multimedia, Instrucciones Intel(R) SSSE3, SSE3, SSE2, y SSE y puede optimizar para la familia de procesadores Intel(R) Core(TM). Intel tiene una larga historia de proveer switches de auto-vectorización junto con el soporte de nuevas instrucciones del procesador y soporte hacia atrás para viejas instrucciones Los desarrolladores deben echar un ojo a los nuevos desarrollos para sacar provecho del poder de los últimos procesadores

10 Más Optimizaciones Avanzadas Qipo Optimización interprocedural hace un análisis topológico de la aplicación incluyendo todos los códigos fuentes. Con /Qipo (-ipo) el análisis se extiende todos los códigos fuentes. En otras palabras la generación de código en el módulo A puede mejorarse con lo que está sucediendo en el módulo B. Puede habilitar otras optimizaciones como autoparallel y autovectorr QparallelHabilita el auto-paralelizador para genenerar código multihilos en ciclos que pueden ejecutarse en paralelo de manera segura QopenmpHabilita al compilador para generar código multihilos basado en directivas de OpenMP*

11 Actividad 1 – Auto-Paralelización Objetivo: Usar auto-paralelización en un código simple para obtener experiencia usando la prestación de auto- paralelización del compilador Sigue la actividad VectorSum del cuaderno de prácticas Prueba la compilación AutoParallel en la práctica llamada VectorSum Crédito Extra: paraleliza manualmente y observa que tanto se puede sobrepasar la opción AutoParallel – ver bloques de construcción de openmp para hacer esta prueba

12 Parallel Studio para encontrar donde paralelizar Parallel Studio lo usaremos en varias prácticas para encontrar los lugares apropiados para paralelizar el código Parallel Amplifier será usado específicamente para encontrar hotspots- donde el código de la aplicación gasta más tiempo del CPU Parallel Amplifier no requiere instrumentar el código para encontrar los hotspots, se recomienda compilar con información de símbolos /Zi Compilar con /Ob0 apaga el inlining y algunas veces es mejor el análisis en Parallel Studio

13 Parallel Amplifier Hotspots

14 ¿Qué muestra el análisis de hotspots?

15 ¿Qué hay en los detalles?

16 El stack de llamadas El stack de llamadas (call) muestra la relación llamado/llamador entre funciones en el código

17 Encontrar paralelismo potencial

18 Actividad 2 – Análisis de Hotspots del Mandelbrot Objetivo: Usar el muestreo para encontrar algo de paralelismo en la aplicación Madelbrot Sigue la práctica llamada Mandelbrot Sampling en el cuaderno de prácticas Identifica ciclos que pueden ser paralelizados

19 Agenda Motivación de Multi-core Un vistazo a las herramientas Aprovechar las características de Multi-core Vistazo a alto nivel – Arquitectura Intel® Core Aprovechar las características de paralelismo dentro de cada núcleo (SSEx) Evitar efectos de la Memoria/Cache

20 Plataforma móvil optimizada 1-4 Núcleos Tamaños de caché L2 3/6MB Línea de la caché L2 64 Bytes 64-bits 6M 6M L2 4M 4M L2 Plataforma de escritorio optimizada 2-4 Núcleos Tamaños de la caché L2 2X3, 2X6 MB Línea de la caché 64 Bytes 64-bits Plataforma de servidor optimizada 4 Núcleos Cachés L2 2x6 Línea de la caché L2 64 Bytes Soporte DP/MP 64-bits 2 cores 4 cores **Feature Names TBD 6M 2X6M L2 2X3M L2 2 cores 4 cores 12M 4 cores 2X6M L2 12M Instante en el tiempo durante Penryn, Yorkfield, harpertown Los desarrolladores de software deben saber cuántos núcleos, tamaño de la línea de la cache y tamaños de la caché para hacer frente a los efectos de la caché Arquitectura Intel® Core 2

21 Jerarquía de Memoria Disco Magnético Memoria principal Caché L2 Caché L1 CPU ~ 1s Ciclo ~ 1s - 10 Ciclos ~ 100s Ciclos ~ 1000s Ciclos

22 Arquitectura vista desde un alto nivel AAAA EEEE C1C2 BB AA EE C B Procesador Intel Core 2 Duo Procesador Intel Core 2 Quad A = Estado de la ArquitecturaE = Motor de ejecución e interrupciones C = Caché nivel 2B = Interfase con el bus Memoria Línea de caché 64B El Dual Core tiene caché compartida Quad core tiene ambos: caché compartida y separada Intel® Core Microarchitecture – Memory Sub-system

23 Con cachés separadas CPU1 CPU2 Memoria Front Side Bus (FSB) Linea de caché Mover la línea de caché L2 ~Medio acceso a memoria Intel® Core Microarchitecture – Memory Sub-system

24 CPU2 Ventajas de la caché compartida– usando tecnología Advanced Smart Cache® CPU1 Memoria Front Side Bus (FSB) Línea de la caché L2 está compartida: No se requiere mover la línea de la caché Intel® Core Microarchitecture – Memory Sub-system

25 False Sharing Problema de rendimiento en programas donde los núcleos pueden escribir a diferentes direcciones de memoria PERO en la misma línea de la caché Conocido como efecto Ping-Pong – la línea de la cache se mueve entre núcleos Core 0 Core 1 Tiempo 1 0 X[0] = 1 X[1] =1 1 X[0] = 0 X[1] = X[0] = False Sharing no es un problema en cachés compartidas Es un problema en cachés separadas

26 Agenda Motivación de Multi-core Un vistazo a las herramientas Aprovechar las características de Multi-core Aprovechar las características de paralelismo dentro de cada núcleo (SSEx) Evitar efectos de la Memoria/Cache

27 Ejecución Super-Escalar FP SIMD INT Varias unidades de ejecución Permiten paralelismo SIMD Muchas instrucciones pueden retirarse en un ciclo de reloj Varias operaciones ejecutadas en un solo núcelo al mismo tiempo

28 IntelSSE IntelSSE4.1 IntelSSE IntelSSE IntelSSSE instr Vectores Simple- Precision Streaming operations 144 instr Vectores Doble- precision 8/16/32 64/128-bit vector entero 13 instr Datos Complejos 32 instr Decodifi- cación 47 instrucciones Aceleradores de Video bloques de contrucción para gráficos Instrucciones avanzadas de vectores Continuará con: Intel SSE4.2 (procesamiento XML a finales de 2008) ver - instructions-paper.pdf Historia de las instrucciones SSE Larga historia de nuevas instrucciones La mayoría requieren instrucciones de empaquetar y desempaquetar

29 Tipos de datos SSE y Aceleración Potencial 4x floats SSE 16x bytes 8x 16-bit shorts 4x 32-bit enteros 2x 64-bit enteros 1x 128-bit enteros 2x doubles SSE-2 SSE-3 SSE-4 Aceleración potencial (en el ciclo destino) aproximadamente la misma que la cantidad de empaquetamiento Ejemplo. para floats – aceleración ~ 4X

30 Meta de SSE(x) + Procesamiento Escalar Modo tradicional Una instrucción produce un resultado X Y X + Y = Procesamiento SIMD con SSE(2,3,4) Una instrucción produce múltiples resultados+ x3x2x1x0 y3y2y1y0 x3+y3x2+y2x1+y1x0+y0 X Y X + Y = Usa toda la amplitud de los registros XMM Muchas unidades funcionales Selección de varias instrucciones No todos los ciclos pueden vectorizarse No puede vectorizar la mayoría de las llamadas a funciones

31 Actividad 3 – IPO Vectorización Asistida Objetivo: Explorar como inlining una función puede dramáticamente mejorar el rendimiento permitiendo la vectorización de un ciclo con una llamada a función Abrir el folder SquareChargeCVectorizationIPO y usar nmake all para construir el proyecto desde la línea de comandos Para añadir switches para hacer el ambiente usar nmake all CF=/QxSSE3

32 Agenda Motivación de Multi-core Un vistazo a las herramientas Aprovechar las características de Multi-core Aprovechar las características de paralelismo dentro de cada núcleo (SSEx) Evitar efectos de la Memoria/Cache

33 Efectos de la caché Los efectos de la caché pueden incidir en la velocidad de una aplicación tanto como 10x o hasta 100x Para sacar provecho de la jerarquía de la caché en la máquina, se deben reusar los datos en la caché lo más que se pueda Evitar acceder memoria en direcciones de memoria no contigua, especialmente en ciclos Se puede considerar el intercambio en ciclos para acceder datos de una forma más eficiente

34 Intercambio de ciclos Muy importante para vectorizar for(i=0;i

35 Acceso de la memoria por paso de unidades (C/C++) bN-10bN-1N-1 bk0bk1bk2bk3bkN-1 b10b11b12b13b1N-1 b00b01b02b03b0N-1 j j b k El incremento de indice más rápido Acceso de memoria consecutivo aN-10aN-1N-1 ai0ai1ai2ai3aiN-1 a10a11a12a13a1N-1 a00a01a02a03a0N-1 k a k i Próximo indice de ciclo más rápido Indice de memoria consecutivo

36 Sartén listo para freir huevos Refrigerador Utilización pobre de la caché – con huevos : Un cartón representa una línea de cache El Refrigerador representa la memoria principal Mesa representa la caché Cuando la mesa se llena –los cartones viejos se expulsan y los huevos se desperdician Solicitar un huevo que no está en la mesa, trae un nuevo cartón de huevos del refrigerador, pero el usuario solo frie un huevo de cada cartón Cuando la mesa se llena, se expulsa un cartón viejo El usuario solicita un huevo en específico El usuario solicita un segundo huevo en específico El usario solicita un tercer huevo – El cartón se expulsa

37 Refrigerador El usuario previo ha usado todos los huevos en la mesa : Buena utilización de la caché - con huevos La expulsión de un carton no afecta porque ya freímos todos los huevos en los cartones que están en la mesa – tal como el usuario previo El usuario solicita los huevos del 1 al 8 El usuario solicita los huevos del 9 al16 El usuaurio eventualmente solicita todos los huevos Solicitar un huevo trae un nuevo cartón de huevos del refrigerador El usuario solicita específicamente huevos del cartón que ya está en la mesa El usuario frie todos los huevos en el cartón antes de solicitar un huevo del siguiente cartón

38 Actividad 4 – Efectos de la caché en la multiplicación de matrices Objetivo: Explorar el impacto de un uso pobre de la caché en el rendimiento con Parallel Studio y ver como manipular los ciclos para lograr significativamente un mejor uso de la caché y rendimiento

39

40 BACKUP


Descargar ppt "Un vistazo a la arquitectura Intel® Core 2 y herramientas del desarrollo de software Junio 2009."

Presentaciones similares


Anuncios Google