NVIDIA Nsight Systems 入门及使用-程序员宅基地

技术标签: NVIDIA  deep-learning  深度学习  人工智能  nvidia  

目录

# Nsight Systems 入门

什么是Nsight Systems

用户能用nsys做什么

CUDA Version

Nsight Systems 使用

nsys windows 版本GUI使用步骤

nsys Linux CLI (Command Line Interface)常见命令


# Nsight Systems 入门

 

什么是Nsight Systems
 

NVIDIA Nsight Systems,简称nsys,是一个低开销的系统分析工具。

在本文档中,我们将配置文件的配置对象和用户用来工作并控制配置文件会话的计算机作为主机。 请注意,对于基于x86_64的系统,它们可能位于同一设备上,而对于基于Tegra,ARM或IBM Power的系统,它们将始终是分开的。


此外,将三种不同的活动区分如下:

 - **分析—收集任何性能数据**的过程。Nsight Systems中的性能分析会话通常包括采样和跟踪。
 - **采样—定期停止配置文件**(在配置文件会话期间正在研究的应用程序)的过程,通常用于收集回溯(活动线程的调用堆栈),这使您可以统计地了解每个函数花费了多少时间。
   此外,还可以对硬件计数器进行采样。 当收集到少量样品时,此过程本质上是不精确的。 
 - **跟踪-收集有关概要文件或系统中发生的各种活动**的精确信息的过程。    例如,可以跟踪概要**API的执行**,以提供函数调用的确切时间和持续时间

Nsight Systems在大多数平台上支持的常见功能包括:

  • 使用多种算法(例如帧指针或DWARF数据)对Profilee进行采样并收集回溯。 根据需要构建自上而下,自下而上和平面视图。 此信息有助于确定CPU密集型代码中的性能瓶颈。
  • 采样或跟踪系统电源行为,例如CPU频率。
  • (仅在Nsight Systems嵌入式平台版本上)来自ARM PMU(性能监视单元)的采样计数器。 诸如缓存未命中之类的信息在统计上与函数执行相关。
  • 支持多个窗口。 具有多台监视器的用户可以同时查看多个报告,或在同一报告文件中拥有多个视图。

用户能用nsys做什么

使用Nsight Systems,用户可以:

  • 确定独占CPU的呼叫路径。
  • 确定独占CPU的各个功能(跨不同的调用路径)。
  • 对于Nsight Systems Embedded Platforms Edition,请确定缓存利用率较低的功能。
  • 如果平台支持CUDA,请查看CUDA运行时和驱动程序API调用以及CUDA GPU工作负载的直观表示。
  • Nsight Systems使用CUDA分析工具界面(CUPTI),有关更多信息,请参阅:CUPTI文档。
  • 如果用户使用NVIDIA工具扩展(NVTX)进行注释,请参见NVTX注释的可视表示形式:范围,标记和线程名称。
  • 对于Windows目标,请参见D3D12的直观表示:正在CPU上进行哪些API调用,图形框架,停顿分析以及GPU工作负载(命令列表和调试范围)。
  • 对于x86_64目标,请参见Vulkan的直观表示:正在CPU上进行哪些API调用,图形框架,停顿分析以及Vulkan GPU工作负载(命令缓冲区和调试范围)

 

CUDA Version

  • Nsight Systems支持大多数平台的CUDA 10.0、10.1、10.2和11.0。

  • Nsight Systems on ARM SBSA支持10.2和11.0。

  • 请注意,CUDA版本和驱动程序版本必须兼容。

Nsight Systems 使用

nsys windows 版本GUI使用步骤

安装windows版本的的NVIDIA Nsight Systems,下载地址在官网。

安装好后,出现如下页面。可以选择CPU Rows on Top classic mode(默认选项)。

接下来,下拉Select target for profiling,会出现:

  • Localhost connections (这里指的就是你的windows电脑本地)
  • SSH connections (这里可以指定服务器(Linux)的位置)
  • configure target (这里可以修改你选定的target位置的配置)

这里先跳过本地选项,直接ssh连接到linux服务器,毕竟大部分的AI模型都是在服务器上去跑。

点击Select target for profiling右边的工具按钮,出现如下页面。点击Create a new connection,进行SSH连接。

连接成功之后,出现如下界面:

可以对profilin进行设置,有如下设置项:

先简单设置第一个Sample target process, 在其中设置服务器上要跑的程序。这里我在HOME目录下,设置要运行的命令是ls(linux的列举命令),然后点击右边的Start (右边也可以设置,等熟悉之后就可看需求来设置)。其他例子,在跑模型的时候,可以设置命令为python train.py等等。

命令跑完的结果如下,可以得到一个Report,它是一个.qdrep文件,如果是在Linux CLI下运行nsys得到这个文件,也可以传到windows上用nsys打开来做分析:

这个Report包含5部分内容:

  1. Analysis Summary (分析总结,内容非常全面,包含了Target的详细信息,Process summary, Module summary, Thread summary, Environment Variables, CPU info, GPU info等等)
  2. Timeline View (展示CPU/GPU各个核的工作时间线,一般用来来勘察模型训练或者推理的瓶颈在哪里)
  3. Diagnostics Summary (顾名思义,诊断总结。就是程序在运行中做了什么,有什么warning , error,或者message的,都在这里汇总)
  4. Symbol Resolution Logs(暂时不知道是干嘛的)
  5. Files (执行结果的log 文件:pid_stdout.log,& 执行出错的log 文件pid_stderr.log)

简单看看Timeline view。如下,这里有三个CPU核在工作,它们启动和停止的时间可以从timeline上看到。还可以看到下面有三个Thread的时间线。

 

nsys Linux CLI (Command Line Interface)常见命令
 

  user@node:/opt/nvidia/nsight-systems-cli/2020.1.1/bin$ nsys
     usage: nsys [--version] [--help] <command> [<args>] [application] [<application args>]
    
     The most commonly used nsys commands are:
            profile       Run an application and capture its profile into a QDSTRM file.
            launch        Launch an application ready to be profiled.
            start         Start a profiling session.
            stop          Stop a profiling session and capture its profile into a QDSTRM file.
            cancel        Cancel a profiling session and discard any collected data.
            stats         Generate statistics from an existing QDREP or SQLite file.
            status        Provide current status of CLI or the collection environment.
            shutdown      Disconnect launched processes from the profiler and shutdown the profiler.
            sessions list List active sessions.
            export        Export QDREP file into another format.
            nvprof        Translate nvprof switches to nsys switches and execute collection.
    
     Use 'nsys --help <command>' for more information about a specific command.
    
     To run a basic profiling session:   nsys profile ./my-application
     For more details see "Profiling from the CLI" at https://docs.nvidia.com/nsight-systems

 

更多请关注公众号:AliceWanderAI


参考资料
https://docs.nvidia.com/nsight-systems/InstallationGuide/index.html 
https://zhuanlan.zhihu.com/p/132582159 
https://cloud.tencent.com/developer/article/1468566


 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/NXHYD/article/details/112915968

智能推荐

JavaScript学习笔记_curry函数未定义-程序员宅基地

文章浏览阅读343次。五种原始的变量类型1.Undefined--未定义类型 例:var v;2.String -- ' '或" "3.Boolean4.Number5.Null--空类型 例: var v=null;Number中:NaN -- not a number非数本身是一个数字,但是它和任何数字都不相等,代表非数,它和自己都不相等判断是不是NaN不能用=_curry函数未定义

兑换码编码方案实践_优惠券编码规则-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏17次。兑换码编码设计当前各个业务系统,只要涉及到产品销售,就离不开大大小小的运营活动需求,其中最普遍的就是兑换码需求,无论是线下活动或者是线上活动,都能起到良好的宣传效果。兑换码:由一系列字符组成,每一个兑换码对应系统中的一组信息,可以是优惠信息(优惠券),也可以是相关奖品信息。在实际的运营活动中,要求兑换码是唯一的,每一个兑换码对应一个优惠信息,而且需求量往往比较大(实际上的需求只有预期_优惠券编码规则

c语言周林答案,C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt...-程序员宅基地

文章浏览阅读45次。C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt* * 4.1 选择结构程序设计 4.2 循环结构程序设计 4.3 辅助控制语句 第四章 结构化程序设计 4.1 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的: 如果你在家,我去拜访你 如果考试不及格,要补考 如果遇到红灯,要停车等待 第四章 结构化程序设计 在现实生活中,需要进行判断和选择的情况..._在现实生活中遇到过条件判断的问

幻数使用说明_ioctl-number.txt幻数说明-程序员宅基地

文章浏览阅读999次。幻数使用说明 在驱动程序中实现的ioctl函数体内,实际上是有一个switch{case}结构,每一个case对应一个命令码,做出一些相应的操作。怎么实现这些操作,这是每一个程序员自己的事情。 因为设备都是特定的,这里也没法说。关键在于怎样组织命令码,因为在ioctl中命令码是唯一联系用户程序命令和驱动程序支持的途径 。 命令码的组织是有一些讲究的,因为我们一定要做到命令和设备是一一对应的,利_ioctl-number.txt幻数说明

ORB-SLAM3 + VScode:检测到 #include 错误。请更新 includePath。已为此翻译单元禁用波浪曲线_orb-slam3 include <system.h> 报错-程序员宅基地

文章浏览阅读399次。键盘按下“Shift+Ctrl+p” 输入: C++Configurations,选择JSON界面做如下改动:1.首先把 “/usr/include”,放在最前2.查看C++路径,终端输入gcc -v -E -x c++ - /usr/include/c++/5 /usr/include/x86_64-linux-gnu/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/x86_64-linux-gnu/5/include /usr/local/_orb-slam3 include 报错

「Sqlserver」数据分析师有理由爱Sqlserver之十-Sqlserver自动化篇-程序员宅基地

文章浏览阅读129次。本系列的最后一篇,因未有精力写更多的入门教程,上篇已经抛出书单,有兴趣的朋友可阅读好书来成长,此系列主讲有理由爱Sqlserver的论证性文章,希望读者们看完后,可自行做出判断,Sqlserver是否真的合适自己,目的已达成。渴望自动化及使用场景笔者所最能接触到的群体为Excel、PowerBI用户群体,在Excel中,我们知道可以使用VBA、VSTO来给Excel带来自动化操作..._sqlsever 数据分析

随便推点

智慧校园智慧教育大数据平台(教育大脑)项目建设方案PPT_高校智慧大脑-程序员宅基地

文章浏览阅读294次,点赞6次,收藏4次。教育智脑)建立学校的全连接中台,对学校运营过程中的数据进行处理和标准化管理,挖掘数据的价值。能:一、原先孤立的系统聚合到一个统一的平台,实现单点登录,统一身份认证,方便管理;三、数据共享,盘活了教育大数据资源,通过对外提供数。的方式构建教育的通用服务能力平台,支撑教育核心服务能力的沉淀和共享。物联网将学校的各要素(人、机、料、法、环、测)全面互联,数据实时。智慧校园解决方案,赋能教学、管理和服务升级,智慧教育体系,该数据平台具有以下几大功。教育大数据平台底座:教育智脑。教育大数据平台,以中国联通。_高校智慧大脑

编程5大算法总结--概念加实例_算法概念实例-程序员宅基地

文章浏览阅读9.5k次,点赞2次,收藏27次。分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。但其实这三者之间的区别还是蛮大的。贪心是则可看成是链式结构回溯和分支界限为穷举式的搜索,其思想的差异是深度优先和广度优先一:分治算法一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两_算法概念实例

随笔—醒悟篇之考研调剂_考研调剂抑郁-程序员宅基地

文章浏览阅读5.6k次。考研篇emmmmm,这是我随笔篇章的第二更,原本计划是在中秋放假期间写好的,但是放假的时候被安排写一下单例模式,做了俩机试题目,还刷了下PAT的东西,emmmmm,最主要的还是因为我浪的很开心,没空出时间来写写东西。  距离我考研结束已经快两年了,距离今年的考研还有90天左右。  趁着这个机会回忆一下青春,这一篇会写的比较有趣,好玩,纯粹是为了记录一下当年考研中发生的有趣的事。  首先介绍..._考研调剂抑郁

SpringMVC_class org.springframework.web.filter.characterenco-程序员宅基地

文章浏览阅读438次。SpringMVC文章目录SpringMVC1、SpringMVC简介1.1 什么是MVC1.2 什么是SpringMVC1.3 SpringMVC的特点2、HelloWorld2.1 开发环境2.2 创建maven工程a>添加web模块b>打包方式:warc>引入依赖2.3 配置web.xml2.4 创建请求控制器2.5 创建SpringMVC的配置文件2.6 测试Helloworld2.7 总结3、@RequestMapping注解3.1 @RequestMapping注解的功能3._class org.springframework.web.filter.characterencodingfilter is not a jakart

gdb: Don‘t know how to run. Try “help target“._don't know how to run. try "help target".-程序员宅基地

文章浏览阅读4.9k次。gdb 远程调试的一个问题:Don't know how to run. Try "help target".它在抱怨不知道怎么跑,目标是什么. 你需要为它指定target remote 或target extended-remote例如:target extended-remote 192.168.1.136:1234指明target 是某IP的某端口完整示例如下:targ..._don't know how to run. try "help target".

c语言程序设计教程 郭浩志,C语言程序设计教程答案杨路明郭浩志-程序员宅基地

文章浏览阅读85次。习题 11、算法描述主要是用两种基本方法:第一是自然语言描述,第二是使用专用工具进行算法描述2、c 语言程序的结构如下:1、c 语言程序由函数组成,每个程序必须具有一个 main 函数作为程序的主控函数。2、“/*“与“*/“之间的内容构成 c 语言程序的注释部分。3、用预处理命令#include 可以包含有关文件的信息。4、大小写字母在 c 语言中是有区别的。5、除 main 函数和标准库函数以..._c语言语法0x1e