问题标签 [nvprof]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
370 浏览

cuda - NVIDIA Visual Profiler:内核边界数据不足

我试图了解为什么我的 CUDA 内核的性能相对较低,我希望通过 NVIDIA 分析器得到一些答案。

我的 CUDA 程序是一个大型应用程序的“简化”版本,它隔离和运行有问题的内核。该程序多次启动内核,以测量其执行时间作为多次启动的平均值。在计时循环之后,发出从设备到主机的内存副本,以确保所有内核调用都已完成。该程序是用 CUDA C++ 编写的。

这就是我构建程序的方式:

此测试是在配备 Intel CPU 和 NVIDIA GeForce GTX 1070 的 PC 上完成的。操作系统是 Ubuntu 20.04,带有来自 NVIDIA 网站的新安装的 CUDA 11 以及驱动程序 450.51.06:

以下命令用于生成分析文件:

sudo /usr/local/cuda-11.0/bin/nvprof -o main.nvvp --profile-from-start off ./main

我也尝试从一开始就进行分析,但它会导致下面的相同问题。

以下命令用于启动可视分析器:

nvvp -vm /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java main.nvvp

视觉分析器引导我完成几个步骤,当涉及到“执行内核分析”时,程序告诉我:

内核边界数据不足。无法收集计算内核的计算、内存和延迟范围所需的数据

我的 GPU 上没有这种详细的分析吗?(可能是因为是玩家卡)

0 投票
1 回答
127 浏览

cuda - CUDA Profiler 中“flop_count_sp”和“inst_fp_32”指标的含义

根据分析器用户指南

flop_count_sp:非谓词线程执行的单精度浮点运算数(加法、乘法和乘法累加)。每个乘法累加操作都会为计数贡献 2。该计数不包括特殊操作。

inst_fp_32:非谓词线程(算术、比较等)执行的单精度浮点指令数

我有一个带有探查器输出的内核,可以添加到以下内容:

鉴于这些指标中的数字,我想知道这里的操作是什么,指令是什么?似乎 afma是一个指令,但是两个操作。而addandmul是一个指令和一个操作。由于 SASS 程序集由分析器计算。是否有任何指令不计为操作?或相反亦然。我只想知道 nvprof 和 nvvp 指标的上下文。

另外,当我们谈论 TFLOP/s 的峰值性能时,OP这里对应于我猜的操作?如果我想估计诸如计算到全局内存访问(CGMA)之类的东西,我应该使用flop_count_sp而不是inst_fp_32计算部分吗?提前致谢。

0 投票
1 回答
742 浏览

nvidia - nvprof 警告:CUPTI 和 CUDA 注入库的路径可能未在 LD_LIBRARY_PATH 中设置

当我尝试通过 Nvidia 的nvprof分析器运行我使用 OpenACC 开发的程序时,我收到了主题中的消息,如下所示:

如果我运行nvprof-o [output_file]未出现警告消息,但未创建输出文件。这里有什么问题?

LD_LIBRARY_PATH设置在我的.bashrcto:/opt/nvidia/hpc_sdk/Linux_x86_64/20.7/cuda/11.0/lib64/因为我在那里找到了这些文件(它们的名称中有“cupti”和“inj”,我认为它们是需要的):

我在 Ubuntu 18.04 上。Nvidia GeForce RTX 2070 的工作站,并安装了 CUDA 版本 11。

nvidia-smi命令给了我这个:

我拥有的编译器(nvidia 和 portland)来自最新的 Nvidia HPC-SDK,版本 20.7-0

我用选项编译我的程序-acc -Minfo=accel,不知道如何设置-ta=以及是否需要它?

PS 我也不确定是否运行我的代码,无论是否nvprof使用 GPU,尽管我确实设置ACC_DEVICE_TYPEnvidia.

任何建议都会非常受欢迎。

干杯

0 投票
0 回答
181 浏览

multithreading - cuda内核'volta_sgemm_128x32_nn'是什么意思?

我正在研究 nvidia torch matmul 函数。

我使用 pyprof 分析了这段代码,这给了我下面的结果。 在此处输入图像描述

我无法理解里面的很多东西。

  1. sgemm_128_32 是什么意思?我看到 sgemm 中的“s”代表单精度,“gemm”表示一般矩阵乘法。但我不知道 128_32 的意思。我的输出矩阵尺寸为 128 x 32。但我知道 cutlass 使用外积优化了 sgemm。(我会给你链接,参考 1)实际上我无法理解链接。

(1) 128_32 是否仅表示输出矩阵的维度?(2)有什么方法可以实际计算我的输出矩阵(c,在我的代码中)?(例如,总共有128*32个线程。每个线程使用内积方式负责一个输出元素)

  1. 为什么网格和块各有 3 个维度以及网格和块如何用于 sgemm_128_32?网格由 x、y、z 组成。Block 由 x、y、z 组成。(1) 为什么需要 3 维?我看到(在上图中)块 X 有 256 个线程。(2) 这是真的吗?并且 Grid Y 是 4。所以这意味着 Grid Y 中有 4 个块。 (3) 这是真的吗?

  2. 通过使用该 pyprof 结果,我可以计算出使用了多少个 SM 吗?该SM中激活了多少条经线?

谢谢你。

参考 1:https ://developer.nvidia.com/blog/cutlass-linear-algebra-cuda/

0 投票
0 回答
33 浏览

c - 在 cuda c 中使用矩阵加法,代码执行,但是在使用 nvprof 对其进行分析时。它说没有内核被分析

nvprof 配置文件的 API 就好了。但是说没有内核被分析。它显示这 2 条警告消息“ ==525867== 警告:由于设备缓冲区空间不足,4 条记录的时间戳无效。您可以使用选项 --device-buffer-size 配置缓冲区空间。==525867== 警告:由于信号量池大小不足,1 条记录的时间戳无效。您可以使用选项 --profiling-semaphore-pool-size 配置池大小。==525867== 分析结果:未分析内核。" 我正在使用 NVIDIA GeForce GPU。

在 cuda c 中使用矩阵加法,代码执行但在使用 nvprof 对其进行分析时。它说没有内核分析。

0 投票
1 回答
51 浏览

windows - 探查器(nvvp 和 nvprof)不显示“页面错误”信息

我正在分析NVIDIA 开发人员论坛上的CUDA 初学者统一内存中提供的测试代码。

代码:

问题:作者提供的分析结果显示了有关“页面错误”的信息,但是当我运行nvprofnvvp分析器时,我没有得到任何有关页面错误的信息。是否有任何标志或需要明确设置的东西才能获取该信息?

我的 nvprof 输出:

我的 nvvp 分析结果:

在此处输入图像描述