问题标签 [nvvp]
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 测量每个扭曲的银行冲突?
我正在做一个详细的代码分析,我想测量每个 warp 的银行冲突总数。
nvvp
文档列出了这个指标,这是我能找到的唯一一个与银行冲突相关的指标:
shared_replay_overhead:每条执行指令因共享内存冲突而重播的平均次数
当我使用nvprof
(或nvvp
)分析指标时,我得到如下结果:
我需要利用这个值0.089730
或设计一些其他方法来衡量银行冲突的数量。
我知道这个值是所有正在执行的经纱的“平均值”。如果我必须测量每个 warp 的银行冲突总数,有没有办法使用nvprof
结果来做到这一点?
我想到的可能的方法:
- 通过使用
shared_replay_overhead
结果并在公式中使用它们来计算银行冲突的数量。我猜我必须应用某种公式,比如shared_replay_overhead * Total number of warps launched
我事先知道的地方Total number of warps launched
,但我不知道是什么。 - 通过首先检测它是四路存储库冲突、八路存储库冲突等,然后将
4
/乘以8
共享内存操作发生的次数(如何测量?)。
除了nvprof
结果之外,这可能还需要相当好的关于 GPU 架构的技术知识,我认为我还没有。作为记录,我的 GPU 是 Kepler 架构,SM 3.5。
即使我可以测量每个块而不是每个扭曲的银行冲突数量,也足够了。之后,我可以进行必要的计算以获取每个经线的值。
profiling - 使用 NVIDIA GPU 在 Windows 上分析 OpenCL 应用程序
你能帮助我吗?我正在 Windows 7 x64 上开发 OpenCL 应用程序。硬件为 Intel Core i5、NVIDIA GTX 770。OpenCL 使用 NVIDIA 进行加速。
如果我尝试使用 Intel VTune Amplifier XE 2015,我的应用程序将在分析结束时挂起并且不返回任何报告。文档建议禁用所有“Cn(ACPI Cn) 向 OS 报告”BIOS 选项。但绝对不清楚如何更改我的应用程序代码以避免这种挂起。
我还尝试使用本手册https://github.com/UoB-HPC/UoB-HPC.github.io/blob/master/_posts/2015-05-27-nvvp-import-opencl.md使用 NVVP . 不幸的是,分析器生成错误:无法分析应用程序。“另一个 CUDA 工具(分析器、调试器、memcheck)当前正在运行,它会阻止对应用程序进行分析”。仅在运行 NVVP 时也会出现此错误。
sorting - 为什么连续推力排序和减少命令之间在 GPU 上没有活动?
请参考下面显示我的 CUDA 代码的 Nvidia Visual Profiler 会话的两个快照:
nvprof 会话的快照显示了thrust::sort 和thrust::reduce 调用执行时间线
突出显示 sort 和 reduce 调用以显示所用时间和执行之间的差距
你可以看到两次调用之间有大约 70 us 的差距,那么第一次和第二次调用thrust::sort()
之间就有很大的差距。快照中总共有大约 300 us 的此类间隙可见。我相信这些是“空闲”时间,也许是推力库引入的。无论如何,我找不到任何相关的讨论,或者 Nvidia 的文档。有人可以解释为什么我有如此明显的“空闲”时间吗?加起来,这样的时间占我应用程序执行时间的 40%,所以这对我来说是个大问题!thrust::reduce()
thrust::sort()
此外,我测量到我编写的对连续 cuda 内核的调用之间的差距大约只有 3 us!
我编写了一个示例 cuda 代码以便在此处发布:
此示例函数的 nvprof 会话的快照
tensorflow - nvprof 显示 TensorFlow 错误
我正在尝试使用cifar10_multigpu_train.py
. 我正在使用以下命令
它启动应用程序,但一段时间后它显示以下错误和应用程序退出。
知道出了什么问题。文件运行良好,无需使用 nvprof。
注意:我安装了 0.12.0 版本,我在 IBM PPC64le 机器上。
parallel-processing - 如何解读 NVIDIA Visual Profiler 分析/建议?
我对 CUDA 比较陌生,目前正在进行一个项目,旨在加速连接 gpu 的嵌入式系统中的计算机视觉应用程序(NVIDIA TX1)。我要做的是在两个库之间进行选择:OpenCV 和 VisionWorks(包括 OpenVX)。
目前,我已经编写了运行 Canny Edge Detection 算法的测试代码,两个库显示了不同的执行时间(VisionWorks 实现大约减少了 30~40% 的时间)。
所以,我想知道原因可能是什么,因此分析了花费最多时间的内核:来自 OpenCV4Tegra 的'canny::edgesHysteresisLocalKernel',它占据了整个应用程序的 37.2%(来自 OpenCV 实现和 VisionWorks 实现)和VisionWorks 的“edgesHysteresisLocal”。
我遵循了“引导分析”,分析器建议应用程序都受延迟限制,下面是 VisionWorks 的“edgesHysteresisLocal”和 OpenCV4Tegra 的“canny::edgesHysteresisLocalKernel”的捕获。
OpenCV4Tegra - canny::edgesHysteresisLocalKernel
VisionWorks - 边缘HysteresisLocal
所以,我的问题是,
从分析中,我能看出不同表现的原因是什么?
此外,在分析一般的 CUDA 应用程序时,从哪里开始比较好?我的意思是,有很多指标,很难说要看什么。
是否有一些关于一般分析 CUDA 应用程序的教育材料?(我查看了 NVIDIA 的许多幻灯片,我认为它们只是说明了指标的定义,而不是一般从哪里开始。)
-- 顺便说一下,据我所知,NVIDIA 不提供 VisionWorks 和 OpenCV4Tegra 的源代码。如我错了请纠正我。
预先感谢您的回答。
crash - nsight EE and nvvp both crash during startup on Ubuntu 16.10
Whenenevr I start both applications they crash after the splash-screen appears. A small dialog appears with the message an error has occurred. see the log file null
(I don't know where to find said null file).
nsight console error message
nvvp console error message
What's unusual is that nsight 7.5 (installed previously still works).
cuda - CUDA 指针算法导致未合并的内存访问?
我正在使用必须对指针进行操作的 CUDA 内核。内核基本上执行大量非常小的缩减,最好串行完成,因为缩减的大小为 Nptrs=3-4。以下是内核的两种实现:
如名称所示,内核“sepderef”的执行速度比其对应内核快约 40%,一旦计算启动开销,在 Nptrs=3、Nx=60000 的 M2090 上实现约 85GBps 有效带宽,ECC 开启(~160GBps将是最佳的)。
通过 nvvp 运行这些表明内核受带宽限制。然而,奇怪的是,我标记的行 //FLAGGED 被分析器突出显示为次优内存访问区域。我不明白为什么会这样,因为这里的访问权限在我看来是合并的。为什么不呢?
编辑:我忘了指出这一点,但请注意 //FLAGGED 区域正在访问我已经完成算术运算的指针,而其他区域是使用方括号运算符访问的。
cuda - CUDA Profiler 中的依赖分析选项
我已经实现了一个使用单个 GPU 的程序,该程序使用该cudaStreamWaitEvent()
函数使用事件在两个流中设置依赖关系。
为了验证这种依赖关系,是否可以使用 Nvidia Visual Profiler 上的“依赖关系分析”视图?
如果不是,依赖分析视图中的以下每个选项提供什么?
- 聚焦关键路径
- 突出执行依赖项
nvidia 官方网站和此处似乎没有有关这些选项的详细信息
cuda - DtoD 和 PtoP 内存副本有什么区别?
在使用 nvprof 分析应用程序时,我发现了两者PtoP
和DtoD
memcpy。我不确定这两者之间的区别。