RuntimeError: CUDA error: an illegal memory access was encountered

这篇具有很好参考价值的文章主要介绍了RuntimeError: CUDA error: an illegal memory access was encountered。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

4. 我的解决

后续发现其实是某张卡有问题,

  • 0~3一共4个GPU,只在使用0号GPU的时候会出问题
  • 0号卡似乎是被某个进程锁了,还是怎么样,不用那个卡就没事了

runtimeerror: cuda error: an illegal memory access was encountered,pytorch,深度学习,pytorch,人工智能
其实不难发现,我报错的位置基本都是从gpucpu转换的时候出现的问题。

  • 因此考虑是不是cpu内存不太够了,所以内存访问发生错误了
  • 由于我使用的是容器,因此在docker-compose或者dockerfile里将配置项改为:
        shm_size: 64G  →     shm_size: 128G
    
  • shm_size,共享内存(shared memory)
  • 之后就基本不报错了。。。

1. 错误描述

例行吐槽,第一次遇到这个错误,我是非常无语的。以前是不报错的,和以前相比,不同的地方有

  1. 数据变多了,从80例变成了100例
  2. 换了个docker镜像,可能pytorch版本和cuda版本上有些问题
  3. 检查了代码,没有发生修改

2. 自我尝试

2.1 减小batch_size

感觉上可能会和显存有点关系吧

第一次报错

runtimeerror: cuda error: an illegal memory access was encountered,pytorch,深度学习,pytorch,人工智能

  • 结合自己的代码,我这个是在第一个epoch训练完成,validation阶段报的错(line 243
  • 报错后调整batch_size变小(10→8),继续报错

runtimeerror: cuda error: an illegal memory access was encountered,pytorch,深度学习,pytorch,人工智能

  • 不过上一步validation的地方已经走过去了,line 258报错
  • 说明把batch_size变小是有一定的效果的

按照这个思路继续把batch_size调小(8→5),又换了个位置报错。。
runtimeerror: cuda error: an illegal memory access was encountered,pytorch,深度学习,pytorch,人工智能

  • line 305报错

2.2 换卡改代码

换思路

  • 换了张卡,从0卡变到了1卡。。
  • 删除了非必须的CPU和GPU交换数据部分的代码
  • 依然报错
    runtimeerror: cuda error: an illegal memory access was encountered,pytorch,深度学习,pytorch,人工智能
  • 用两张卡,batch_size设置10,不使用预训练模型,还是报错
    runtimeerror: cuda error: an illegal memory access was encountered,pytorch,深度学习,pytorch,人工智能
  • 从头训练,单卡,batch_size=5
    runtimeerror: cuda error: an illegal memory access was encountered,pytorch,深度学习,pytorch,人工智能
  • 从头训练,单卡,batch_size=4
    runtimeerror: cuda error: an illegal memory access was encountered,pytorch,深度学习,pytorch,人工智能
    情况好了一点,都跑到第8个epoch了。但是还是断了

3. 调研情况

报错信息是CUDA丢出来的一个运行时错误,发生了非法内存访问。网上关于这个问题的讨论也很多,但是并没有发现有找到真正原因的。

很多都是靠感觉的

参考:文章来源地址https://www.toymoban.com/news/detail-797671.html

  • pytorch的github issue:RuntimeError: CUDA error: an illegal memory access was encountered
    runtimeerror: cuda error: an illegal memory access was encountered,pytorch,深度学习,pytorch,人工智能
    • 这个回答好像有效的人比较多,一次惨痛的debug的经历-RuntimeError: CUDA error: an illegal memory access was encountered,这个人就是这么解决的
  • 另外还有一些是经验论的,
    • CSDN博客:[彻底解决]CUDA error: an illegal memory access was encountered(CUDA错误 非法访问内存)
  • yolo的GitHub issue:Cuda illegal memory access when running inference on *.engine #6311

4. 自定义cuda配置

搜索/etc/X11/xorg.conf

参考:

  • https://download.nvidia.com/XFree86/Linux-x86_64/396.51/README/editxconfig.html
  • https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#address-custom-xorg-conf-if-applicable
  • https://unix.stackexchange.com/questions/200553/multi-nvidia-gpu-overclocking-for-computations-cuda

到了这里,关于RuntimeError: CUDA error: an illegal memory access was encountered的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包