在 Ubuntu 18 上向 Numpy 数组分配大量内存时,用户可能会遇到类似“无法分配具有形状和数据类型的数组”之类的错误。尽管有足够的内存,但还是会出现此问题,并且在 MacOS 上未观察到。
该问题源于 Ubuntu 上的默认过度使用模式 (0) 。在此模式下,内核限制内存分配以防止过度使用物理页。当为指定的大型数组分配内存时,这会成为一个问题,这需要大约 282 GB。
要成功分配数组,您可以将过量使用模式更改为 1。这有效地启用了“始终过量使用”模式,无论物理内存是否可用,都允许分配
要以 root 身份将过量使用模式设置为 1,请执行以下命令:
$ echo 1 > /proc/sys/vm/overcommit_memory
这个解决方案允许您为稀疏或大部分为空的数组分配空间。但是,请务必注意,您应该显式写入数组以分配数据存在的物理页。这对于高效的内存利用至关重要。
以上是尽管有足够的内存,为什么我无法在 Ubuntu 上分配大型 NumPy 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!