為什麼我無法分配大型 Numpy 數組,如何修復它?

Barbara Streisand
發布: 2024-11-23 08:17:14
原創
250 人瀏覽過

Why Can't I Allocate a Large Numpy Array, and How Can I Fix It?

無法在Numpy 中分配大數組:了解錯誤及其解決方法

面臨「無法分配具有形狀的數組」的問題嘗試創建大型Numpy陣列時出現的「和資料類型」錯誤可歸因於過度使用處理模式system.

記憶體過量使用處理

在Linux 系統中,記憶體過量使用處理決定了系統如何管理記憶體分配。過量使用模式 0(預設值)限制過多的記憶體請求,以確保系統穩定性。當達到過量使用限制時,分配記憶體可能會失敗。

大數組分配的情況

在Numpy 中分配大數組時,如提供的示例中所示如果形狀為(156816, 36, 53806),則所需的記憶體大小明顯超過可用的實體記憶體。在給定的情況下,大約為 282 GB。

過量使用記憶體模式

此錯誤的解決方案在於透過設定 / 啟用「始終過量使用」模式proc/sys/vm/overcommit_memory 為 1。這會覆蓋預設的啟發式方法並允許記憶體分配,而不管可用的實體記憶體如何

稀疏數組和記憶體分配

需要注意的是,啟用過度使用模式不會立即為整個數組分配實體記憶體。相反,記憶體是在頁面寫入時分配的。這意味著,如果數組是稀疏的,且大多數為零元素,則實際記憶體使用量將明顯低於理論大小。

注意事項

雖然啟用過度使用模式可以解決分配問題,但應謹慎使用。如果超出可用資源,過多的記憶體分配可能會導致系統效能下降。此外,必須將過量使用設定與實際資源可用性相匹配,以避免潛在的系統不穩定。

以上是為什麼我無法分配大型 Numpy 數組,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板