Reduced number of NVML function calls
This commit is contained in:
+10
-14
@@ -10,15 +10,14 @@ void init_nvml()
|
||||
printf("Could not init NVML: %s\n", nvmlErrorString(result));
|
||||
}
|
||||
|
||||
int get_nvml_handle(nvmlDevice_t *device, struct card_info *card)
|
||||
void get_nvml_handle(struct card_info *card)
|
||||
{
|
||||
nvmlReturn_t result;
|
||||
result = nvmlDeviceGetHandleByPciBusId_v2(card->pci_id, device);
|
||||
result = nvmlDeviceGetHandleByPciBusId_v2(card->pci_id, card->nvml_device);
|
||||
if (result != NVML_SUCCESS) {
|
||||
printf("Failed to get device handle for card at %s: %s\n", card->pci_id, nvmlErrorString(result));
|
||||
return 0;
|
||||
printf("Failed to get NVML device handle for card at %s: %s\n", card->pci_id, nvmlErrorString(result));
|
||||
card->nvml_device = NULL;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void print_nvml_clock_reason(int compact, struct card_info *card)
|
||||
@@ -52,12 +51,11 @@ void print_nvml_clock_reason(int compact, struct card_info *card)
|
||||
|
||||
unsigned int get_nvml_temp(struct card_info *card)
|
||||
{
|
||||
nvmlDevice_t nvml_device;
|
||||
if (!get_nvml_handle(&nvml_device, card))
|
||||
if (card->nvml_device == NULL)
|
||||
return 0;
|
||||
|
||||
unsigned int temp;
|
||||
nvmlReturn_t result = nvmlDeviceGetTemperature(nvml_device, NVML_TEMPERATURE_GPU, &temp);
|
||||
nvmlReturn_t result = nvmlDeviceGetTemperature(*(nvmlDevice_t*)(card->nvml_device), NVML_TEMPERATURE_GPU, &temp);
|
||||
if (result != NVML_SUCCESS) {
|
||||
printf("Failed to get temperature for card at %s: %s\n", card->pci_id, nvmlErrorString(result));
|
||||
return 0;
|
||||
@@ -67,12 +65,11 @@ unsigned int get_nvml_temp(struct card_info *card)
|
||||
|
||||
unsigned long long get_nvml_clock_reasons(struct card_info *card)
|
||||
{
|
||||
nvmlDevice_t nvml_device;
|
||||
if (!get_nvml_handle(&nvml_device, card))
|
||||
if (card->nvml_device == NULL)
|
||||
return 0;
|
||||
|
||||
unsigned long long reasons;
|
||||
nvmlReturn_t result = nvmlDeviceGetCurrentClocksEventReasons(nvml_device, &reasons) ;
|
||||
nvmlReturn_t result = nvmlDeviceGetCurrentClocksEventReasons(*(nvmlDevice_t*)(card->nvml_device), &reasons) ;
|
||||
if (result != NVML_SUCCESS) {
|
||||
printf("Failed to get clock reasons for card at %s: %s\n", card->pci_id, nvmlErrorString(result));
|
||||
return 0;
|
||||
@@ -83,12 +80,11 @@ unsigned long long get_nvml_clock_reasons(struct card_info *card)
|
||||
|
||||
unsigned int get_nvml_mem_util(struct card_info *card)
|
||||
{
|
||||
nvmlDevice_t nvml_device;
|
||||
if (!get_nvml_handle(&nvml_device, card))
|
||||
if (card->nvml_device == NULL)
|
||||
return 0;
|
||||
|
||||
nvmlUtilization_t util;
|
||||
nvmlReturn_t result = nvmlDeviceGetUtilizationRates(nvml_device, &util);
|
||||
nvmlReturn_t result = nvmlDeviceGetUtilizationRates(*(nvmlDevice_t*)(card->nvml_device), &util);
|
||||
if (result != NVML_SUCCESS) {
|
||||
printf("Failed to get clock reasons for card at %s: %s\n", card->pci_id, nvmlErrorString(result));
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user