Ubuntu 18 で 'uint8' データ型で大きな NumPy 配列を作成する場合、次のような問題が発生する可能性があります。エラーが発生しました:
numpy.core._exceptions.MemoryError: Unable to allocate array with shape and data type uint8
これはシステムにもかかわらず発生します十分なメモリが使用可能であり、MacOS では同じ問題は発生しません。
この問題の根本原因は、オペレーティング システムのオーバーコミット処理モードです。デフォルトでは、オーバーコミットは無効になっています。つまり、カーネルは利用可能なメモリを超える割り当てを拒否します。
これを解決するには:
アグレッシブなオーバーコミットを有効にすると、システムは物理メモリを超えた場合でも割り当てを許可します。これは、カーネルが、割り当てられたメモリの一部のみがアクティブに使用されることを想定しているためです。
積極的なオーバーコミットは割り当ての問題を解決できますが、使用には注意が必要です。
積極的なオーバーコミットを有効にすると、次のコードが実行されます。作品:
import numpy as np a = np.zeros((156816, 36, 53806), dtype='uint8') print(a.nbytes) # Output: 303755101056
以上がUbuntu で大きな NumPy 配列を作成できないのはなぜですか? メモリ割り当てエラーを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。