Nsight Systems es una herramienta poderosa diseñada para visualizar y analizar las interacciones de CPU-GPU en aplicaciones, proporcionando información sobre cuellos de botella de rendimiento y oportunidades de optimización. Así es como visualiza estas interacciones:
Análisis de rendimiento de todo el sistema
NSIGHT Systems captura los datos de actividad de todo el sistema, incluidos los eventos de CPU y GPU, y los muestra en una línea de tiempo unificada. Esta línea de tiempo permite a los desarrolladores ver cómo los diferentes componentes del sistema interactúan entre sí con el tiempo, lo que facilita la identificación de correlaciones, dependencias y cuellos de botella en el flujo de trabajo de la aplicación [3] [4].
Visualización de la actividad de la CPU
NSIGHT Systems visualiza la actividad de la CPU al mostrar estados de hilo, utilización y ejecución de algoritmos. Esto ayuda a los desarrolladores a comprender cómo se utilizan los recursos de CPU y dónde pueden existir posibles cuellos de botella. La herramienta admite análisis de árboles de procesos múltiples, lo que permite a los usuarios rastrear la actividad de múltiples procesos e hilos simultáneamente [1] [3].
Visualización de la actividad de GPU
Para la actividad de GPU, NSIGHT Systems proporciona información detallada sobre las cargas de trabajo de GPU, incluida la optimización de la transmisión del multiprocesador (SM), las transferencias de memoria y la ejecución del núcleo. Admite el rastreo de varias API de GPU como CUDA, Vulkan y OpenGL, lo que permite a los desarrolladores analizar las tareas de cálculo de GPU y gráficos en profundidad [3] [4]. La herramienta también ofrece muestreo de métricas de GPU, que incluye métricas como la utilización de SM, la actividad del núcleo del tensor y el rendimiento de la instrucción. Estas métricas ayudan a los desarrolladores a optimizar el rendimiento de la GPU al identificar la subutilización o las ineficiencias en el uso de recursos de GPU [1] [3].
Correlateo de eventos de CPU y GPU
Una de las características clave de los sistemas NSIGHT es su capacidad para correlacionar los eventos de CPU y GPU. Al visualizar las actividades de CPU y GPU en la misma línea de tiempo, los desarrolladores pueden ver cómo las operaciones de CPU influyen en el rendimiento de GPU y viceversa. Esta correlación es crucial para identificar cuellos de botella que ocurren debido a las interacciones entre la CPU y la GPU, como retrasos de transferencia de datos o problemas de sincronización [3] [4].
Bajo sobrecarga y escalabilidad
NSIGHT Systems está diseñado para operar con bajas gastos generales, asegurando que el proceso de perfil no afecte significativamente el rendimiento de la aplicación. Esto lo hace adecuado para analizar aplicaciones complejas a gran escala que se ejecutan en varias plataformas NVIDIA, desde estaciones de trabajo hasta centros de datos y entornos en la nube [3] [6].
Interfaz de usuario y navegación
La herramienta proporciona una GUI fácil de usar que permite a los desarrolladores navegar a través de la vista de línea de tiempo utilizando barras de desplazamiento, rueda del mouse y atajos de teclado. Esta interfaz permite a los usuarios ampliar los rangos o eventos de tiempo específicos, facilitando el análisis detallado de los problemas de rendimiento [5] [9].
En general, NSight Systems ofrece una vista integral de las interacciones CPU-GPU, lo que permite a los desarrolladores optimizar sus aplicaciones para un mejor rendimiento y eficiencia en una amplia gama de plataformas.
Citas:
[1] https://extremecomputingtraining.anl.gov/wp-content/uploads/sites/96/2022/11/atpesc-2022-track-6-talk-2- keipert-nvidia.pdf
[2] https://bede-documentation.readthedocs.io/en/latest/software/tools/nsight-systems.html
[3] https://developer.nvidia.com/nsight-systems
[4] https://indico.cern.ch/event/962112/Contributions/4047370/attachments/2159916/3643963/nsight%20Systems%20-%20x86%20Introduction%20 %cern.pdf
[5] https://www.youtube.com/watch?v=tgchxcfm-yo
[6] https://docs.nersc.gov/tools/performance/nvidiaproftools/
[7] https://www.youtube.com/watch?v=kkanp0kl_hk
[8] https://docs.nvidia.com/nsight-systems/userguide/index.html
[9] https://www.youtube.com/watch?v=dudgo66iadu
[10] https://dev-discuss.pytorch.org/t/using-nsight-systems-to-profile-gpu-workload/59