首页 > 其他分享 >学习随笔:nvidia分析工具与数据降维、坐标系、反馈环节

学习随笔:nvidia分析工具与数据降维、坐标系、反馈环节

时间:2025-01-05 20:00:17浏览次数:3  
标签:分析 采样 性能 降维 事件 nvidia 随笔 数据 CPU

  1. 昨天无意中刷到了此网页:NVIDIA 分析工具的用户手册
  2. Visual Profiler 是一种图形分析工具,可显示应用程序的 CPU 和 GPU 活动的时间轴,并包括一个用于识别优化机会的自动分析引擎。
  3. nvprof 分析工具,可以从命令行收集和查看分析数据。
  4. NVIDIA Nsight Systems整合了Visual Profiler和nvprof 。 进行 GPU 和 CPU 采样和跟踪,并使用 NVIDIA Nsight Compute 进行 GPU 内核分析。
  5. 事件event是设备上可计数的活动、操作或事件。个人理解,就是指一个函数调用过程。在我做的异构性能分析系统中,事件至少有两个时间点,起始和终止,有的还有进入队列,等待执行等概念,对应的是opencl中的概念。
  6. 指标metric是根据一个或多个事件值计算的应用程序特征。个人理解,就是指带宽这种性能指标。在我做的异构性能分析系统中,是允许自定义的,有几百个参数。
  7. 聚焦分析,Focused Profiling,本质上就是缩小性能分析范围。减少输出,不容易被大量无用信息干扰。类似vs的通用性能分析与自定义性能分析。
  8. 标记 CPU 活动的区域,Marking Regions of CPU Activity,本质就是自己设置一个新事件的起止。相对于自动标记的cuda调用事件,这种是自定义事件。
  9. 命名 CPU 和 CUDA 资源,Naming CPU and CUDA Resources,别名可以方便理解,降低分析难度,本质也是信息简化、数据降维。
  10. 刷新配置文件数据, Flush Profile Data,为了性能采样的性能,优先使用缓存,需要通知程序将采样数据存储到硬盘。
  11. Visual Profiler 可视化分析器,本质是通过图形化性能采样数据,方便人去理解和分析性能数据。
  12. 从 File 菜单中选择 New Session 来创建新会话。multi-process 分析选项包括:分析子进程Profile child processes,分析所有进程Profile all processes,仅分析当前进程Profile current process only。按照进程为单位分析,一个进程本身对应一个事件概念。
  13. CUDA options设置gpu事件的采样范围。也涉及gpu内存、功耗、散热等。本质都是数据采样,为后续图形化性能分析、辅助分析做准备。
  14. CPU (host) options设置线程采样、OpenACC 等。受限于linux、windows系统特性,有些数据采集只有linux提供。
  15. Timeline Options: 时间轴选项,关键点是建立统一的时间坐标系,例如cpu tsc与gpu计时。然后就是根据时间范围筛选部分事件。
  16. 以上是设置数据采样的细节,后续采样后就是数据显示和分析的细节。显示时支持一些交互,都是为了方便分析比较。
  17. 在我做的异构性能分析系统中,数据采样的关键点是形成事件树,每个事件至少要记录自己的父节点。兄弟节点一般是并行关系,父子节点一般是调用关系。同一个事件可能有多个时间分片,此时用不同属性、颜色标注。数据采样形成的数据文件可以是文本,也可以是二进制数据,当然,nvidia应该采用的是二进制数据文件,因为效率问题。nvidia早期版本也是CSV 文件。
  18. 可视化分析器视图 Visual Profiler Views举例
    在这里插入图片描述
    我在做异构性能分析系统之前,没有见过这个界面,但是,我做的跟这个非常接近,js实现差一点。
    这种设计出发点其实很简单,就是建立笛卡尔坐标系,类似户外运动经常用的全球GPS坐标系,基于地图map形成快速反馈环节,明确系统存在的问题和改进方向。
    我是用js直接生成的web页面,这个数据量大了,必须用程序显示,否则很难控制大量图形对象的流畅显示。

在这里插入图片描述
分析视图的本质就是将表格数据转化为柱状图、饼状图之类的形式。配合AI或许可以给出一些性能分析结果和建议。
在这里插入图片描述
PC 采样视图,可以对应到c、asm代码,这种复杂功能出现得比较晚。本质上,都是基于更为完整的采样数据进行处理和现实。
在这里插入图片描述
内存统计的图形化,方便人工快速分析内存迁移的细节。
在这里插入图片描述
在这里插入图片描述
表格形式实际上最基本的分析方式,但经过程序归类处理后,比较方便。
在这里插入图片描述
cpu上的线程视图。细节控制举例:筛选部分线程、cpu事件树、排序、突出显示、源码显示等
在这里插入图片描述
openacc表格。
在这里插入图片描述
openmp表格。
外加控制台输入输出界面,参数设置界面。

  1. 自定义分析,使用上次退出时的界面布局,视图停靠移动等

  2. 命令行参数,略

  3. nvtx分析方式
    在这里插入图片描述
    nvtx跟我在另外一个win下工具软件开发的性能分析模块类似,说白了就是有一个全局数据空间存储cpu下api的名称、起止时间等信息,程序退出时一次性输出到csv文件,用工具打开分析即可。
    nvtx似乎是开源的,https://github.com/NVIDIA/NVTX 可以考虑在自己的项目中引用,形成更好的分析方案,但是要基于nvidia的工具套件。
    对于 C 和 C++,NVTX 是一个没有依赖项的仅头文件库。
    nvtx的输出可以用nsight转化为事件树图形
    在这里插入图片描述

  4. MPI Profiling with nctx
    Message Passing Interface,消息传递接口。MPI 是一种用于并行计算的标准化消息传递库。它定义了一组函数和协议,允许运行在多台计算机(或同一台计算机的多个核心)上的进程之间进行通信和数据交换。MPI 不是一种编程语言,而是一个库。

  5. MPS Profiling with Visual Profiler and nvprof
    Moving Particle Semi-implicit method,移动粒子半隐式方法。MPS 是一种用于模拟流体和其他连续介质的粒子方法。它将连续的流体离散成大量的粒子,通过计算粒子之间的相互作用来模拟流体的运动。

  6. openacc
    Open Accelerators,开放加速,语法有点类似openmp。一种用于异构并行编程的标准。它允许程序员使用指令 (directives) 来指导编译器将程序的部分代码卸载到加速器(例如 GPU)上执行,而无需编写底层的 CUDA 或 OpenCL 代码。

  7. dependency analysis依赖分析,简单理解就是函数调用关系,事件树显示,分析等待时间、空闲时间。

  8. 度量标准参考,本质就是各种基本采样数据的组合计算结果,方便从不同的视角快速分析系统的性能瓶颈。

标签:分析,采样,性能,降维,事件,nvidia,随笔,数据,CPU
From: https://blog.csdn.net/weixin_43172531/article/details/144927241

相关文章

  • 带你从入门到精通——机器学习(七. 特征降维)
    建议先阅读我之前的博客,掌握一定的机器学习前置知识后再阅读本文,链接如下:带你从入门到精通——机器学习(一.机器学习概述)-CSDN博客带你从入门到精通——机器学习(二.KNN算法)-CSDN博客带你从入门到精通——机器学习(三.线性回归)-CSDN博客带你从入门到精通——机器学习(四.逻......
  • 阿里面试官问:为什么Transformer的FFN需要升维再降维?
    阿里面试官问:为什么Transformer的FFN需要升维再降维?面试题为什么Transformer的FFN需要升维再降维?标准答案1.FFN并非简单的嵌入空间建模FFN的目标不是直接在输入维度上进行建模,而是通过一系列线性变换来拟合一个高维的映射空间。若仅使用线性基,理论上我们只需使用等同......
  • 2024年12月总结及随笔之1T资料灭失
    1. 回头看日更坚持了731天。读《数据质量管理:数据可靠性与数据质量问题解决之道》更新完成读《图数据库实战》更新完成读《数据保护:工作负载的可恢复性》开更并持续更新2023年至2024年12月底累计码字1834939字,累计日均码字2510字。2024年12月码字96819字,同比上升34.49%,......
  • 【C#随笔】封装一下NativeMemory类
    终于,主播也是用上博客园了,可喜可贺来博客园不能不发文章,所以主播没事干先发个一篇看看实力.NET6的时候引入了一个新类,叫NativeMemory,里面提供了AllocFree等方法作为malloc和free的包装想当年我写非托管内存的时候都是Marshal类起手,居然写了这么久才发现早就有了这玩意,那不得封......
  • 随笔-处理器微架构-测量最大IPC
    目录固定cpu运行频率max_ipc_test.shLSD(LoopStreamDetector)arm固定cpu频率方式固定cpu运行频率我的测试环境cpu频率管理是intel_pstate:$lscpu|grep-ihzModelname:Intel(R)Core(TM)i5-10500CPU@3.10GHzCPUmaxMHz:......
  • 20241230随笔
     最近在看大兵的书《保重》,我是第一次读大冰的书,给我一种很奇妙的感觉,我竟然觉得我和他很像,是因为书中的他,有那般好的记忆力,他能记得很多小时候的事,我一直以为大家记忆力都是一样的,直到从我一个朋友身上看到,原来真的有人已经忘记了几个月前刚发生的事情,我就意识到好像并不是每个......
  • 随笔-处理器微架构-获取处理器参数
    intelx86芯片有提供CPUID指令,输出结果为16进制的数据,按照特定的格式进行解析即可直接可用的工具有:cpuid/lscpu/x86info、getconf-a|grep-icache参考:intelCPUIDinstructionARM工具:cat/proc/cpuinfo、lscpu原理:https://www.kernel.org/doc/html/latest/arch/arm64/......
  • 搬运优秀随笔:https://www.cnblogs.com/gaoshidong
    一、第一章:初识Java与面向对象程序设计Java简介:Java是一种面向对象的程序设计语言,具有跨平台、安全性高、可移植性强等特点。面向对象程序设计概述:面向对象是一种程序设计思想,将现实世界的事物抽象为对象,通过对象之间的交互来完成程序的功能。Java开发环境搭建:介绍了Java......
  • 【Leetcode刷题随笔】977 有序数组的平方
    1.题目描述给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]2.解题方法2.1方法一:直接排序最......
  • 12.25随笔 java实战2019年试题(2)
    后天上午就要期末考试了,最后尝试一下2019年试题Servlet设计与实现登录importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.h......