【发布时间】:2017-10-15 22:56:11
【问题描述】:
我编写了一些使用 JCuda 执行一些 CUDA 内核的 Java 代码。我想分析应用程序,以了解流是如何重叠的等等。我可以使用 cuda 事件调用(例如 cudaEventElpasedTime)来获取内核的执行时间,但我不知道如何获取同一内核的开始和结束时间戳。
我知道 nvprof 可以生成这样的结果并显示时间线,但我找不到使用 Java 应用程序运行 nvprof 的方法。
编辑:现在我了解了如何使用 nvprof 来分析 Java 应用程序,这要归功于答案。我仍然更喜欢使用 cudaEvent 调用来获取开始和结束时间,这样我就有更多的控制权。似乎 nvprof 可以获取该信息,但没有 API 可供最终用户这样做?
【问题讨论】:
-
@Shadow 我仍然更喜欢使用 cudaEvent 调用来获取开始和结束时间,因为它可以让我更好地控制要分析的内容。
-
您也可以使用 Visal Profiler。在 did not work 中 some other versions 之后,它似乎终于可以再次与 CUDA 8.0 一起使用了。
-
@Marco13,这只能在windows下工作吗?我读到我们需要制作一个 .bat 才能让它工作,我还没有在 linux 下尝试过 .sh 脚本。
-
我刚刚在Windows(8.1)下试了一下。我认为它应该也可以在带有
sh文件的 Linux 下工作,但我不确定(我有一段时间没有积极使用可视化分析器,因为它不适用于 JCuda,并且从来没有在 Linux 上使用过它,但是从概念上来说,我认为它应该工作...)