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 vectorización SIMD , subprocesamiento, 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. [2] 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 del kit de herramientas básico Intel oneAPI . El soporte comercial pago opcional está disponible para oneAPI Base Toolkit.
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 bucle 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 e identificar dónde es seguro forzar la vectorización del compilador. [3] Admite el análisis de códigos escalares, 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 utilizan OpenMP 4.x y posteriores, así como códigos escritos utilizando intrínsecos vectoriales C o lenguaje ensamblador . [4] [5]
Intel Advisor automatiza el modelo de rendimiento Roofline propuesto por primera vez en Berkeley [6] y ampliado en la Universidad de Lisboa. [7]
El asesor " Análisis de la línea del techo " ayuda a identificar si un bucle/función determinado está vinculado a la memoria o a la CPU. También identifica bucles optimizados que pueden tener un alto impacto en el rendimiento si se optimizan. [8] [9] [10] [11]
Intel Advisor también proporciona una implementación automatizada de la línea del techo a nivel de memoria que se acerca más al modelo clásico de la línea del techo. Classical Roofline es especialmente instrumental para aplicaciones informáticas de alto rendimiento vinculadas a DRAM. La línea del techo del nivel de memoria del asesor analiza los datos de la caché y evalúa las transacciones de datos entre diferentes capas de memoria para proporcionar orientación para la mejora. [12]
El análisis de la línea de techo de Intel Advisor admite código que se ejecuta en CPU o GPU. [13] [14] También admite aplicaciones basadas en números enteros, que se utilizan mucho en aprendizaje automático, dominios de big data, aplicaciones de bases de datos y aplicaciones financieras como criptomonedas. [15]
Los arquitectos de software agregan anotaciones de código para describir subprocesos que Advisor comprende, pero que el compilador ignora. Luego, Advisor proyecta la escalabilidad del subproceso y verifica si hay errores de sincronización. La función " Adecuación " de Advisor Threading ayuda a predecir y comparar la escalabilidad SMP paralela y las pérdidas de rendimiento para diferentes diseños de subprocesos posibles. Los informes de idoneidad típicos se muestran en la captura de pantalla de 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 penalizaciones de rendimiento (exponiendo el impacto negativo causado por el desequilibrio de carga , la sobrecarga de tiempos de ejecución paralelos y la contención de bloqueo). [dieciséis]
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 las aplicaciones 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 velocidad del rendimiento en las GPU de destino y estimaciones de gastos generales para la descarga, la transferencia de datos y la programación de la ejecución de la región e identifica los cuellos de botella en el rendimiento. [17] [18] [19] 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.
Intel Advisor es utilizado por Schlumberger , [20] el laboratorio nacional Sandia y otros [21] para diseño e investigación de algoritmos paralelos y capacidades de Vectorization Advisor que se sabe que utilizan LRZ e ICHEC , [22] Daresbury Lab , [23] Pexip. [24]
El mundo académico utiliza el flujo de trabajo paso a paso con fines educativos. [25]