之所以说惨痛是有原因的。这个错误有人严重怀疑是显卡和pytorch二者之一有一个是有问题的,也曾经想一度放弃,最后还是分享我的解决方法是啥,不确定对大家都适用。
一开始遇到这个错误,报的是我写的一个模块内的:
File "/gpfs/share/home/1601111331/uda_for_convex/convex_mirror_block/convex_mirror_block.py", line 126, in forward
Rotx = torch.zeros(B, 3, 3).to(self.device)
RuntimeError: CUDA error: an illegal memory access was encountered
语法啥的也没有问题,这个错误出现的iter是随机的,就是不确定运行到哪一步就会出现这个问题,为了解决这个问题,我先从最简单的解决方案入手
比如使用cudnn benchnark=False之类的,还是不行,然后用CUDA_LAUNCH_BLOCKING=1还是不行,然后我感觉可能是数据声明的方式有问题,那我直接换利用一个现成的cuda上的tensor,进行new,这样的话就不会有创建tensor然后放到cuda上这样一个步骤,显然还是不行
然后我就怀疑是cuda版本和pytorch版本的问题,我就升级到了最新的pytorch1.9版本,还是会报这个错误,一度绝望。
关键是我用同样的代码,在我本地跑的时候就没有这个问题,我本地的环境是cuda8,pytorch1.0,所以我准备在学校的服务器上配置这个环境,但是在此之前,我一直想尝试但是没有尝试github上的一个人的

博主在遇到CUDA运行时错误'非法内存访问'后,尝试了多种解决方案,包括设置cudnnbenchark、CUDA_LAUNCH_BLOCKING和改变数据声明方式,但问题依然存在。在怀疑是CUDA版本和PyTorch版本不兼容后,升级到PyTorch1.9仍然未解决问题。然而,当尝试将设备指定为特定GPU时,错误消失。因此,建议在将数据或模型转移到CUDA时,明确指定设备而非直接使用.to(device)或.cuda()。

6569

被折叠的 条评论
为什么被折叠?



