ホームページ >バックエンド開発 >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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。