Общее энергопотребление NVML для программы
Я использую nvmlDeviceGetPowerUsage () NVML, чтобы получить общее энергопотребление для моей программы. В приведенном ниже коде я вставил один вызов в него перед моей параллельной областью openACC и другой вызов после параллельной области.
Но это не кажется правильным, так как в документации сказано, что эта функция "извлекает энергопотребление для этого графического процессора в милливаттах и связанных с ним схем (например, памяти)", который я интерпретирую как: (поправьте меня, если я ошибаюсь) " Текущая потребляемая мощность графического процессора ", а не общее энергопотребление во время выполнения моей программы.
Вот код, который я сейчас использую:
unsigned int power[device_count];
for (i = 0; i < device_count; i++){
if(nvmlDeviceGetPowerUsage ( device[i], &power[i] ) != NVML_SUCCESS){
printf("Error getting power usage for device:%d\n",i);
}
printf("Before: Power usage for device:%d = %ld mWatts\n",i,power[i]);
}
#pragma acc parallel
{
//code to run in parallel here
}
for (i = 0; i < device_count; i++){
if(nvmlDeviceGetPowerUsage ( device[i], &power[i] ) != NVML_SUCCESS){
printf("Error getting power usage for device:%d\n",i);
}
printf("After: Power usage for device:%d = %ld mWatts\n",i,power[i]);
}
Что мне нужно сделать, чтобы получить общее энергопотребление для моей программы? Есть ли хитрость, чтобы использовать это? или любая другая функция, которая могла бы сделать это?
Любая помощь приветствуется.