繁体   English   中英

如何调试由Java(jcuda)程序调用的内核

[英]how to debug kernels called by a java(jcuda) program

有什么方法可以调试java(jcuda)调用的cuda函数吗?

我的程序启动此异常:

Exception in thread "main" jcuda.CudaException:CUDA_ERROR_ILLEGAL_ADDRESS
at jcuda.driver.JCudaDriver.checkResult(JCudaDriver.java:288)
at jcuda.driver.JCudaDriver.cuCtxSynchronize(JCudaDriver.java:1852)
at CalculateurGPU.updateAndCompute(rGPUcalculator.java:129)
at Test.main(Test.java:90)

我的cuda代码很长,找不到任何信息可以帮助我找到错误所在。

另一个问题:当我单击“ JCudaDriver.java:288”时,我没有访问权限,它显示“找不到源”。 如何将这些资源附加到我的项目中?

提前致谢

我能够调试JCuda可执行代码的最佳方法是将printf语句放在各处。 完成后显然要删除它们,但必须从某个地方开始。

将以下内容添加到正在调用内核代码的.java代码中。

JCudaDriver.cuCtxSetLimit(CUlimit.CU_LIMIT_PRINTF_FIFO_SIZE,4096);

然后在您的CUDA内核中,使用printf(“”); CUDA内核代码中的语句以确定问题存在的位置。 如果我有猜测,那是由于您访问了不应该的内存。

我还建议使用if(gtid == 0){printf(“ hello \\ n”);}来包装printf,否则,您将需要让每个线程都尝试执行printf。

来源: http//forum.byte-welt.net/byte-welt-projekte-projects/swogl-jcuda-jocl/jcuda/3255-gpu-printf-compute-capility-2-0-a.html

编辑:

我想补充一点,JCuda网站上增加了一个调试部分。 它建议使用称为“ cuda-memcheck”的工具来帮助调试CUDA应用程序。

http://www.jcuda.org/debugging/Debugging.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM