이 저장소는 nvidia-smi와 pynvml을 사용하여 GPU 사용률을 기록하는 간단한 코드 예제를 포함하고 있습니다.
CSV로 오프라인 로깅을 하거나 실시간 시각화를 지원합니다.
GPU 사용률을 기록하려면 log_gpu_utilization.sh 스크립트를 실행하세요.
CTRL+C를 눌러 로깅을 종료할 수 있습니다.
기록된 GPU 사용률을 표시하려면 plot_nvidia_dump.py 스크립트를 실행하세요:
$ python plot_nvidia_dump.py gpu_log_[timestamp].csv
정수형 GPU ID를 지정하여 특정 GPU만 필터링할 수 있습니다. 이를 위해 plot_nvidia_dump.py에 --filter-ids 명령줄 인자를 사용하세요:
$ python plot_nvidia_dump.py gpu_log_[timestamp].csv --filter-ids 6
위 명령은 BUS ID 기준으로 0부터 시작하는 일곱 번째 GPU(ID 6번)의 사용률만 표시합니다.
이 ID들은 PCI BUS ID 기준으로 0부터 순서대로 정해집니다. 반면 CUDA는 기본적으로 성능 순서대로 GPU를 나열합니다.
CUDA에서도 이 스크립트나 nvidia-smi와 같은 순서로 GPU ID를 사용하려면, 아래와 같이 환경 변수를 설정하세요:
export CUDA_DEVICE_ORDER=PCI_BUS_ID
참고: 이 설정은 GPU를 코드에서 할당하기 전에 반드시 해야 GPU ID가 올바르게 적용됩니다.
실시간 로깅 스크립트는 pynvml과 matplotlib에 의존하므로, 먼저 아래 명령어로 설치하세요:
pip install pynvml
설치 후, 아래 명령으로 실시간 로깅을 시작하세요:
$ python live_gpu_utlization_plot.py
nvidia-smi와 마찬가지로 BUS ID 기준으로 GPU 인덱스를 지정하여 특정 GPU만 필터링할 수 있습니다:
$ python live_gpu_utlization_plot.py 1 2
위 명령은 두 번째와 세 번째 GPU만 정보를 표시합니다.
그래프를 최근 몇 초간의 데이터만 보이도록 제한하려면 --limit-window 명령줄 인자를 사용하세요.
이 옵션은 설정한 시간(초)만큼의 데이터를 지속적으로 보여줍니다.
예: 최근 1분간(60초)의 사용률만 보려면 아래 명령을 사용하세요:
$ python live_gpu_utlization_plot.py --limit-window 60