问题标签 [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 投票
2 回答
3413 浏览

python - 无法导入 nvprof 生成的配置文件数据

我正在尝试使用nvprof分析基于 TensorFlow 的代码。我为此使用以下命令

该程序成功运行,但最后显示以下错误。

0 投票
0 回答
356 浏览

cuda - 切片在cuda中是什么意思?

我是 cuda 编程的新手。

我必须使用关于我的应用程序的 nvprof 进行 GPU 分析。

我找到了一个指标 l2_subp0_write_sector_misses,它表示从 L2 缓存的 slice 0 发送到 DRAM 的写请求数。

但我不知道切片是什么意思。

正如我猜测的那样,一个切片是一个 sm,因为 Gtx750 有 4 个 sm,并且事件中有 4 个切片(l2_subp0_write_sector_misses,l2_subp1_write_sector_misses,l2_subp2_write_sector_misses,l3_subp0_write_sector_misses)

但是,当我使用 1 个线程测试应用程序时,所有 write_misses 事件都有价值。

我认为如果一个切片是一个 sm,那么只有一个 write_misses 具有价值,而其他的都是 0。

什么是切片?

1个线程使用1个sm有错吗?

0 投票
0 回答
839 浏览

tensorflow - nvprof 显示 TensorFlow 错误

我正在尝试使用cifar10_multigpu_train.py. 我正在使用以下命令

它启动应用程序,但一段时间后它显示以下错误和应用程序退出。

知道出了什么问题。文件运行良好,无需使用 nvprof。
注意:我安装了 0.12.0 版本,我在 IBM PPC64le 机器上。

0 投票
1 回答
877 浏览

cuda - 使用 nvprof 计算 CUDA 内核执行次数

是否可以用来nvprof计算 CUDA 内核执行次数(即启动了多少内核)?

现在,当我运行 nprof 时,我看到的是:

0 投票
1 回答
1912 浏览

python - 在分析 python 脚本时,nvprof 正在使用所有可用的 GPU

我正在使用具有 2 个 GPU 的远程机器来执行具有 CUDA 代码的 Python 脚本。为了找到可以提高代码性能的地方,我尝试使用nvprof.

我已经在我的代码上设置了我只想在远程机器上使用 2 个 GPU 中的一个,尽管在调用时nvprof --profile-child-processes ./myscript.py,每个 GPU 上都会启动一个具有相同 ID 的进程。

nvprof为了只使用一个 GPU 进行分析,我可以给出任何论据吗?

0 投票
1 回答
891 浏览

cuda - nvidia 视觉分析器遇到无效选项:--openacc-profiling

在 nvidia Visual Profiler 上运行一个简单的应用程序会显示错误:

我尝试分析的任何 gpu 应用程序都会出现相同的错误。

我试图取消选中“启用 OpenACC 分析”选项并得到同样的错误。

版本:

0 投票
1 回答
889 浏览

cuda - 当块的数量小于可用的 SM 时,如何将块调度到 CUDA 中的 SM 中?

这个问题源于在内核中观察到的理论占用率和实际占用率之间的差异。我知道计算器和 nvprof 之间的不同占用率,以及关于从块到 CUDA 中的 SM 分布的详细信息的问题

让我们考虑一个计算能力 = 6.1 和 15 个 SM 的 GPU(GTX TITAN、Pascal 架构、芯片组 GP104)。让我们考虑一个 2304 个元素的小问题。

如果我们配置一个有 512 个线程的内核,那么每个线程将处理一个元素,我们需要 5 个块来操作所有数据。而且内核是如此之小,以至于在资源使用方面没有任何限制,无论是寄存器还是共享内存。

因此,理论占用率为 1,因为可以在一个 SM(2048 个线程)中分配四个并发块,从而导致 2048 / 32 = 64 个活动扭曲(最大值)。

然而,实现的占用率(由 nvidia 分析器报告)约为 0.215,这可能与块映射到 SM 的方式有关。那么,当块的数量小于可用的 SM 时,如何将块调度到 CUDA 中的 SM 中?

选项 1.-将 4 个 512 线程块调度到一个 SM 中,将 1 个 512 块调度到另一个 SM 中。在这种情况下,占用率为 (1 + 0.125) / 2 = 0.56。我认为最后一个块只有 512 个线程中的 256 个处于活动状态,才能到达数组的最后 256 个元素,并且它在第二个 SM 中分配。因此,考虑到经纱粒度,只有 8 个经纱处于活动状态。

选项 2.-将每个 512 块调度到不同的 SM。既然我们有 15 个 SM,为什么只有一个 SM 有很多块?在这种情况下,我们每个 SM 有 512 / 32 = 16 个活动经线(最后一个除外,它只有 256 个活动线程)。因此,我们在四个 SM 中实现了 0.25 的占用率,在最后一个 SM 中实现了 0.125,导致 (0.25 + 0.25 + 0.25 + 0.25 + 0.125) / 5 = 0.225。

选项 2 更接近视觉分析器报告的占用率,我们认为这是幕后发生的事情。无论如何,值得一问:当块数少于可用 SM 时,如何将块调度到 CUDA 中的 SM 中?是否记录在案?

-- 请注意,这不是家庭作业。这是使用不同第三方库的项目中的真实场景,这些库在由多个内核组成的管道的某些步骤中需要处理少量元素。

0 投票
1 回答
512 浏览

cuda - 在内部使用 CUPTI 函数时,无法使用 nvprof 分析 cuda 代码

我在做一个简单的实验。大家可能都知道CUPTI的callback_metric示例代码(位于CUPTI文件夹:)/usr/local/cuda/extras/CUPTI/sample/callback_metric。它仅包含一个简单的代码,用于在运行vectorAdd内核时读取度量。当我编译和运行代码时,一切正常。

但是当我在nvprof命令 ( nvprof ./callback_metric) 下运行此代码时,我收到如下错误消息:

nvprof 和其他基于 CUPTI 的代码都可以单独工作。

0 投票
1 回答
469 浏览

cuda - 如何在不使用 nvprof 的情况下获取 CUDA 事件的开始和结束时间

我写了一些使用 JCuda 来执行一些 CUDA 内核的 Java 代码。我想分析应用程序以了解流是如何重叠的等等。我可以使用 cuda 事件调用(例如 cudaEventElpasedTime)来获取内核的执行时间,但我不知道如何获取同一内核的开始和结束时间戳。

我知道 nvprof 可以生成这样的结果并显示时间线,但我找不到使用 Java 应用程序运行 nvprof 的方法。

编辑:现在我了解了如何使用 nvprof 来分析 Java 应用程序,这要归功于答案。我仍然更喜欢使用 cudaEvent 调用来获取开始和结束时间,这样我就有更多的控制权。似乎 nvprof 可以获得该信息,但最终用户没有 API 可以这样做吗?

0 投票
1 回答
173 浏览

r - nvprof R gputools 代码永无止境

我正在尝试从 R 上的命令行运行“nvprof”。这是我的做法:

./nvprof --print-gpu-trace --devices 0 --analysis-metrics --export-profile /home/xxxxx/%p R

这给了我一个 R 提示,我编写了 R 代码。我也可以使用 Rscript。

我看到的问题是,当我给出 --analysis-metrics 选项时,它给了我很多类似于 ==44041== Replaying kernel "void ger_kernel(cublasGerParams)" 的行

R 过程永无止境。我不确定我错过了什么。