> 백엔드 개발 > 파이썬 튜토리얼 > NumPy가 Ubuntu에서 대규모 배열을 할당하지 못하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

NumPy가 Ubuntu에서 대규모 배열을 할당하지 못하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Patricia Arquette
풀어 주다: 2024-11-30 14:40:11
원래의
143명이 탐색했습니다.

Why Does NumPy Fail to Allocate Large Arrays on Ubuntu, and How Can I Fix It?

Shape 및 데이터 유형의 배열을 할당할 수 없습니다

증상

Ubuntu 18에서 NumPy로 대규모 배열을 할당할 때, 사용자에게 "MemoryError: 모양이 있는 배열을 할당할 수 없습니다" 오류가 발생할 수 있습니다. 이는 시스템 메모리가 충분함에도 불구하고 발생합니다. 특히 macOS에서는 이러한 문제가 발생하지 않습니다.

원인

이 문제는 시스템의 오버 커밋 처리 모드에서 발생합니다. 기본 모드(0)에서는 커널이 물리적 메모리에 비해 너무 과도한 것으로 간주되는 할당 요청을 거부할 수 있습니다.

해결 방법

오류를 해결하려면:

  1. 오버커밋 모드를 확인하세요.

    $ cat /proc/sys/vm/overcommit_memory
    로그인 후 복사

    반환되는 경우 0, 2단계로 진행합니다.

  2. 루트로 "항상 오버커밋" 모드 활성화:

    $ echo 1 > /proc/sys/vm/overcommit_memory
    로그인 후 복사
  3. 어레이 다시 시도 할당.

uint8 데이터 유형을 사용하는 차원 배열(156816, 36, 53806)의 경우:

import numpy as np

# Allocate array with "always overcommit" mode enabled
a = np.zeros((156816, 36, 53806), dtype='uint8')
print(a.nbytes)  # 303755101056 bytes
로그인 후 복사

시스템은 특정 배열 요소가 기록될 때만 메모리를 할당합니다. 이를 통해 희소 배열을 사용할 수 있습니다.

위 내용은 NumPy가 Ubuntu에서 대규모 배열을 할당하지 못하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿