ホームページ >バックエンド開発 >Python チュートリアル >十分なメモリがあるにもかかわらず、Ubuntu で大きな NumPy 配列を割り当てることができないのはなぜですか?
Ubuntu 18 で大量のメモリを Numpy 配列に割り当てると、ユーザーは次のような問題に遭遇する可能性があります。 「形状とデータ型を含む配列を割り当てることができません」のようなエラーが発生します。この問題は十分なメモリがあるにもかかわらず発生し、MacOS では観察されません。
この問題は、Ubuntu のデフォルトのオーバーコミット モード (0) に起因しています。 。このモードでは、カーネルは物理ページのオーバーコミットを防ぐためにメモリ割り当てを制限します。これは、指定された配列のようなサイズの大きい配列にメモリを割り当てる場合に問題になります。これには約 282 GB が必要です。
配列を正常に割り当てるには、次のようにします。オーバーコミット モードを 1 に変更します。これにより、「常にオーバーコミット」モードが効果的に有効になり、物理メモリの容量に関係なく割り当てが可能になります。
root としてオーバーコミット モードを 1 に設定するには、次のコマンドを実行します。
$ echo 1 > /proc/sys/vm/overcommit_memory
これこのソリューションを使用すると、まばらな配列またはほとんど空の配列にスペースを割り当てることができます。ただし、データが存在する物理ページを割り当てるには、配列に明示的に書き込む必要があることに注意することが重要です。これはメモリを効率的に使用するために非常に重要です。
以上が十分なメモリがあるにもかかわらず、Ubuntu で大きな NumPy 配列を割り当てることができないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。