이것은 더 많은 주석의 가치가 있지만,가리키는다.
이유에서 일반은 참으로 어떤 talonmies 댓글을 달았지만,당신은 당 합산하는 번호가 잘못되었습니다. 어떤 일이 발생하는지 살펴보겠 때 tensors 로 이동됩 GPU(이에 나와 PC RTX2060 5.8G 용 GPU 메모리에서 전체):
자 실행하는 다음 파이썬은 대화식으로 명령:
Python 3.8.10 (default, Sep 28 2021, 16:10:42)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> a = torch.zeros(1).cuda()
>>> b = torch.zeros(500000000).cuda()
>>> c = torch.zeros(500000000).cuda()
>>> d = torch.zeros(500000000).cuda()
다음과 같은 출력 watch -n.1 nvidia-smi
:
오후 torch
가져오기:
| 0 N/A N/A 1121 G /usr/lib/xorg/Xorg 4MiB |
후에 바로 생성 a
:
| 0 N/A N/A 1121 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 14701 C python 1251MiB |
당신이 볼 수있는,필요하신 1251MB
을 얻을 pytorch 사용하기 시작하 CUDA,는 경우에도 당신이 하나만 필요한 부동합니다.
후에 바로 생성 b
:
| 0 N/A N/A 1121 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 14701 C python 3159MiB |
b
구 500000000*4 bytes = 1907MB
이와 같은 증가에 open icecat 콘텐츠 배포업체를 통해 사용됩 python 과정입니다.
후에 바로 생성 c
:
| 0 N/A N/A 1121 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 14701 C python 5067MiB |
다.
후에 바로 생성 d
:
| 0 N/A N/A 1121 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 14701 C python 5067MiB |
더 메모리 할당 및 움 오류가 발생합니다:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: CUDA out of memory. Tried to allocate 1.86 GiB (GPU 0; 5.80 GiB total capacity; 3.73 GiB already allocated; 858.81 MiB free; 3.73 GiB reserved in total by PyTorch)
분명히:
- "이미 할당된"부분에 포함되는"예약에서 총 의 PyTorch"부분입니다. 할 수 없습니다 sum 들,그렇지 않으면 합을 초과하는 총 메모리를 사용할 수 있습니다.
- 최소 메모리를 얻기 위해 필요 pytorch 에서 실행 되는 GPU(
1251M
)에 포함되지 않은"지에서 총"부분입니다.
그래서 당신의 경우,합계로 구성되어야:
- 792MB(예약에서 총)
- 1251MB(최소 얻을 pytorch 에서 실행 되는 GPU 가정하면,이것은 동일한 모두에 대한 저희의)
- 5.13GB(무료)
- 168+363+161=692MB(다른 프로세스)
그들이 합하여 약 7988MB=7.80GB 는 정확하게 당신이 총 GPU 메모리입니다.