NVIDIA Visual Profiler:内核边界数据不足

NVIDIA Visual Profiler: Insufficient kernel bounds data

我试图了解为什么我的 CUDA 内核性能相对较低,我希望通过 NVIDIA 分析器得到一些答案。

我的 CUDA 程序是一个更大的应用程序的 'boiled down' 版本,隔离并运行有问题的内核。该程序多次启动内核,以测量其执行时间作为多次启动的平均值。在定时循环之后,从设备到主机的内存副本被发出以确保所有内核调用都已完成。该程序是用 CUDA C++ 编写的。

我是这样构建程序的:

main.o: main.cu
    nvcc -res-usage -arch=sm_61  -c $<

main: main.o stopwatch.o
    g++ -o $@ $^ -lcudart -L/usr/local/cuda-11.0/lib64

此测试是在配备 Intel CPU 和 NVIDIA GeForce GTX 1070 的 PC 上完成的。OS 是 Ubuntu 20.04,带有来自 NVIDIA 网站的全新安装的 CUDA 11使用驱动程序 450.51.06:

nvidia-smi:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce GTX 1070    On   | 00000000:01:00.0  On |                  N/A |
| 28%   38C    P8     8W / 151W |    317MiB /  8111MiB |      3%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

使用以下命令生成分析文件:

sudo /usr/local/cuda-11.0/bin/nvprof -o main.nvvp --profile-from-start off ./main

我也尝试过从一开始就进行分析,但它会导致以下相同的问题。

以下命令用于启动可视化分析器:

nvvp -vm /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java main.nvvp

Visual 探查器引导我完成几个步骤,当谈到“执行内核分析”时,程序告诉我:

Insufficient kernel bounds data. The data needed to calculate compute, memory, and latency bounds for the kernel could not be collected

我的 GPU 上没有这种详细的分析吗? (可能因为是玩家卡)

默认情况下,

nvprof 将仅捕获其生成的输出文件中的少量信息。当输出文件导入 nvvp 时,这足以生成应用程序时间线,但没有足够的信息来启用 nvvp.

的所有不同功能

根据 documentation,建议将 nvprof--analysis-metrics 开关用于此类用途。

--analysis-metrics 在探查器文档中被提及了大约 6 次不同的时间,因此您可能只想搜索它以查看所有参考或使用建议。

请注意,--analysis-metrics 可以捕获大量信息。对于大型、复杂的应用程序,它可能会大大增加分析器处理数据所花费的时间。因此,如果您明确知道要查找哪些数据,则可能希望改为指定特定指标。但是,如果没有 --analysis-metrics,导入文件时各种 nvvp 分析工具可能无法正常工作。