nvml_examples: GPU 모니터링을 위한 NVML 라이브러리 활용 예제
요약
본 예제는 NVML 라이브러리와 C++11 멀티스레딩을 활용하여 GPU 모니터링 기능을 구현하는 방법을 보여줍니다. 기존의 `nvidia-smi` 파이프 방식보다 효율적으로 높은 샘플링률로 데이터를 수집할 수 있습니다. 또한, 데이터 플롯에 필요한 Matlab 스크립트도 함께 제공됩니다.
핵심 포인트
- NVML 라이브러리를 이용한 GPU 모니터링 예제입니다.
- C++11 멀티스레딩을 활용하여 높은 샘플링률을 구현합니다.
- `nvidia-smi` 파이프 방식의 I/O 과부하 문제를 해결합니다.
- Tesla 카드 등 특정 하드웨어 전제 조건이 있습니다.
nvml_example
GPU 모니터링을 위해 NVML 라이브러리를 높은 샘플링률로 사용하는 방법을 보여주는 예제입니다.
이 예제는 NVML 라이브러리와 C++11 멀티스레딩을 활용하여 높은 샘플링률로 GPU 모니터링을 제공합니다. 일반적으로 nvidia-smi를 파일로 파이프하는 방식은 과도한 I/O 사용을 유발할 수 있습니다.
또한, 데이터를 플롯(plot)하는 데 사용되는 Matlab 스크립트도 함께 제공됩니다.
전제 조건 (Prerequisites)
예제는 Tesla 카드를 요구합니다. 왜냐하면 일부 호출은 Geforce 계열에서는 지원되지 않기 때문입니다.
빌드된 도구 세트 (Built With)
이 예제는 다음 도구 세트를 활용합니다:
- cuBLAS
- Thrust
- C++11 멀티스레딩
- NVIDIA Management Library (NVML)
배포 (Deployment)
헤더 클래스를 포함하세요.
#include nvmlClass.h
nvmlClass 객체를 생성합니다.
nvmlClass nvml( dev, filename );
데이터를 수집하기 위해 병렬로 실행할 스레드를 만듭니다.
std::thread threadStart( &nvmlClass::getStats, &nvml );
getStats 함수를 종료하기 위한 스레드를 만듭니다.
std::thread threadKill( &nvmlClass::killThread, &nvml );
모든 스레드를 합류시킵니다 (Join).
threadStart.join( );
threadKill.join( );
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub ML Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기