Unable to allocate xxx GiB for an array with shape (xxxx, xxxx)

今天用Pycharm跑代码的时候报了个错误:Unable to allocate 14.1 GiB for an array with shape (xxxx, xxxx),主要是进行矩阵运算时涉及的矩阵太大了,导致分配的内存不够用,网上搜索了一些方法,最后成功解决。

 

由于是用实验室服务器跑的代码,首先是确定服务器上的内存确实够用,使用命令free查看内存分配情况:

可以看出,未使用的内存明显绰绰有余,于是先考虑是IDE限制了内存申请大小,遂根据此博客修改了Pycharm运行时动态内存申请最大值到20G,然而依旧会报同样的error。

随后考虑可能是服务器的操作系统限制了进程申请内存的大小,于是继续查阅相关资料发现需要修改/proc/sys/vm/overcommit_memory文件,参考该博客,然而操作一通被告知即使用sudo命令也提示权限不足,于是改用编辑/etc/sysctl.conf的方法,将overcommit_memory的值从2修改为1,再sudo sysctl -p使之生效,最后成功解决。

最终代码运行时的内存分配情况如下:

可见差一丢丢就要超内存了。用这种方法会导致内存申请不受限制,会造成进程被强行kill的下场,所以使用完后记得把overcommit_memory参数改回去,也不要在内存紧巴巴的时候用,免得所有人的代码一起崩掉。。。

  • 25
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值