![](/img/trans.png)
[英]Nvidia visual profiler not showing cudaMalloc() after kernel launch
[英]NVIDIA Visual Profiler: Insufficient kernel bounds data
我試圖了解為什么我的 CUDA kernel 的性能相對較低,我希望通過 NVIDIA 分析器得到一些答案。
我的 CUDA 程序是一個大型應用程序的“簡化”版本,用於隔離和運行有問題的 kernel。 該程序多次啟動 kernel 以測量其執行時間作為多次啟動的平均值。 在計時循環之后,發出從設備到主機的 memory 副本,以確保所有 kernel 調用都已完成。 程序用 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
視覺分析器引導我完成幾個步驟,當涉及到“執行 Kernel 分析”時,程序告訴我:
kernel 邊界數據不足。 無法收集計算 memory 和延遲范圍所需的數據 kernel
我的 GPU 上沒有這種詳細的分析嗎? (可能是因為是玩家卡)
默認情況下, nvprof
只會在它生成的 output 文件中捕獲少量信息。 當 output 文件導入nvvp
時,這足以生成應用程序時間線,但信息不足以啟用nvvp
的所有不同功能。
根據文檔,建議將nvprof
的--analysis-metrics
開關用於此類用途。
--analysis-metrics
在分析器文檔中被引用了大約 6 次,因此您可能只想搜索它以查看其使用的所有參考或建議。
請注意, --analysis-metrics
可以捕獲大量信息。 對於大型、復雜的應用程序,它可能會大大增加分析器處理數據的時間。 因此,如果您明確知道要查找哪些數據,則可能希望指定特定的指標。 但是,如果沒有--analysis-metrics
,導入文件時各種nvvp
分析工具可能無法正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.