대형 배열에 대한 Numpy의 메모리 할당 제약 조건
Ubuntu 18에서 대규모 numpy 배열을 할당하려고 시도하는 동안 오류가 발생했습니다. 모양과 데이터 유형을 사용하여 배열을 할당합니다." MacOS에서는 이 문제가 발생하지 않습니다. 이러한 차이의 원인은 시스템의 오버커밋 처리 모드에 있습니다.
오버커밋 처리 및 메모리 할당
오버커밋 처리 모드에 따라 시스템이 메모리 할당 요청을 관리하는 방법이 결정됩니다. 기본 모드(0)에서 커널은 할당 요청을 커밋하기에 충분한 물리적 메모리가 있는지 확인합니다. 그렇지 않은 경우 할당을 거부합니다. 오버커밋 모드 1에서는 사용 가능한 물리적 메모리에 관계없이 커널이 항상 할당을 허용합니다.
해결 방법
Ubuntu에서 이 문제를 해결하려면 오버커밋 모드를 활성화해야 합니다. 1. 루트로 다음 명령을 실행합니다.
$ echo 1 > /proc/sys/vm/overcommit_memory
이렇게 하면 오버커밋 처리 모드가 1로 변경됩니다. 대규모 numpy 배열 할당을 허용합니다.
희소 배열 및 가상 메모리
오버커밋 모드 1은 희소 배열에 유용할 수 있습니다. 할당된 메모리가 실제로 사용됩니다. 이는 시스템이 명시적으로 작성된 페이지에만 물리적 메모리를 커밋하여 물리적 메모리를 보존하기 때문입니다.
경고
오버커밋 모드에서는 주의해야 합니다. 1은 대규모 할당을 허용하지만 할당된 메모리가 사용 가능한 물리적 메모리를 초과하는 경우 잠재적인 시스템 불안정을 초래할 수 있습니다. 오버커밋 모드 1을 주의해서 사용하고 시스템의 메모리 사용량을 면밀히 모니터링하세요.
위 내용은 Ubuntu에서 대규모 NumPy 배열을 할당할 수 없는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!