我想知道 JCuda 项目的最佳调试器是什么(如果存在)。
我知道对于普通的 CUDA 应用程序,有 cuda-gdb 和 cuda-memcheck 之类的工具,我想知道是否可以将它们中的任何一个或类似的工具用于 JCuda 项目。
谢谢!
问问题
447 次
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
或任何正确的路径
- 将可执行文件(字段 C/C++ 应用程序)设置为
- 在参数选项卡下
- 设置启动参数,例如
-jar target/MyApp.jar
- 设置工作目录
- 设置启动参数,例如
- 在调试器选项卡下
- 设置“CUDA GDB 初始化文件”路径(见下文)
- 设置其他选项,例如启用 CUDA memcheck
由于 Java 在内部出于某些过于聪明的目的使用了分段错误,因此您需要使用以下 GDB 选项创建一个文件,并将其指向为“CUDA GDB 初始化文件”。请注意,通过设置此选项,您将无法在自己的 JNI 代码中捕获分段错误错误。这应该不是问题。
handle SIGSEGV nostop noprint pass
如果您使用调试符号编译内核,您将能够调试它们。
于 2017-11-02T11:32:03.137 回答