0

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

我的 CUDA 程序是一个大型应用程序的“简化”版本,它隔离和运行有问题的内核。该程序多次启动内核,以测量其执行时间作为多次启动的平均值。在计时循环之后,发出从设备到主机的内存副本,以确保所有内核调用都已完成。该程序是用 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 上完成的。操作系统是 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

视觉分析器引导我完成几个步骤,当涉及到“执行内核分析”时,程序告诉我:

内核边界数据不足。无法收集计算内核的计算、内存和延迟范围所需的数据

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

4

1 回答 1

3

nvprof默认情况下,只会在它生成的输出文件中捕获少量信息。当输出文件被导入到时,这足以生成应用程序时间线,nvvp但没有足够的信息来启用nvvp.

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

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

Note that --analysis-metrics can capture a large amount of information. For a large, complex application, it may substantially increase the times the profilers spend processing data. Therefore if you know specifically which data you are looking for, you may wish to specify specific metrics instead. Without --analysis-metrics, however, various nvvp analysis tools may not work correctly when you import the file.

于 2020-08-19T14:15:13.300 回答