一段在命令行上花费超过 1 分钟的代码在 NVIDIA Visual Profiler(运行相同的.exe)中只需几秒钟即可完成。所以自然的问题是为什么?命令行是否有问题,或者 Visual Profiler 是否做了一些不同的事情,并没有像在命令行上那样真正执行所有内容?
我正在使用 CUBLAS、Thrust 和 cuRAND。
顺便说一句,最近我机器上的编译代码明显变慢了,甚至是以前运行速度很快的旧代码,因此我开始怀疑。
更新:
- 我检查了命令行和 Visual Profiler 上的计算输出是否相同- 即所有必需的代码都已在两种情况下运行。
- GPU-shark 表明当我从命令行切换到 Visual Profiler 时,我的性能状态在P0 处没有改变。
- 然而,当使用Visual Profiler运行时, GPU 使用率报告为0.0% ,但在命令行下运行时高达98%。
- 此外,Visual Profiler 使用的内存要少得多 。当从命令行运行时,任务管理器指示使用了 650-700MB 的内存(第一次调用时出现峰值)。在 Visual Profiler 中,这个数字下降到 ~100MB。
cudaFree(0)