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 중국어 웹사이트의 기타 관련 기사를 참조하세요!