cuda内存拷贝失败

qingbeiwang 2023-04-20 21:20:07

前段时间因为工作需要写了一个png图片处理的功能,由于需要逐像素的处理,所有上了cuda。之前运行一直都是正常的,处理过的最大图像最大差不多是8k。今天突然接到反馈说图像处理失败了,排查了一下午,结果发现问题本身非常奇怪。
总体而言就是只对特定数据量的图片有问题,目前出问题的图片像素大小都是1536*2048的整数倍,除了原始的这个尺寸外,3072*1024,3072*4096都会出问题,而其他的比如1500*2000,1535*2048,1536*2000等尺寸都不会有问题。

 

这里是写的测试函数,21.png是一张3072*1024的图片 

 

这个是调用的核函数
检查发现出错的地方是result2那里,cudaMemcpy拷贝失败,这里返回错误码是700,对应的错误是
/**
* The device encountered a load or store instruction on an invalid memory address.
* This leaves the process in an inconsistent state and any further CUDA work
* will return the same error. To continue using CUDA, the process must be terminated
* and relaunched.
*/
cudaErrorIllegalAddress = 700。
检查核函数,只要访问dataIn里的内容,就会出现上述错误,即使不对内容做任何操作(比如给t1赋值就无法正常拷贝,去掉这句就正常)。而且这个错误只发生在上述所说的对应尺寸图片上。
另外还有个诡异的地方在于,当我想用Nsight调试时,启动next-gen调试模式吧,这个问题就不会出现,图片就能正常被处理。
哪位大佬能给出个解释,这情况实在有点摸不着头脑。

...全文
798 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

589

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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