二维vector拷贝到CUDA数组怎么操作?

xinfei_young 2013-03-04 07:52:22
checkCudaErrors( cudaMemcpy2DToArray(d_imageArray, 0, 0, _data, pitch,imageWidth*sizeof(float),imageHeight, cudaMemcpyHostToDevice) );其中_data是vector<vector<float>> *_data,当imageWidth和imageHeight比较小的时候运行成功,比较大的时候会崩溃,难道是CUDA数组有大小限制?
...全文
1172 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
linxxx3 2013-03-05
  • 打赏
  • 举报
回复
不管小数据能不能跑了,肯定要写段程序验证下结果对不对,或者输出到文件看也行,可能别的地方还有错误。 这种还是上调试器跑,定位是哪个语句出错了,是不是cpu上出错的,是不是copy那个。 出错的类型也很重要,是访问越界还是launch failure还是其他什么。 gpu的存储访问检查也有工具的,叫gpumemcheck还是什么的,官网有下载。
xinfei_young 2013-03-05
  • 打赏
  • 举报
回复
引用 3 楼 linxxx3 的回复:
引用 2 楼 xinfei_young 的回复:http://blog.csdn.net/xhz1234/article/details/7462290中可以直接用vector的啊,而且我测试了当数据比较小的时候是运行成功的,数据变大就运行不成功了~ 还特意去看了看这个页面…… 2D数组的申请用的语句是这个: cpu_data2D = (int*)calloc(W……
我用裸数组测试了一下,也是当数据小的时候可以运行下去,但不知道是不是正确的,当数据变大的时候,运行也是一样的崩溃~
xinfei_young 2013-03-05
  • 打赏
  • 举报
回复
我用裸数组测试了一下,也是当数据小的时候可以运行下去,但不知道是不是正确的,当数据变大的时候,运行也是一样的崩溃~
linxxx3 2013-03-05
  • 打赏
  • 举报
回复
引用 2 楼 xinfei_young 的回复:
http://blog.csdn.net/xhz1234/article/details/7462290中可以直接用vector的啊,而且我测试了当数据比较小的时候是运行成功的,数据变大就运行不成功了~
还特意去看了看这个页面…… 2D数组的申请用的语句是这个: cpu_data2D = (int*)calloc(Wd * Ht, sizeof(int)); STL的vector相对裸数组是带个信息头的,2维vector就是个指针数组,不能这么拿来用的。小数据成功了?你检查下结果。
xinfei_young 2013-03-05
  • 打赏
  • 举报
回复
http://blog.csdn.net/xhz1234/article/details/7462290中可以直接用vector的啊,而且我测试了当数据比较小的时候是运行成功的,数据变大就运行不成功了~
linxxx3 2013-03-05
  • 打赏
  • 举报
回复
对API的理解有问题吧,这里的2D数组指的是连续存放的 width X height 的裸数组,不是STL的vector

353

社区成员

发帖
与我相关
我的任务
社区描述
CUDA高性能计算讨论
社区管理员
  • CUDA高性能计算讨论社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧