을 주요 많은 양의 메모리를 할당 및 TensorFlow r1.3 (소스에서 컴파일 됨), CUDA_VISIBLE_DEVICES
이 설정되지 않은 상태에서 32G 물리적 메모리와 2 개의 GPU (GTX Titan X 및 GTX 970)가있는 경우 (즉, 두 GPU 모두 표시됨) 결과 파이썬 프로세스에 59.7G의 메모리가 할당됩니다 ! 실제로는 754M 만 사용합니다.는 TensorFlow 다음과 같은 두 가지 라인 파이썬/TensorFlow 대화 형 세션을 고려 세션 시작 시간에
CUDA_VISIBLE_DEVICES=0
(즉 Titan X 만 표시됨)이면 55.2G가 할당되고 137M이 사용 중입니다.
CUDA_VISIBLE_DEVICES=1
(즉, 970 만 표시됨) 47.0G가 할당되고 325M이 사용 중입니다.
CUDA_VISIBLE_DEVICES=
(즉, GPU가 보이지 않는 경우) 2.5G 만 할당되고 131M 만 사용 중입니다.
이것은 할당 된 메모리 양이 제한된 환경에서 문제가됩니다. 그리드 엔진 설정 내부.
TensorFlow가 CUDA를 사용할 때 할당하는 주 메모리의 양을 제한하는 방법이 있습니까?
업데이트 1
할당 된 메모리의 양에 htop
VIRT
열 보면,이 시험에서 결정된다.
TensorFlow r1.3은 대부분 기본적으로 configure
답으로 컴파일됩니다. 유일한 변형은 CUDA 및 cuDNN의 경로입니다. 결과적으로 jemalloc
이 사용되고 있습니다.
업데이트 2
나는 jemalloc
장애인과 재 컴파일 시도와 같은 동작을 참조했습니다.
여기에 설명 된 CUDA 드라이버 문제로 인해 발생할 수 있습니다. https://stackoverflow.com/questions/11631191/why-does-the-cuda-runtime-reserve-80-gib-virtual-memory-upon-initialization –
얼마나 많은 메모리가 할당되었는지 확인합니까? 또한 다른 할당 자와 함께 실행 해 볼 수도 있습니다 - sudo apt-get install google-perftools; export LD_PRELOAD = "/ usr/lib/libtcmalloc.so.4"' –
감사합니다. @ YaroslavBulatov.나는'tcmalloc'을 사용해 보았지만 행동에 아무런 영향을 미치지 않는 것처럼 보였다. CUDA를 TensorFlow 대신 직접 사용했을 때 비슷한 동작을 들었으므로 최고의 TF가로드 할 때 CUDA 드라이버를 다르게 구성 할 수 있다고 생각합니다. –