大きな配列に対する Numpy のメモリ割り当て制約
Ubuntu 18 で大きな numpy 配列を割り当てようとすると、エラーが発生します。配列を形状とデータ型で割り当てます」というメッセージが表示される場合、この問題は MacOS では発生しません。この差異の背後にある理由は、システムのオーバーコミット処理モードにあります。
オーバーコミット処理とメモリ割り当て
オーバーコミット処理モードは、システムがメモリ割り当て要求を管理する方法を決定します。デフォルト モード (0) では、カーネルは割り当て要求にコミットするのに十分な物理メモリがあるかどうかをチェックします。そうでない場合は、割り当てを拒否します。オーバーコミット モード 1 では、利用可能な物理メモリに関係なく、カーネルは常に割り当てを許可します。
解決策
Ubuntu でこの問題を解決するには、オーバーコミット モードを有効にする必要があります。 1. root として、次のコマンドを実行します。
$ echo 1 > /proc/sys/vm/overcommit_memory
これにより、オーバーコミット処理モードが変更されます。
スパース配列と仮想メモリ
オーバーコミット モード 1 は、スパース配列に役立ちます。割り当てられたメモリの一部が実際に使用されます。これは、システムが明示的に書き込まれるページにのみ物理メモリをコミットするため、物理メモリが節約されます。
警告
オーバーコミット モード中は次の点に注意することが重要です。 1 では大規模な割り当てが可能ですが、割り当てられたメモリが利用可能な物理メモリを超えるとシステムが不安定になる可能性があります。オーバーコミット モード 1 は注意して使用し、システムのメモリ使用量を注意深く監視してください。
以上がUbuntu で大きな NumPy 配列を割り当てられないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。