0

我正在尝试从 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 过程永无止境。我不确定我错过了什么。

4

1 回答 1

1

nvprof 不会修改进程退出行为,所以我认为你只是因为你的应用程序调用了很多内核而遭受了缓慢的痛苦。您有两种选择来加快速度。

1. 选择性地分析指标

--analysis-metrics选项允许收集许多指标,这需要重播内核 - 为每个内核运行收集一组不同的指标。

如果您的应用程序有很多内核调用,这可能需要一些时间。我建议您使用nvprof --query-metrics命令查询可用指标,然后手动选择您感兴趣的指标。

一旦您知道需要哪些指标,您就可以使用nvprof -m metric_1,metric_2,.... 这样,应用程序将分析更少的指标,因此需要更少的重放,并且运行得更快。

2. 选择性地分析内核

或者,您只能使用该--kernels <context id/name>:<stream id/name>:<kernel name>:<invocation>选项分析特定内核。

例如,nvprof --kernels ::foo:2 --analysis-metrics ./your_cuda_app将分析名称包含字符串的内核的所有分析指标foo,并且仅在其第二次调用时。此选项采用正则表达式,并且非常强大。


您可以混合搭配以上两种方法来加快分析速度。您将能够使用命令找到有关这些和其他 nvprof 选项的更多帮助nvprof --help

于 2017-05-25T04:16:03.157 回答