最开始在 【简说】NVTX + Nsight = Nvidia性能分析利器 看到NVTX的时候,我觉得这是一个好东西啊,可以详细说明每一段时间对应的是哪一段程序。
看了一下github,他的文章已经过时,现在已经不需要链接动态库了,直接include头文件就可以(非常友好!)。
https://github.com/NVIDIA/NVTX
于是将相关头文件下载下来,在我的代码里用上NVTX,结果报错:
error: identifier "nvtxMarkA" is undefined in device code
nvtxMarkA 是 NVIDIA 的工具扩展库(NVTX)的一部分,它是一个用于 CPU 端(主机端)的标记工具,不能在设备代码(GPU内核代码)中使用。NVTX 是一个专门为主机端(CPU)设计的性能分析工具,不能直接用于 CUDA 内核代码中。
- nvtxMarkA 只能用于主机代码,不能用于 CUDA 内核或设备代码。
- 在设备代码中,如果需要性能分析,可以使用 CUDA 的 clock() 或 CUDA Profiler 等工具。
- 在主机端可以使用 nvtxRangePush 和 nvtxRangePop 来标记代码的范围。
白高兴一场,不过以后可以在分析系统的时候再用这个。现在搞内核确实是用不到了。