저는 여러 NVIDIA GPU를 사용하는 시스템을 개발하고 있습니다. 나중에 다시 활성화할 수 있도록 GPU 중 하나를 비활성화/사라지게 만들고 싶습니다.
가능합니까?
노트:
- 루트 액세스 권한이 있다고 가정합니다(장치 파일 권한이 있는 사용자에게는 루트가 아닌 솔루션이 더 좋지만).
- 중요한 경우 배포판은 SLES 12 또는 SLES 15입니다. 이유는 묻지 마세요. :-(
답변1
장애가 있는:
다음 코드는 GPU를 비활성화하여 찾을 수 있는 CUDA 장치 목록에 포함되지 않도록 보이지 않게 만듭니다(그리고 장치 인덱스도 차지하지 않습니다).
nvidia-smi -i 0000:xx:00.0 -pm 0
nvidia-smi drain -p 0000:xx:00.0 -m 1
여기서 xx는 GPU의 PCI 장치 ID입니다. 또는 를 사용하여 lspci | grep NVIDIA
를 결정할 수 있습니다 nvidia-smi
.
lspci
위 명령을 실행한 후에도 장치가 계속 표시됩니다.
다시 활성화:
nvidia-smi drain -p 0000:xx:00.0 -m 0
이제 장치가 표시됩니다.
이 접근 방식의 문제점
- 루트가 아니거나 아직 설명할 수 없는 경우에는 실패할 수 있습니다.
- 이 작업을 수행할 때 GPU를 적극적으로 사용하는 프로세스에 어떤 일이 발생하는지 조사되지 않았습니다.
- 문법은 바로크적이고 혼란스럽습니다. NVIDIA - 불행하게도 GPU를 더 간단하게 비활성화해야 합니다.