问题标签 [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.
cuda - 如何仅通过 nvprof 分析 CUDA 应用程序
我想编写一个脚本来仅使用命令工具来分析我的 cuda 应用程序nvprof
。目前,我主要关注两个指标:GPU 利用率和 GPU flops32 (FP32)。
GPU 利用率是 GPU 处于活动状态的时间的一部分。GPU的活动时间可以很容易地获得nvprof --print-gpu-trace
,而应用程序的经过时间(没有开销)对我来说并不清楚。我使用视觉分析器nvvp
来可视化分析结果并计算 GPU 利用率。似乎经过的时间是第一次和最后一次 API 调用之间的间隔,包括开销时间。
GPU flops32 是 GPU 处于活动状态时每秒执行的 FP32 指令数。我遵循 Greg Smith 的建议(如何计算内核的 Gflopsnvprof
),发现生成flop_count_sp_*
指标非常慢。
所以我想问两个问题:
- 如何使用 nvprof 计算 CUDA 应用程序的运行时间(无开销)?
- 有没有更快的方法来获得 gpu flops32?
任何建议将不胜感激。
================更新=======================
对于上面的第一个问题,我的意思是没有开销的经过时间实际上是会话时间——开销时间显示在 nvvp 结果中:
linux - 分析任意 CUDA 应用程序
我当然知道nvvp
and的存在nvprof
,但是由于各种原因nvprof
不想使用涉及大量共享库的应用程序。nvidia-smi
可以挂钩驱动程序以找出正在运行的内容,但我找不到nvprof
连接到正在运行的进程的好方法。
有一个标志--profile-all-processes
实际上确实给了我一条消息“NVPROF 正在分析过程 12345”,但没有进一步打印出来。我正在使用 CUDA 8。
在这种情况下,如何获得 CUDA 内核的详细性能细分?
cuda - 每次使用 nvprof 调用 CUDA 内核函数时如何收集事件值?
使用 nvprof 分析 CUDA 程序。
我再次发布问题。
与nvprof --events tex0_cache_sector_queries --replay-mode kernel ./matrixMul
,
或 nvprof --events tex0_cache_sector_queries --replay-mode application ./matrixMul
,
我们可以收集事件值结果:
以上结果为总结。内核函数matrixMulCUDA调用tex0_cache_sector_queries的301次调用值。它只有 301 次调用的min, max, avg, 总值,即汇总结果。
我想从每次调用 matrixMulCUDA 时收集完整的 301 次 tex0_cache_sector_queries 值。另一方面,每次调用内核函数 matrixMulCUDA 时,我都想收集 tex0_cache_sector_queries 事件值。如何收集?
cuda - 从 Nvprof 和 GPGPUsim 了解 IPC 指标
Pascal SM 每个 SM 有 4 个调度程序,当我们得到类似 3 作为 IPC 的东西时,这是否意味着 SM 在一个周期中调度了 3 条指令?此外,NVPROF 是否考虑该内核的所有 SM 的平均 IPC 并报告它?
如果一个 SM 的 IPC 为 3,那么具有 2 个 SM 的 GPU 应该给我们 6 的 IPC,对吗?
另外,我正在使用一个名为 GPGPU sim 的模拟器,它报告更高范围 (80-120) 的 IPC 我假设他们正在计算每个内核的 IPC 并将指标缩放到整个模拟 GPU,但我不确定。
有人可以验证IPC指标吗?
cuda - 如何解释方括号中显示的数字?
内核名称后方括号中显示的数字与启动该内核的 CUDA API 相关。(来自 GPU-Trace 和 API-Trace 模式)
内核名称后方括号中显示的数字是
- 94,
- 105,
- 2191,
- 2198.
那么NVIDIA CUDA Runtime API中的 CUDA API [94](和其他)到底是什么?
python - CUDA 目标的 Numba 和 guvectorize:代码运行速度比预期慢
值得注意的细节
- 大型数据集(1000 万 x 5),(200 x 1000 万 x 5)
- Numpy 主要是
- 每次运行后需要更长的时间
- 使用 Spyder3
- 视窗 10
首先是尝试将 guvectorize 与以下函数一起使用。我正在传递一堆 numpy 数组并尝试使用它们来乘以两个数组。如果使用 cuda 以外的目标运行,则此方法有效。但是,当切换到 cuda 时,会导致未知错误:
文件 "C:\ProgramData\Anaconda3\lib\site-packages\numba\cuda\decorators.py", >line 82, in jitwrapper debug=debug)
TypeError: init () got an unexpected keyword argument 'debug'
在遵循了我可以从这个错误中找到的所有内容之后,我只遇到了死胡同。我猜这是一个非常简单的修复,我完全错过了,但是哦,好吧。还应该说,这个错误只在运行一次后由于内存过载而崩溃。
所有的数组都是 numpy
尝试在命令行中使用 nvprofiler 运行代码会导致以下错误:
警告:当前配置不支持统一内存分析,因为在此多 GPU 设置上检测到一对不支持对等的设备。当对等映射不可用时,系统回退到使用零拷贝内存。它会导致访问统一内存的内核运行速度变慢。更多详细信息,请访问: http ://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#um-managed-memory
我意识到我正在使用启用 SLI 的显卡(两张卡是相同的,evga gtx 1080ti,并且具有相同的设备 ID),所以我禁用了 SLI 并添加了“CUDA_VISIBLE_DEVICES”行来尝试限制到另一张卡,但是我留下相同的结果。
我仍然可以使用 nvprof 运行代码,但与 njit(parallel=True) 和 prange 相比,cuda 函数速度较慢。通过使用较小的数据大小,我们可以运行代码,但它比 target='parallel' 和 target='cpu' 慢。
为什么 cuda 这么慢,这些错误是什么意思?
谢谢您的帮助!
编辑:这是代码的一个工作示例:
我可以使用 gtx 1080ti 在 cuda 中运行代码,但是,它比并行或 cpu 运行要慢得多。我查看了有关 guvectorize 的其他帖子,但没有一篇文章帮助我了解在 guvectorize 中运行什么是最佳的,哪些不是最佳的。有没有办法让这段代码“对 cuda 友好”,或者只是在数组之间进行乘法太简单而看不到任何好处?
cuda - CUDA 对数:nvprof 以双精度检测单精度操作
我在 CUDA 中以双精度计算“log(x)”,但是当我分析时,它使用度量“flop_count_sp_special”检测单精度操作。
我正在使用“-arch=sm_30”进行编译以确保计算能力 3.0 和双精度算术,但我似乎无法找到一种方法来确保以双精度计算特殊函数。这可能吗?
cuda - 如何通过 nvprof 在短时间内分析 CUDA 应用程序?
我想通过 nvprof 生成一个限制配置文件。如何将分析时间限制为 5 秒?
cuda - How to print api calls per thread with nvprof
I am profiling a CUDA application and dumping the logs to a file say target.prof
My application uses multiple threads to dispatch kernels and I want to observe the api calls from just one of those threads.
I tried using nvprof -i target.prof --print-api-trace
but this does not print the thread_id.
When I open this file with the visual profiler, I can see which API calls were launched from which thread. How can I access the same information using the command line profiler?
Edit: View in the visual profiler
cuda - 在 nvprof 中获取执行时间
有没有办法像度量一样在 nvprof 中获取内核执行时间?
例如,要获取我输入的 DRAM 读取事务:
我的问题是:有没有类似的东西
我想在一个命令行中收集一小组指标,而不必使用
作为单独的命令。