4


我想知道 JCuda 项目的最佳调试器是什么(如果存在)。
我知道对于普通的 CUDA 应用程序,有 cuda-gdb 和 cuda-memcheck 之类的工具,我想知道是否可以将它们中的任何一个或类似的工具用于 JCuda 项目。
谢谢!

4

2 回答 2

4

您应该能够使用常规的 CUDA 调试器(例如 Nsight 或 cuda-gdb)来调试 JCuda 应用程序中的 GPU 代码。您可以使用 Java 调试器(例如 Eclipse)来调试 Java 代码。但是,没有可以无缝调试 Java 和 CUDA 代码的调试器。

于 2013-08-01T15:45:16.813 回答
1

在 Linux 上,您可以使用 Nvidia Nsight (cuda-gdb)。

要设置启动可执行文件的调试会话:

  • 以 root 身份启动 Nsight (令人惊讶,但对我来说是必要的)
  • 转到运行菜单 > 调试配置...
  • 右键单击“C/C++ 应用程序”,选择新建
  • 在主选项卡下
    • 将可执行文件(字段 C/C++ 应用程序)设置为/usr/bin/java或任何正确的路径
  • 在参数选项卡下
    • 设置启动参数,例如-jar target/MyApp.jar
    • 设置工作目录
  • 在调试器选项卡下
    • 设置“CUDA GDB 初始化文件”路径(见下文)
    • 设置其他选项,例如启用 CUDA memcheck

由于 Java 在内部出于某些过于聪明的目的使用了分段错误,因此您需要使用以下 GDB 选项创建一个文件,并将其指向为“CUDA GDB 初始化文件”。请注意,通过设置此选项,您将无法在自己的 JNI 代码中捕获分段错误错误。这应该不是问题。

handle SIGSEGV nostop noprint pass

如果您使用调试符号编译内核,您将能够调试它们。

于 2017-11-02T11:32:03.137 回答