有任何方法来调试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“时,我无法访问它,上面写着”没有找到源“。我如何将这些资源附加到我的项目中?
提前感谢
发布于 2015-05-15 19:41:30
调试我的JCuda可执行代码的最好方法是到处放置printf语句。很明显,在你做完之后删除它们,但是你必须从某个地方开始。
在调用内核代码的.java代码中添加以下内容。
JCudaDriver.cuCtxSetLimit(CUlimit.CU_LIMIT_PRINTF_FIFO_SIZE,4096);
然后在CUDA内核中使用printf("");语句来确定问题所在。如果我猜是因为你访问了一段你不应该访问的内存。
我还建议用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”的工具来帮助调试你的CUDA应用程序。
http://www.jcuda.org/debugging/Debugging.html
https://stackoverflow.com/questions/29702698
复制相似问题