我想知道什么是JCuda项目的最佳调试器(如果存在的话)
我知道,对于普通的CUDA应用程序,有像CUDA-gdb和CUDA-memcheck这样的工具,我想知道我是否可以将它们中的任何一个或类似的工具用于JCuda项目
非常感谢。
您应该能够使用常规CUDA调试器(例如Nsight或CUDA-gdb)来调试JCuda应用程序中的GPU代码。您可以使用Java调试器(例如Eclipse)来调试Java代码。但是,没有一个调试器可以无缝地调试Java和CUDA代码。
在Linux上,您可以使用Nvidia Nsight(cuda gdb)。
要设置启动可执行文件的调试会话:
- 以root身份启动Nsight(令人惊讶,但对我来说是必要的)
- 转到"运行"菜单>"调试配置…"
- 右键单击"C/C++应用程序",选择"新建"
- 在"主"选项卡下
- 将可执行文件(字段C/C++应用程序)设置为
/usr/bin/java
或任何正确的路径
- 将可执行文件(字段C/C++应用程序)设置为
- 在"参数"选项卡下
- 设置启动参数,例如
-jar target/MyApp.jar
- 设置工作目录
- 设置启动参数,例如
- 在"调试器"选项卡下
- 设置"CUDA GDB init file"路径(见下文)
- 设置其他选项,如启用CUDA memcheck
因为Java在内部使用分段错误是出于一些过于聪明的目的,所以您需要创建一个带有以下GDB选项的文件,并将其指向"CUDA GDB init file"。请注意,通过设置此选项,您将无法在自己的JNI代码中捕获分段错误错误。这应该不是问题。
handle SIGSEGV nostop noprint pass
如果您使用调试符号编译内核,您将能够调试它们。