NVTX
1 介绍:
NVTX 是一种基于 C/C++ 的 API,用于标注程序中的代码范围、事件和资源。此标注支持在应用程序运行时收集更多信息,这些信息可用于在分析CUDA代码时改进数据呈现。
2 使用
2.1 引用头文件
1 |
2.2 常用功能
2.2.1 范围描述
nvtx3::scoped_range: 用于标记该类所创建对象存在的时间段,传递区间的名字进行初始化。
1 | void some_function() { |
nvtxRange:nvtxRang: 通过使用nvtxRangePushA( )和nvtxRangePop( )手动标记。
1 | void my_function(...) { |
2.2.2 标记事件点
nvtx3::mark:
1 | bool success = do_operation(...); |
2.3 实际使用
插桩后会的影响代码性能,因此应当只在需要的时候对相关代码进行编译。可以宏对代码进行控制。
1 |
|
然后再cmake 中添加相应的控制指令
1 |
|
在执行编译时添加参数。
1 | cmake -D NVTX=1 .. |
3 问题
如果没有nvtx3.hpp,可以从NVTX/c/include/nvtx3 at release-v3 · NVIDIA/NVTX (github.com)中下载,添加到 /usr/local/cuda-12.3/include/nvtx3 目录下即可。
参考文献
[1]CUDA Pro Tip: Generate Custom Application Profile Timelines with NVTX[EB/OL]//NVIDIA Technical Blog. (2013-09-04)[2024-09-11]. https://developer.nvidia.com/blog/cuda-pro-tip-generate-custom-application-profile-timelines-nvtx/.
[2]NVIDIA/NVTX[CP/OL]. NVIDIA Corporation, 2024[2024-09-11]. https://github.com/NVIDIA/NVTX.
[3]NVTX C++ API Reference: NVTX C++ API Reference[EB/OL]. [2024-09-11]. https://nvidia.github.io/NVTX/doxygen-cpp/index.html.