CUDA_ERROR_UNKNOWN当使用代替双精度浮点数
2视图(30天)
显示旧的评论
你好,
我有一个相同的.cu文件,一个我使用变量定义为浮动,另一个在我使用变量定义为两倍。
双精度的作品完美时呼吁由内核,而版本不浮动。我得到一个错误,当我收集()的输出变量:
Errror使用gpuArray /收集
一个意想不到的CUDA执行过程中发生错误。CUDA的错误是:CUDA_ERROR_UNKNOWN
从文档,看来函数宏指令()函数将自动输入数组转换为正确的类型,然而,我也试过单独每一个输入/输出数组转换为浮动使用单(),但我得到一个类似的错误。
这是格式:
__global__无效SoA SegForceNBodyCUDA(双const *,
双常量的、双constμ、双constν,
intconst年代,
双* f0x、双* f0y、双* f0z,
双* f1x、双* f1y、双* f1z);
或
__global__无效SoA SegForceNBodyCUDA(浮点常量*,
浮动常量的、浮点数constμ、浮点数constν,
intconst年代,
浮动* f0x、浮点数* f0y、浮点数* f0z,
浮动* f1x、浮点数* f1y、浮点数* f1z);
两个.cu文件正确编译没有错误/警告。
请建议。
谢谢你!
弗朗西斯科
接受的答案
本Tordoff
2013年9月25日
谢谢你发送的代码。
我做了一些初步调查,它看起来像你有一个非法内存访问的地方。这就是cuda-memcheck报告:
运行CUDA单精度,优化…
警告:Cuda API错误检测:cuModuleGetGlobal_v2返回(0 x1f4)
警告:Cuda API错误检测:cuModuleGetGlobal_v2返回(0 x1f4)
(102年推出CUDA内核(SegForceNBodyCUDA < < <(4 1 1),(256年,1,1)> > >)在设备0]
Memcheck检测到非法访问地址(@local) 0 xfff830
程序接收信号CUDA_EXCEPTION_1,弄非法的地址。
[焦点切换到内核CUDA 102网格103块(0,0,0),线程(5 0 0),设备0,sm 12,经2巷5]
0 x0000000010052d98SegForceNBodyCUDA (const *浮动,浮动,浮动,浮动,int,浮动,浮动,浮动,浮动,浮动,浮动*)()
我不能看到任何明显错误的内核,但相当多的代码。最有可能的元凶是读/写过去的输入/输出数组的结束。然而,这一事实非法内存地址包括“@local”可能表明问题在内部数据是如何被传递到内核(即在线程本地内存)。我不认为有任何问题的方式正在由MATLAB调用内核。
好运调试——这些类型的问题可以棘手的孤立。
本