CUDA编程 - Nsight system Nsight compute 的安装和使用 - (1) 学习记录

2024-02-24 03:44

本文主要是介绍CUDA编程 - Nsight system Nsight compute 的安装和使用 - (1) 学习记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Nsight system & Nsight compute

  • 安装和下载地址
  • 一、Nsight Systems
    • 1.1、主要应用
    • 1.2、比较常用的分析
      • 1.2.1、情况一
      • 1.2.2、情况二
  • 二、Nsight Compute
    • 2.1、主要应用
    • 2.2、比较常用的分析
      • 2.2.1、情况一
      • 2.2.2、情况二
  • 三、两者的比较
    • 3.1、Nsight systems
    • 3.2、Nsight compute
  • 四、参考使用途径
      • 方法一
      • 方法二
      • 方法三
      • 方法四

在 cuda 编程中,经常会用到 Nsight system 和 Nsight compute 进行性能分析等,下面做个学习总结。

本篇包括安装和常用分析思路总结,具体实践操作总结会放在下一篇博客。

安装和下载地址

Nsight Systems

Nsight Compute

汇总下载地址

一、Nsight Systems

1.1、主要应用

主要倾向于观察全局的 Profiling,比如 核函数读写情况,核函数之间的调度情况,SM占有率,CPU和GPU之间的异步执行的情况等。

在这里插入图片描述

1.2、比较常用的分析

1.2.1、情况一

可以对 kernel 执行 和 memory 进行 timeline 分析,尝试寻找是否可以优化

常用的优化角度:

  • 隐藏 memory access
  • 多流调度
  • 删除冗长的 memory access
  • 融合kernel减少 kernel launch的overhead
  • CPU与GPU的 overlapping

一、比如核函数与核函数之间的执行情况,是根据 timeline 进行分析的

比如下面的 timeline 可以发现核函数与核函数之间有延迟,或者是核函数的启动延迟等,都是可以展示出来的
在这里插入图片描述

二、 在多个 stream 的时候,可以查看调度情况和 Overlap 等,从而分析出如何进行更高效的调度

在这里插入图片描述

1.2.2、情况二

分析 DRAM 以及 PCIe 带宽的使用率 ,分析 SM 中 warp 的占有率

一、可以从中分析到哪些带宽没有被充分利用,从而进行优化

在这里插入图片描述

二、可以从中知道一个 SM 中资源是否被用满

在这里插入图片描述

二、Nsight Compute

官方使用说明链接

2.1、主要应用

主要分析核函数的内部的操作,比如显示不同block size核函数的执行时间,执行的吞吐量,带宽分析等。
在这里插入图片描述

2.2、比较常用的分析

2.2.1、情况一

一、roofline analysis

对核函数进行 roofline analysis,可以知道现在的核函数是计算密集型还是仿真密集型。即可以判断下一步优化是提高计算度,计算密度,还是优化访存等。

并且根据 base line 进行优化比较,比如设置两个核函数,对比核函数对性能的影响

在这里插入图片描述

比如在下图 蓝色在绿色的上方
在这里插入图片描述

2.2.2、情况二

二、occupancy analysis (占有率)

对核函数的各个指标进行估算一个warp的占有率的变化

在这里插入图片描述

三、memory bindwidth analysis

针对核函数中对各个memory的数据传输的带宽进行分析。可以比较好的理解memory架构

在这里插入图片描述

四、shared memory analysis

针对核函数中对 shared memory 访问以及使用效率的分析

在这里插入图片描述

三、两者的比较

3.1、Nsight systems

偏重于可视化application的整体的profiling以及各个细节指标

  • PCIe bindwidth
  • DRAM bindwidth
  • SM Warp occupancy
  • 所有核函数的调度信息
  • 所有核函数的执行时间,以及占用整体时间的比例
  • 多个Stream之间的调度信息
  • 同一个stream中的多个队列的调度信息
  • CPU和GPU之间的数据传输耗时
  • Application整体上的各个核函数以及操作的消耗时间排序
  • 捕捉同一个stream中的多个event

整体上会提供一些比较全面的信息,我们一般会从这里得到很多信息进而进行优化

3.2、Nsight compute

偏重于可视化每一个CUDA kernel的profiling以及各个细节指标

-SM中计算吞吐量
-L1 cache数据传输吞吐量
-L2 cache数据传输吞吐量
-DRAM数据传输吞吐量
-当前核函数属于计算密集型还是访存密集型
•Roofline model分析
-核函数中的L1 cache的cache hit几率, cache miss几率的多少
-核函数中各个代码部分的延迟
•精确到代码部分进行highlight
-核函数的load bandwidth, store bandwith, load次数, store次数
-L1 cache/shared memory, L2 cache, global memory中的memory access scheduling
-设置baseline,来进行核函数的优化前后的效率对比

整体上能够得到一个针对某一个kernel的非常精确的profiling,源码级别的性能捕捉,以及优化推荐

四、参考使用途径

方法一

在 host 端使用 Nsight 进行 ssh 远程 profiling

方法二

在 remote 端使用 Nsight 进行直接 profiling

方法三

在 remote 端通过CUI获取statistics之后传输到host端进行查看

***在当host端的nsight不能够直接ssh到 target device 情况下使用。比如说Jetson的profiling

方法四

在 remote 端直接使用CUI进行分析

***在当host端的nsight不能够直接ssh到 target device 情况下使用。比如说 Jetson 的profiling

在wsl中配置的问题参考链接

这篇关于CUDA编程 - Nsight system Nsight compute 的安装和使用 - (1) 学习记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/740852

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件