自己编写的一个cuda程序,处理大量数据,用到了大量的GLOBAL内存,刚开始运行结果完全正确,但是运行几次之后,结果就出错了,都变成了1.#QNAN0e+000。但是,把电脑重启或者注销一下,就可以了,然后再运行几次,又出现这种情况。。。。。。。。。请问这是什么原因造成的呢?
我刚开始以为是 内存没有释放,导致内存不足,但是我检查了程序,一一对照,都有释放。
请问各位有没有遇到过这种问题?
我以前也出现过这情况!
可能除了0
可能是数非常小
还有可能是因为应该转型 的没有转型
总之原因不太确定得自己找
遇到过一次这样的情况,
当时的原因是host端传递的数据和kernel函数处理的数据量不一样
是指kernel处理的数据超出了HOST传递的数据么?我只是HOST传递的数据大于KERNEL处理的数据,这样没问题吧?
[ 本帖最后由 我带刺 于 2010-5-14 15:53 编辑 ]
[
是指kernel处理的数据超出了HOST传递的数据么?我只是HOST传递的数据大于KERNEL处理的数据,这样没问题吧?
是指kernel处理的数据超出了HOST传递的数据么?我只是HOST传递的数据大于KERNEL处理的数据,这样没问题吧?
应当没有问题
有遇到过啊
但是我的是比较低级的错误,数组用错了,呵呵
你应该不会是这个
第一次情况是host端传入的数据小于kernel函数定义的数据的数量。。
第二种情况是device传递回host端的数据小于kernel函数中处理的数据的数量。。
遇到两次都出现过这种错误,不过偶尔有时候,clean,rebuild之后,这种错误会消失。。