一、NVML是什麼
NVIDIA Management Library,簡稱NVML,是一個C-based的API庫,可以用於檢測和管理NVIDIA GPU的健康狀況,包括設備查詢、性能監視、顯存管理和電源管理等。它與NVIDIA驅動程序一起安裝在CUDA Toolkit中,因此,您無需額外安裝或配置NVML即可使用它。
以下是一個使用NVML查詢GPU設備屬性的示例:
#include <nvml.h>
#include <stdio.h>
int main(){
unsigned int count;
nvmlDevice_t device;
nvmlPciInfo_t pci;
//初始化NVML庫
nvmlInit();
//查詢NVIDIA GPU設備數量
nvmlDeviceGetCount(&count);
printf("%d NVIDIA devices found.\n",count);
//輸出每個GPU設備的PCI匯流排ID
for (int i=0; i<count; i++){
nvmlDeviceGetHandleByIndex(i,&device);
nvmlDeviceGetPciInfo(device,&pci);
printf("Device %d: %04x:%02x:%02x.%d\n",i,pci.domain,pci.bus,pci.device,pci.function);
}
//卸載NVML庫
nvmlShutdown();
return 0;
}
二、NVML的主要API操作
1. 設備查詢操作
NVML提供了豐富的API函數,用於查詢GPU設備的多個屬性和狀態信息。以下是一些常見的設備查詢函數:
nvmlDeviceGetCount(unsigned int *device_count)
:查詢系統中的NVIDIA GPU設備數量。nvmlDeviceGetHandleByIndex(unsigned int index, nvmlDevice_t *device)
:通過索引獲取一個NVML設備句柄。nvmlDeviceGetName(nvmlDevice_t device, char *name, unsigned int length)
:獲取給定NVIDIA GPU設備的名稱信息。nvmlDeviceGetTemperature(nvmlDevice_t device, nvmlTemperatureSensors_t sensorType, unsigned int *temp)
:獲取GPU設備的溫度信息。
2. 性能監視操作
除了設備查詢之外,NVML還可以提供底層性能監視,以幫助您優化GPU應用程序並診斷相關問題。以下是一些常見的性能監視函數:
nvmlDeviceGetUtilizationRates(nvmlDevice_t device, nvmlUtilization_t *utilization)
:獲取GPU設備的當前使用率,包括計算和存儲使用率。nvmlDeviceGetFanSpeed(nvmlDevice_t device, unsigned int *speed)
:獲取GPU設備的風扇轉速。nvmlDeviceGetMemoryInfo(nvmlDevice_t device, nvmlMemory_t *memory)
:獲取GPU設備的顯存使用和可用情況。nvmlDeviceGetClockInfo(nvmlDevice_t device, nvmlClockType_t type, unsigned int *clock)
:獲取GPU設備的時鐘信息,包括核心和存儲器時鐘。
3. 顯存管理操作
作為顯存管理的一部分,NVML支持顯存使用的查詢和管理。以下是一些常見的顯存管理函數:
nvmlDeviceGetMemoryInfo(nvmlDevice_t device, nvmlMemory_t *memory)
:獲取GPU設備的顯存使用和可用情況。nvmlDeviceSetApplicationsClocks(nvmlDevice_t device, unsigned int memClockMHz, unsigned int graphicsClockMHz)
:為GPU設備設置應用程序的時鐘。
4. 電源管理操作
NVML提供了一些操作來管理電源使用和功率。以下是一些常見的電源管理函數:
nvmlDeviceGetPowerUsage(nvmlDevice_t device, unsigned int *power)
:獲取GPU設備的實時功率使用情況。nvmlDeviceGetPowerManagementMode(nvmlDevice_t device, nvmlEnableState_t *mode)
:獲取對於給定的GPU設備,功率管理模式開關的狀態。nvmlDeviceSetPowerManagementMode(nvmlDevice_t device, nvmlEnableState_t mode)
:將對於給定的GPU設備,功率管理模式開關的狀態設置為啟用或禁用。
三、總結
通過NVML,您可以輕鬆獲取GPU設備的各種性能信息。它提供了一個強大而易於使用的API,可幫助管理和最大限度地利用您的GPU硬體。此外,NVML還為性能監視、顯存管理和電源管理提供了重要的功能。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/297761.html