NVIDIA Nsight Systems 入门及使用

目录

# 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


 

  • 29
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在 Android 中,如果希望在黑夜模式下不使用 `res/values-night` 目录下的资源(如颜色、样式、尺寸等),可以使用以下方法: 1. 在代码中动态设置 可以在代码中通过 `getResources().getConfiguration().uiMode` 获取当前的 UI 模式,并根据 UI 模式来判断是否使用 `res/values-night` 目录下的资源。如果是黑夜模式,则不使用 `res/values-night` 目录下的资源,而使用 `res/values` 目录下的资源。具体示例代码如下: ```java int nightModeFlags = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; if (nightModeFlags == Configuration.UI_MODE_NIGHT_YES) { // 是黑夜模式,不使用 res/values-night 目录下的资源 int color = getResources().getColor(R.color.my_day_color); } else { // 是白天模式,使用 res/values 目录下的资源 int color = getResources().getColor(R.color.my_color); } ``` 2. 使用 AppCompat 库 如果应用使用了 AppCompat 库,可以通过 `getDelegate().getLocalNightMode()` 获取当前的夜间模式设置,并根据夜间模式设置来判断是否使用 `res/values-night` 目录下的资源。如果是黑夜模式,则不使用 `res/values-night` 目录下的资源,而使用 `res/values` 目录下的资源。具体示例代码如下: ```java int nightMode = AppCompatDelegate.getDefaultNightMode(); switch (nightMode) { case AppCompatDelegate.MODE_NIGHT_YES: // 是黑夜模式,不使用 res/values-night 目录下的资源 int color = ContextCompat.getColor(this, R.color.my_day_color); break; case AppCompatDelegate.MODE_NIGHT_NO: case AppCompatDelegate.MODE_NIGHT_UNSPECIFIED: // 是白天模式,使用 res/values 目录下的资源 int color = ContextCompat.getColor(this, R.color.my_color); break; } ``` 以上两种方法都可以实现在黑夜模式下不使用 `res/values-night` 目录下的资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值