0x75499617 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012eecc 处的 cudaError_enum。

时间:2022-03-07 11:05:00
我是cuda初学者。。现在写了一个程序,碰到了这个问题。。程序运行正常。。但是推出后,就可以看到有这个错误,答案也是错的,但是在EMU DEBUG状况下就没有这个错误,而且答案也是正确的,不知道为啥。。。往各位高手帮忙解答下,谢谢了~~

8 个解决方案

#1


变量或没有初始化.有数组越界访问.等等.
程序能跑完!=程序运行正常!

#2


现在,发现了,说是out of memory ?我线程程序里开了一个1000的数组,是不是太大了?

#3


引用 2 楼 windog18 的回复:
现在,发现了,说是out of memory ?我线程程序里开了一个1000的数组,是不是太大了?


host上C的堆栈缺省是一定的.大数组建议用malloc.
kernel内,大数组实际是开在显存内的.1000本身不算大,但要乘上线程数....建议用cudamalloc自己分配为好.

#4


这个数组是我每个线程都要分别使用的,用cudamalloc分配的话会产生读写冲突的。。。

#5


引用 4 楼 windog18 的回复:
这个数组是我每个线程都要分别使用的,用cudamalloc分配的话会产生读写冲突的。。。


cudamalloc也可以独立使用的啊.申请一大块就是了.至少在kernel运行前你可以知道是否能分配成功.

#6


哦..我明白你的意思了。。就是相当于分一大块,然后分段给线程是把

#7


补充,上面说的独立使用是指每个线程从自己的下标开始使用.且每个线程的使用区域不重叠.

#8


谢谢你的热心~~~

#1


变量或没有初始化.有数组越界访问.等等.
程序能跑完!=程序运行正常!

#2


现在,发现了,说是out of memory ?我线程程序里开了一个1000的数组,是不是太大了?

#3


引用 2 楼 windog18 的回复:
现在,发现了,说是out of memory ?我线程程序里开了一个1000的数组,是不是太大了?


host上C的堆栈缺省是一定的.大数组建议用malloc.
kernel内,大数组实际是开在显存内的.1000本身不算大,但要乘上线程数....建议用cudamalloc自己分配为好.

#4


这个数组是我每个线程都要分别使用的,用cudamalloc分配的话会产生读写冲突的。。。

#5


引用 4 楼 windog18 的回复:
这个数组是我每个线程都要分别使用的,用cudamalloc分配的话会产生读写冲突的。。。


cudamalloc也可以独立使用的啊.申请一大块就是了.至少在kernel运行前你可以知道是否能分配成功.

#6


哦..我明白你的意思了。。就是相当于分一大块,然后分段给线程是把

#7


补充,上面说的独立使用是指每个线程从自己的下标开始使用.且每个线程的使用区域不重叠.

#8


谢谢你的热心~~~