>백엔드 개발 >파이썬 튜토리얼 >메모리가 충분함에도 불구하고 Ubuntu에서 대규모 NumPy 배열을 할당할 수 없는 이유는 무엇입니까?

메모리가 충분함에도 불구하고 Ubuntu에서 대규모 NumPy 배열을 할당할 수 없는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-09 04:33:15787검색

Why Can't I Allocate Large NumPy Arrays on Ubuntu Despite Sufficient Memory?

Ubuntu

Ubuntu 18에서 Numpy 어레이에 상당한 메모리를 할당할 때 사용자에게 다음과 같은 문제가 발생할 수 있습니다. "모양과 데이터 유형이 있는 배열을 할당할 수 없습니다."와 같은 오류가 발생합니다. 이 문제는 메모리가 충분함에도 불구하고 발생하며 MacOS에서는 관찰되지 않습니다.

근본 원인

이 문제는 Ubuntu의 기본 오버커밋 모드(0)에서 발생합니다. . 이 모드에서 커널은 물리적 페이지의 오버커밋을 방지하기 위해 메모리 할당을 제한합니다. 이는 약 282GB가 필요한 지정된 것과 같이 크기가 큰 배열에 메모리를 할당할 때 문제가 됩니다.

솔루션

배열을 성공적으로 할당하려면 다음을 수행하세요. 오버커밋 모드를 1로 변경합니다. 이렇게 하면 "항상 오버커밋" 모드가 효과적으로 활성화되어 실제 메모리가 있는지 여부에 관계없이 할당이 가능해집니다. 충분합니다.

루트로 오버커밋 모드를 1로 설정하려면 다음 명령을 실행합니다.

$ echo 1 > /proc/sys/vm/overcommit_memory

Sparse Array 고려 사항

이것은 솔루션을 사용하면 희박하거나 대부분 비어 있는 배열에 공간을 할당할 수 있습니다. 그러나 데이터가 존재하는 물리적 페이지를 할당하려면 명시적으로 배열에 써야 한다는 점에 유의하는 것이 중요합니다. 이는 효율적인 메모리 활용에 매우 중요할 수 있습니다.

위 내용은 메모리가 충분함에도 불구하고 Ubuntu에서 대규모 NumPy 배열을 할당할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.