基本信息
[xxxx@k052 chapter2]$ nv-nsight-cu-cli --version
NVIDIA (R) Nsight Compute Command Line Profiler
Copyright (c) 2012-2020 NVIDIA Corporation
Version 2020.2.0 (Build 28964561)
#- 通过命令启动nsight-compute
[xxxx@k052 chapter2]$ nv-nsight-cu
新建一个测试项目
点击connect打开配置页面
配置完成之后,点击launch就可以了
正在运行中
运行完成之后,得到详细的指标参数,主要包括Session、Summary、Details、Source、NVTX等页面
Session页面
关于本次测试的基本配置参数和属性
Summary页面
由于测试用例比较简单,因此只有一个核函数信息
Details页面
这个页面提供了非常详细的核函数指标参数,对代码级的优化提供帮助。
标识符和文件名 | 描述 |
ComputeWorkloadAnalysis (Compute Workload Analysis) | 流化多处理器(SM)计算资源的详细分析,包括实现的每时钟指令数(IPC)和每个可用流水线的利用率。利用率非常高的管道可能会限制整体性能。 |
InstructionStats (InstructionStatistics) | 底层汇编指令(SASS)的统计信息。指令混合提供了对已执行指令的类型和频率的深入了解。指令类型的狭隘混合意味着依赖于少数指令管道,而其他指令管道仍然未使用。使用多个管道可以隐藏延迟并启用并行执行。 |
LaunchStats (Launch Statistics) | 用于启动内核的配置摘要。启动配置定义了内核网格的大小、网格划分为块以及执行内核所需的GPU资源。选择有效的启动配置可最大限度地提高设备利用率。 |
MemoryWorkloadAnalysis (Memory Workload Analysis) | GPU内存资源的详细分析。当充分利用相关硬件单元(内存忙碌)、耗尽这些单元之间的可用通信带宽(最大带宽)或达到发出内存指令的最大吞吐量(内存管道忙碌)时,内存可能成为整个内核性能的限制因素。根据限制因素,内存图表和表格允许识别内存系统中的确切瓶颈。 |
Occupancy (Occupancy) | 占用率是每个多处理器的活动warp数与可能活动warp的最大数之比。另一种查看占用率的方法是正在使用的硬件处理warps的能力的百分比。较高的占用率并不总是导致较高的性能,但是,较低的占用率总是会降低隐藏延迟的能力,从而导致整体性能下降。执行期间理论占用率与实际占用率之间的巨大差异通常表明工作负载高度不平衡。 |
SchedulerStats (Scheduler Statistics) | 调度员发布指令的活动摘要。每个调度程序都维护一个Warp池,可以为其发出指令。池中warp的上限(理论warps)受发射配置的限制。在每个周期,每个调度器都检查池中分配的warp(活动warp)的状态。未停止的活动warp(合格warp)准备发出下一条指令。从一组合格的warp中,调度器选择单个warp,从中发出一条或多条指令(发出的warp)。在没有合格warp的循环上,将跳过发射槽,并且不发出指令。有许多跳过的发射槽表示隐藏延迟差。 |
SourceCounters (Source Counters) | 源代码指标,包括分支效率和采样warp阻塞原因。Warp Stall采样指标在内核运行时定期采样。它们指示何时warp停止,无法调度。有关所有阻塞原因的说明,请参阅文档。仅当调度器未能在每个周期都发布在每个周期时,才关注阻塞。 |
SpeedOfLight (GPU Speed Of Light Throughput) | GPU计算和内存资源吞吐量的高级概述。对于每个单元,吞吐量报告相对于理论最大值实现的利用率百分比。细分显示了计算和内存的每个单独子指标的吞吐量,以清楚地识别最高贡献者。 |
WarpStateStats (Warp State Statistics) | 分析内核执行期间所有warps所处的状态。warp状态描述warp准备就绪或无法发出下一条指令。每条指令的warp周期定义了两条连续指令之间的延迟。该值越高,隐藏此延迟所需的warp并行度就越大。对于每个warp状态,图表显示了每个发出的指令在该状态下花费的平均周期数。阻塞并不总是影响整体表现,也不是完全可以避免的。如果调度器未能发布每个周期,则只关注暂停原因。 |
GPU Speed Of Light
这个界面会提供一个简单的内存利用率和计算单元利用率的比较。一般来说,内存利用率较高,而SM利用率较低,说明该核函数需要加载大量数据,而执行的计算却相对简单,因此内存延时是瓶颈。反过来则说明核函数一直在进行复杂的计算,而不需要加载很多数据。
Compute Workload Analysis
这一块列出了一些指令的占比情况,可以更加详细的分析核函数是受限于哪个操作。
Memory Workload Analysis
这个页面展示了内存访问情况,以及内存事务的详细数据。
Scheduler Statistics
Warp State Statistics
Instruction Statistics
Launch Statistics
Occupancy
Source Counters
Source页面
提供了指令执行情况,为指令级优化提供帮助。如果需要建立代码和指令的映射关系,需要在编译时打开选项。