首页 >后端开发 >Python教程 >尽管有足够的内存,为什么我无法在 Ubuntu 上分配大型 NumPy 数组?

尽管有足够的内存,为什么我无法在 Ubuntu 上分配大型 NumPy 数组?

Linda Hamilton
Linda Hamilton原创
2024-12-09 04:33:15787浏览

Why Can't I Allocate Large NumPy Arrays on Ubuntu Despite Sufficient Memory?

Ubuntu 上 Numpy 数组分配的内存分配问题

在 Ubuntu 18 上向 Numpy 数组分配大量内存时,用户可能会遇到类似“无法分配具有形状和数据类型的数组”之类的错误。尽管有足够的内存,但还是会出现此问题,并且在 MacOS 上未观察到。

根本原因

该问题源于 Ubuntu 上的默认过度使用模式 (0) 。在此模式下,内核限制内存分配以防止过度使用物理页。当为指定的大型数组分配内存时,这会成为一个问题,这需要大约 282 GB。

解决方案

要成功分配数组,您可以将过量使用模式更改为 1。这有效地启用了“始终过量使用”模式,无论物理内存是否可用,都允许分配

要以 root 身份将过量使用模式设置为 1,请执行以下命令:

$ echo 1 > /proc/sys/vm/overcommit_memory

稀疏数组注意事项

这个解决方案允许您为稀疏或大部分为空的数组分配空间。但是,请务必注意,您应该显式写入数组以分配数据存在的物理页。这对于高效的内存利用至关重要。

以上是尽管有足够的内存,为什么我无法在 Ubuntu 上分配大型 NumPy 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn