我正在尝试确定GPU代码中发生减速的位置。我已经验证了代码本身正确运行(它不会抛出任何错误,输出正确,完成干净等)。当我尝试在Visual Profiler中分析代码时,它似乎正常运行,将正确的中间输出转储到stdout。正在使用GPU(我已经使用cuda-gdb检查并从我的内核中转储printf()
)。完成所有代码后,Visual Profiler会报告viper已终止可执行文件。但是,不会生成时间轴。相反,主窗口显示0,10,20,25微秒全部“折叠”在彼此之上。当我告诉Visual Profiler运行所有分析选项时,它会在没有问题的情况下继续运行24次,但仍然没有生成时间轴。
我在Ubuntu x86_64上使用CUDA 4.2,驱动程序版本295.41和GeForce 460.
答案 0 :(得分:2)
当可视化分析器无法生成时间线时,通常是因为它找不到分析所需的组件。该组件是/ usr / local / cuda / lib64中名为libcuinj.so的共享库。你的LD_LIBRARY_PATH上有那个路径吗?你是如何推出Visual Profiler的? / usr / local / cuda / bin / nvvp中的脚本应该正确设置路径。
当找不到此共享库时,4.2版本的可视化分析器无法很好地报告错误。即将推出的5.0版本的visual Profiler在这方面有更好的错误报告。
答案 1 :(得分:0)
我不知道在Linux下它是否相同,但在Windows下的Nsight中,有两种基本类型的分析可以运行。 “应用程序跟踪”和“配置文件”。只有在应用程序跟踪下才能获得时间表。应用程序跟踪记录进行CUDA和内核调用时的时间戳。 Profile设置提供了分析内核的选项。它从GPU读取硬件计数器,并生成与一个或多个内核相关的性能信息(并且没有时间轴)。