我正在尝试确定 GPU 代码中哪些地方发生了速度减慢。我已经验证代码本身可以正确运行(它不会抛出任何错误,输出正确,干净地完成等)。当我尝试在 Visual Profiler 中分析代码时,它似乎运行正常,将正确的中间输出转储到标准输出。 GPU 正在被使用(我已经检查了 cuda-gdb 并从内核中转储了 printf() )。所有代码完成后,Visual Profiler 报告 viper 已终止可执行文件。但是,没有生成时间线。相反,主窗口显示的 0、10、20、25 微秒全部“折叠”在一起。当我告诉 Visual Profiler 运行所有分析选项时,它会毫无问题地进行 24 次运行,但仍然没有生成时间线。
我在 Ubuntu x86_64 和 GeForce 460 上使用 CUDA 4.2,驱动程序版本 295.41。
最佳答案
当可视分析器无法生成时间线时,通常是因为它无法找到分析所需的组件。该组件是一个位于/usr/local/cuda/lib64 中的共享库,名为 libcuinj.so。该路径在您的 LD_LIBRARY_PATH 中吗?您如何启动 Visual Profiler?/usr/local/cuda/bin/nvvp 中的脚本应该为您正确设置路径。
4.2 版本的可视化探查器在未找到此共享库时报告错误的效果并不好。即将推出的 5.0 版本的视觉分析器在这方面具有更好的错误报告。
关于CUDA Visual Profiler 不生成时间线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11748272/