一段代码在命令行上需要超过1分钟的时间,但在NVIDIA Visual Profiler中仅需几秒钟(运行相同的.exe文件)。因此,自然而然的问题是为什么?是命令行有问题,还是Visual Profiler做了一些不同的事情,并没有真正执行所有命令行上的内容?
我正在使用CUBLAS、Thrust和cuRAND。
顺便提一句,在我的机器上,即使是以前运行迅速的旧代码,最近也明显变慢了,因此我开始怀疑。
更新:
- 我已经检查了命令行和Visual Profiler上的计算输出是相同的——也就是说,在两种情况下都执行了所需的所有代码。 - 当我从命令行切换到Visual Profiler时,GPU-shark表明我的性能状态保持不变,仍然是P0。 - 但是,当使用Visual Profiler运行时,GPU利用率报告为0.0%,而在命令行下运行时,它可以高达98%。 - 此外,使用Visual Profiler使用的内存要少得多。当在命令行下运行时,任务管理器显示使用了650-700MB的内存(在第一个cudaFree(0)调用处会出现峰值)。在Visual Profiler中,这个数字降低到约100MB左右。
我正在使用CUBLAS、Thrust和cuRAND。
顺便提一句,在我的机器上,即使是以前运行迅速的旧代码,最近也明显变慢了,因此我开始怀疑。
更新:
- 我已经检查了命令行和Visual Profiler上的计算输出是相同的——也就是说,在两种情况下都执行了所需的所有代码。 - 当我从命令行切换到Visual Profiler时,GPU-shark表明我的性能状态保持不变,仍然是P0。 - 但是,当使用Visual Profiler运行时,GPU利用率报告为0.0%,而在命令行下运行时,它可以高达98%。 - 此外,使用Visual Profiler使用的内存要少得多。当在命令行下运行时,任务管理器显示使用了650-700MB的内存(在第一个cudaFree(0)调用处会出现峰值)。在Visual Profiler中,这个数字降低到约100MB左右。