Numpy 中大型數組的記憶體分配限制
在Ubuntu 18 上嘗試分配大型numpy 數組時遇到錯誤,「無法分配具有形狀和資料類型的數組”,在MacOS 上不會遇到此問題。造成這種差異的原因在於系統的過度使用處理模式。
過量使用處理和記憶體分配
過量使用處理模式決定了系統如何管理記憶體分配請求。在預設模式 (0) 下,核心檢查是否有足夠的實體記憶體來提交分配請求。如果不是,則拒絕分配。在過度使用模式 1 下,無論可用實體記憶體為何,核心始終允許分配。
解決方案
要在Ubuntu 上解決此問題,您需要啟用過度使用模式1. 以root 身分執行以下命令:
$ echo 1 > /proc/sys/vm/overcommit_memory
這會將過度使用處理模式變更為1,允許分配大型numpy陣列。
稀疏數組和虛擬記憶體
過度使用模式1對於稀疏數組很有用,其中只有一小部分實際使用了分配的記憶體。這是因為系統只將實體記憶體提交給明確寫入的頁面,從而節省實體記憶體。
警告
需要注意的是,在過度使用模式下1 允許大量分配,如果分配的內存超過可用物理內存,可能會導致潛在的系統不穩定。謹慎使用過度使用模式 1,並密切監視系統的記憶體使用。
以上是為什麼我無法在 Ubuntu 上分配大型 NumPy 數組,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!