问题标签 [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 回答
436 浏览

tensorflow - nv-nsight-cu-cli 导致 TensorFlow 失败

我已经下载了最新的 Nsight Compute 分析工具,我想用它来对 Tensorflow 应用程序进行基准测试。我使用的代码在这里。当我执行它时它运行得非常好,当我用nvprof ./mnist.py它进行基准测试时完全没有问题。但是,当我尝试使用命令运行它时,sudo ./nv-nsight-cu-cli [path to the file]出现以下错误:

ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

我怀疑nv-nsight-cu-cli不知何故根本没有识别环境变量。周围有什么解决办法吗?

0 投票
1 回答
61 浏览

nvprof - 如何将 nvprof 应用于 Kinetica?

有人可以给我一个关于如何将 nvprof 应用于 Kinetica 的提示吗?

1) 我看到位于 GPU 上的 Kinetica 进程的名称是 gpudb_cluster_cuda,其父进程是 gpudb_host_manager。我发现 gpudb_host_manager 是由 /etc/rc.d/init.d/gpudb_host_manager 启动的。

2)因此我将其修改如下。这应该有效 - 即使对于它的子进程也是如此。但事实并非如此。没有为 gpudb_cluster_cuda 生成分析数据。

我将 nvprof 应用于 /etc/rc.d/init.d/gpudb,它会产生一些痕迹,但它根本不使用 GPU。

当然,我停止并重新启动了这些。欢迎任何评论。

0 投票
1 回答
124 浏览

performance - 多内核性能分析(CUDA C)

我有具有多个内核的 CUDA 程序在系列上运行(在同一个流中 - 默认一个)。我想对整个程序进行性能分析,特别是 GPU 部分。我正在使用 nvprof 工具使用一些指标进行分析,例如 completed_occupancy、inst_per_warp、gld_efficiency 等。

但是分析器分别为每个内核提供指标值,而我想为它们计算这些值以查看程序的 GPU 总使用量。我应该为每个指标取所有内核的(平均值或最大值或总数)吗?

0 投票
0 回答
426 浏览

python - Tensorflow - 配置文件自定义操作

我对在 GPU 上运行时测量自定义 Tensorflow Op 的详细性能的方法感兴趣。

到目前为止,我已经使用时间轴以及内部的 Tensorflow Profiler ( )尝试了这篇文章的方法。tf.profiler.Profiler两者都提供了非常相似的结果,如果我想调查网络,这很好,但是对于分析单个操作,输出太粗糙并且不包括操作内计算(至少我找不到方法) . 我的下一个尝试是使用 CUDA 分析器nvprof(或nvvp就此而言),它的方向更正确,并显示对 CUDA 内核和内存分配的单个调用。但是现在,不包括 CPU 计算。我试过运行nvprof --cpu-profiling on,但现在探查器永远不会完成(见这里

我的场景如下:我编写了一个自定义 Op,它与 2D 中的卷积非常相似,并且不应该花费更多时间来计算。在网络中,我的自定义 Op 的性能比tf.nn.conv2d. 使用tf.profiler.Profiler我得到以下信息:

所以在我看来,我的自定义操作在 GPU 上花费的时间差不多,但在 CPU 上的时间要长一个数量级以上。对于 GPU Ops,这是不可接受的,我想找到我的 Ops 在 CPU 上花费的时间。另外让我吃惊的是,我的 Ops 似乎只分配了原始 Conv Ops 分配的 GPU 内存的三分之一。

有没有办法获得我的自定义操作(包括 CPU 和 GPU 使用)的详细配置文件,可以向我解释我做错了什么并帮助我纠正错误?

0 投票
0 回答
234 浏览

cuda - 由于“内存依赖性”,仅寄存器指令如何停止?

我正在使用启用 PC 采样的 nvprof 分析 CUDA 内核,以了解我遇到的一些延迟问题。我使用的 GPU 是 P100(计算 6.0)

PC 采样报告说 DFMA 由于内存依赖性而经常停止。DFMA 的 SASS 代码如下:

我对这个问题的看法是,R8 需要通过 LDG.E.CI.64 加载,L2 上的未命中率非常高。

内存依赖停顿的定义是“无法进行加载/存储,因为所需的资源不可用或未充分利用,或者给定类型的太多请求未完成”。

让我感到困惑的是 DFMA 不是加载/存储操作,如果我认为停顿是由于 R8 上不可用的数据是正确的,那么它应该是执行依赖。DFMA 上的内存依赖停止意味着什么?

0 投票
1 回答
616 浏览

cuda - 为什么两个 CUDA 流中的操作不重叠?

我的程序是一个管道,它包含多个内核和 memcpys。每个任务将通过具有不同输入数据的相同管道。主机代码在处理任务时首先会选择一个 Channel,它是暂存器内存和 CUDA 对象的封装。在最后一个阶段之后,我将记录一个事件,然后去处理下一个任务。
主要流水线逻辑如下。问题是不同流中的操作不重叠。我附上了处理 10 个任务的时间表。您可以看到流中的任何操作都没有重叠。对于每个内核,一个块中有 256 个线程,一个网格中有 5 个块。用于 memcpy 的所有缓冲区都已固定,我确信我已满足这些要求用于重叠内核执行和数据传输。有人可以帮我找出原因吗?谢谢。

环境信息
GPU:Tesla K40m (GK110)
Max Warps/SM:64
Max Thread Blocks/SM:16
Max Threads/SM:2048
CUDA版本:8.0

视觉分析器中的时间线

0 投票
0 回答
54 浏览

c++ - nvprof 产生意想不到的分支效率结果

我按照教科书“专业CUDA C编程”中的翘曲发散示例(以下代码)。

显然(并且写在教科书上),math_kernel2应该有最好的分支效率,math_kernel1遵循并math_kernel3有最差的结果。然而,nvprof报告给我的结果与教科书相矛盾。我使用 CUDA 8.0 在 GTX 1080 Ti 上对这些内核进行了基准测试(我还添加了编译器标志-g -Gnvcc禁用优化),它报告了以下分支效率:

  1. 数学内核1 83.33%
  2. 数学内核2 100.00%
  3. math_kernel3 100.00%(预计小于math_kernel1,教科书上是71.43%)
0 投票
1 回答
1074 浏览

c++ - “nvprof”的结果中的“GPU 活动”和“API 调用”有什么区别?

“nvprof”的结果中的“GPU 活动”和“API 调用”有什么区别?

不知道为什么同一个函数会有时间差。例如,[CUDA memcpy DtoH] 和 cuMemcpyDtoH。

所以我不知道什么是正确的时间。我必须写一个测量值,但我不知道该使用哪个。

在此处输入图像描述

0 投票
2 回答
942 浏览

cuda - CUDA 中的 FLOP 效率

根据定义flop_sp_efficiency

达到峰值单精度浮点运算的比率

CUDA 手册在这里介绍了 FLOPS 。度量收益率比率,例如 10%。这引发了关于“峰值”一词的两个问题:

1-这是硬件特定的值吗?因此,nvprof 应该知道,为了计算比率,并且对于在特定设备上运行的所有应用程序,分母应该是恒定的?按照说明书,就是No_CUDA_cores * Graphic_clock_freq * 2。那是 nvprof 设置分母的方式吗?

2-这是否意味着在每个内核的程序运行时达到峰值?假设一个内核被调用 10 次。一次调用具有最高的 FLOPS(与硬件值无关),例如 2GFLOPS。然后计算效率sum(FLOPS_i)/10,给出 10 次调用的平均 FLOPS,然后将该平均值除以 2,得出该内核的 FLOPS 效率。在这个假设下,一个内核可能达到 2 GFLOPS,而另一个内核可能达到 4 GFLOPS。我这么说是因为该指标是在 nvprof 中按内核报告的。

对此有何评论?

0 投票
1 回答
341 浏览

cuda - cuda 探查器中的本地缓存命中指标

对于某些 CUDA 应用程序分析,我看到本地命中率(local_hit_rate 指标)的值为 0%。

我想用该值区分以下概念。

  1. 应用程序无权访问本地缓存。

  2. 对本地缓存的所有访问均未命中。

我怎样才能找到答案?由于inst_compute_ld_st,ldst_issued和的值ldst_executed非零,是否可以丢弃第一个问题?还是有别的东西?

该设备是M2000,即CC5.3 CC5.2