# Intel Advisor

Intel Advisor (también conocido como "Advisor XE", "Vectorization Advisor" o "Threading Advisor") es una herramienta de análisis y asistencia de diseño para la vectorización SIMD, subprocesos, uso de memoria y optimización de descarga de GPU. La herramienta es compatible con los lenguajes C, C++, Data Parallel C++ (DPC++), Fortran y Python. Está disponible en los sistemas operativos Windows y Linux en forma de herramienta GUI independiente, complemento de Microsoft Visual Studio o interfaz de línea de comandos. Es compatible con OpenMP (y el uso con MPI). La interfaz de usuario de Intel Advisor también está disponible en macOS.
Intel Advisor está disponible de forma gratuita como herramienta independiente o como parte de Intel oneAPI Base Toolkit. El soporte comercial pago opcional está disponible para oneAPI Base Toolkit.

## Características
### Optimización de vectorización

La vectorización es la operación de instrucciones de datos múltiples de instrucción única (SIMD) (como Intel Advanced Vector Extensions e Intel Advanced Vector Extensions 512) en múltiples objetos en paralelo dentro de un solo núcleo de CPU. Esto puede aumentar considerablemente el rendimiento al reducir la sobrecarga del ciclo y hacer un mejor uso de las múltiples unidades matemáticas en cada núcleo.
Intel Advisor ayuda a encontrar los bucles que se beneficiarán de una mejor vectorización, identifica dónde es seguro forzar la vectorización del compilador. Admite el análisis de códigos habilitados para escalar, SSE, AVX, AVX2 y AVX-512 generados por la vectorización automática de los compiladores Intel, GNU y Microsoft. También admite el análisis de códigos vectorizados "explícitamente" que usan OpenMP 4.x y versiones más recientes, así como códigos o escritos usando C vector intrínseco o lenguaje ensamblador.

### Análisis de línea de techo automatizado

Intel Advisor automatiza el modelo de rendimiento de la línea del techo propuesto por primera vez en Berkeley y ampliado en la Universidad de Lisboa.
El "Análisis de la línea de techo" del asesor ayuda a identificar si el bucle o la función dados están vinculados a la memoria o a la CPU. También identifica bucles optimizados que pueden tener un gran impacto en el rendimiento si se optimizan.
Intel Advisor también proporciona una implementación de línea de techo automatizada a nivel de memoria que está más cerca del modelo clásico de línea de techo. Classical Roofline es especialmente útil para aplicaciones informáticas de alto rendimiento vinculadas a DRAM. La línea de techo del nivel de memoria del asesor analiza los datos de caché y evalúa las transacciones de datos entre diferentes capas de memoria para brindar orientación para la mejora.
El análisis de techo de Intel Advisor admite código que se ejecuta en CPU o GPU. También es compatible con aplicaciones basadas en números enteros, que se utilizan mucho en aprendizaje automático, dominios de big data, aplicaciones de bases de datos, aplicaciones financieras como criptomonedas.

### Threading prototyping

Los arquitectos de software agregan anotaciones de código para describir subprocesos que Advisor entiende, pero que el compilador ignora. A continuación, Advisor proyecta la escalabilidad de los subprocesos y comprueba si hay errores de sincronización. La función Advisor Threading "Suitability" ayuda a predecir y comparar la escalabilidad del SMP paralelo y las pérdidas de rendimiento para diferentes diseños de subprocesos posibles. Los informes típicos de idoneidad se muestran en la captura de pantalla de la CPU de idoneidad en el lado derecho. Advisor Suitability proporciona capacidades de modelado del tamaño del conjunto de datos (espacio de iteración) y desglose de las penalizaciones de rendimiento (exponiendo el impacto negativo causado por el desequilibrio de carga, la sobrecarga de los tiempos de ejecución paralelos y la contención de bloqueo).

### Descarga de modelado

Advisor agrega la función de modelado de rendimiento de descarga de GPU en la versión 2021. Recopila las características de rendimiento de la aplicación en una plataforma de referencia y crea un modelo de rendimiento analítico para la plataforma de destino (modelada).
Esto proporciona una estimación de la aceleración del rendimiento en las GPU de destino y estimaciones generales para la descarga, la transferencia de datos y la programación de la ejecución de la región y señala los cuellos de botella del rendimiento. Esta información puede servir para elegir la estrategia de descarga: seleccionar regiones para descargar y anticipar la posible reestructuración del código necesaria para que esté listo para GPU.

## Uso del cliente

Intel Advisor es utilizado por Schlumberger, el laboratorio nacional de Sandia y otros para el diseño y la investigación de algoritmos paralelos y las capacidades de Vectorization Advisor conocidas por ser utilizadas por LRZ e ICHEC, Daresbury Lab, Pexip.
El flujo de trabajo paso a paso es utilizado por la academia con fines educativos.