问题标签 [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.
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 上没有这种详细的分析吗?(可能是因为是玩家卡)
cuda - CUDA Profiler 中“flop_count_sp”和“inst_fp_32”指标的含义
根据分析器用户指南:
flop_count_sp:非谓词线程执行的单精度浮点运算数(加法、乘法和乘法累加)。每个乘法累加操作都会为计数贡献 2。该计数不包括特殊操作。
inst_fp_32:非谓词线程(算术、比较等)执行的单精度浮点指令数
我有一个带有探查器输出的内核,可以添加到以下内容:
鉴于这些指标中的数字,我想知道这里的操作是什么,指令是什么?似乎 afma
是一个指令,但是两个操作。而add
andmul
是一个指令和一个操作。由于 SASS 程序集由分析器计算。是否有任何指令不计为操作?或相反亦然。我只想知道 nvprof 和 nvvp 指标的上下文。
另外,当我们谈论 TFLOP/s 的峰值性能时,OP
这里对应于我猜的操作?如果我想估计诸如计算到全局内存访问(CGMA)之类的东西,我应该使用flop_count_sp
而不是inst_fp_32
计算部分吗?提前致谢。
nvidia - nvprof 警告:CUPTI 和 CUDA 注入库的路径可能未在 LD_LIBRARY_PATH 中设置
当我尝试通过 Nvidia 的nvprof
分析器运行我使用 OpenACC 开发的程序时,我收到了主题中的消息,如下所示:
如果我运行nvprof
时-o [output_file]
未出现警告消息,但未创建输出文件。这里有什么问题?
LD_LIBRARY_PATH
设置在我的.bashrc
to:/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_TYPE
为nvidia
.
任何建议都会非常受欢迎。
干杯
multithreading - cuda内核'volta_sgemm_128x32_nn'是什么意思?
我正在研究 nvidia torch matmul 函数。
我无法理解里面的很多东西。
- sgemm_128_32 是什么意思?我看到 sgemm 中的“s”代表单精度,“gemm”表示一般矩阵乘法。但我不知道 128_32 的意思。我的输出矩阵尺寸为 128 x 32。但我知道 cutlass 使用外积优化了 sgemm。(我会给你链接,参考 1)实际上我无法理解链接。
(1) 128_32 是否仅表示输出矩阵的维度?(2)有什么方法可以实际计算我的输出矩阵(c,在我的代码中)?(例如,总共有128*32个线程。每个线程使用内积方式负责一个输出元素)
为什么网格和块各有 3 个维度以及网格和块如何用于 sgemm_128_32?网格由 x、y、z 组成。Block 由 x、y、z 组成。(1) 为什么需要 3 维?我看到(在上图中)块 X 有 256 个线程。(2) 这是真的吗?并且 Grid Y 是 4。所以这意味着 Grid Y 中有 4 个块。 (3) 这是真的吗?
通过使用该 pyprof 结果,我可以计算出使用了多少个 SM 吗?该SM中激活了多少条经线?
谢谢你。
参考 1:https ://developer.nvidia.com/blog/cutlass-linear-algebra-cuda/
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 对其进行分析时。它说没有内核分析。
windows - 探查器(nvvp 和 nvprof)不显示“页面错误”信息
我正在分析NVIDIA 开发人员论坛上的CUDA 初学者统一内存中提供的测试代码。
代码:
问题:作者提供的分析结果显示了有关“页面错误”的信息,但是当我运行nvprof
和nvvp
分析器时,我没有得到任何有关页面错误的信息。是否有任何标志或需要明确设置的东西才能获取该信息?
我的 nvprof 输出:
我的 nvvp 分析结果: