我正在尝试运行" nvprof"从命令行开始R.以下是我的工作方式:
./ nvprof --print-gpu-trace --devices 0 --analysis-metrics --export-profile / home / xxxxx /% p R
这给了我一个R提示,我写了R代码。我也可以用Rscript做。
我看到的问题是,当我给出--analysis-metrics选项时,它给了我很多类似的行 == 44041 ==重播内核" void ger_kernel(cublasGerParams)"
R过程永远不会结束。我不确定我错过了什么。
答案 0 :(得分:1)
nvprof没有修改进程退出行为,所以我认为你只是因为你的app调用很多内核而感到缓慢。你有两种方法可以加快速度。
<强> 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 --help
找到有关这些和其他nvprof选项的更多帮助。