【发布时间】:2012-09-14 04:31:20
【问题描述】:
在向其中添加 CUDA 代码之前,我们希望使用 Nividia Nsight Eclipse(Linux 版本)对其进行分析。想法是先对 C++ 进行剖析,找到热点,将其转换为 CUDA,再次剖析,然后迭代此过程以逐步加快代码速度。但是,当我们仅对 C++ 进行分析时,分析器似乎需要一些现有的 CUDA 代码才能生成时间线和分析输出。有人遇到过这种情况么?
【问题讨论】:
在向其中添加 CUDA 代码之前,我们希望使用 Nividia Nsight Eclipse(Linux 版本)对其进行分析。想法是先对 C++ 进行剖析,找到热点,将其转换为 CUDA,再次剖析,然后迭代此过程以逐步加快代码速度。但是,当我们仅对 C++ 进行分析时,分析器似乎需要一些现有的 CUDA 代码才能生成时间线和分析输出。有人遇到过这种情况么?
【问题讨论】:
Nsight Eclipse 版只能分析 CUDA 代码。您可能需要安装第 3 方分析插件来分析主机代码。
您可以尝试从 Eclipse Foundation 站点安装 OProfile 集成(将 http://download.eclipse.org/releases/indigo/ 粘贴到帮助/安装新软件...对话框中) - 我刚刚尝试过,但无法正确设置 oprofile 命令行。
【讨论】:
您可以使用 nvtx(NVIDIA 工具扩展)手动检测您的代码,并在 Nsight 中显示时间线,但对于自动分析和详细计数器,它只能分析 GPU 代码。
【讨论】:
是的,Nsight Eclipse 可以分析 C++ 代码。重新表述您的问题,它还可以分析主机 (CPU) C++ 代码。默认情况下,它只分析 GPU 代码。 CPU 分析是一项更加手动的任务;它不会自动分析功能。
您需要使用 NVTX。像这样:
#include "nvToolsExt.h"
nvtxNameOsThread(0,"InputVideo");
nvtxRangePush(__FUNCTION__);
// .. do some CPU computing here
nvtxRangePop();
使用 -lnvToolsExt -L/usr/local/cuda/lib64 构建
libnvToolsExt.so 的路径因人而异。 NVTX 附带 CUDA 工具包。
【讨论】: