首頁 >後端開發 >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