8 个解决方案
#1
变量或没有初始化.有数组越界访问.等等.
程序能跑完!=程序运行正常!
程序能跑完!=程序运行正常!
#2
现在,发现了,说是out of memory ?我线程程序里开了一个1000的数组,是不是太大了?
#3
host上C的堆栈缺省是一定的.大数组建议用malloc.
kernel内,大数组实际是开在显存内的.1000本身不算大,但要乘上线程数....建议用cudamalloc自己分配为好.
#4
这个数组是我每个线程都要分别使用的,用cudamalloc分配的话会产生读写冲突的。。。
#5
cudamalloc也可以独立使用的啊.申请一大块就是了.至少在kernel运行前你可以知道是否能分配成功.
#6
哦..我明白你的意思了。。就是相当于分一大块,然后分段给线程是把
#7
补充,上面说的独立使用是指每个线程从自己的下标开始使用.且每个线程的使用区域不重叠.
#8
谢谢你的热心~~~
#1
变量或没有初始化.有数组越界访问.等等.
程序能跑完!=程序运行正常!
程序能跑完!=程序运行正常!
#2
现在,发现了,说是out of memory ?我线程程序里开了一个1000的数组,是不是太大了?
#3
host上C的堆栈缺省是一定的.大数组建议用malloc.
kernel内,大数组实际是开在显存内的.1000本身不算大,但要乘上线程数....建议用cudamalloc自己分配为好.
#4
这个数组是我每个线程都要分别使用的,用cudamalloc分配的话会产生读写冲突的。。。
#5
cudamalloc也可以独立使用的啊.申请一大块就是了.至少在kernel运行前你可以知道是否能分配成功.
#6
哦..我明白你的意思了。。就是相当于分一大块,然后分段给线程是把
#7
补充,上面说的独立使用是指每个线程从自己的下标开始使用.且每个线程的使用区域不重叠.
#8
谢谢你的热心~~~