在Ubuntu 18 上向Numpy 陣列分配大量記憶體時,使用者可能會遇到類似“無法分配具有形狀和資料類型的數組”之類的錯誤。儘管有足夠的內存,但還是會出現此問題,並且在 MacOS 上未觀察到。
此問題源自於 Ubuntu 上的預設過度使用模式 (0) 。在此模式下,核心限制記憶體分配以防止過度使用實體頁。當為指定的大型數組分配記憶體時,這會成為一個問題,這需要大約 282 GB。
要成功分配數組,您可以將過量使用模式變更為 1。這有效地啟用了「始終過量使用」模式,無論實體記憶體是否可用,都允許分配
要以root 身分將過量使用模式設為1,請執行以下命令:
$ echo 1 > /proc/sys/vm/overcommit_memory
這個解決方案允許您為稀疏或大部分為空的數組分配空間。但是,請務必注意,您應該明確寫入數組以分配資料存在的實體頁。這對於高效的記憶體利用至關重要。
以上是儘管有足夠的內存,為什麼我無法在 Ubuntu 上分配大型 NumPy 數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!