Общее энергопотребление NVML для программы - PullRequest
0 голосов
/ 04 октября 2018

Я использую 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]);
        }

Что мне нужно сделать, чтобы получить общее энергопотребление для моей программы?Есть ли хитрость, чтобы использовать это?или любая другая функция, которая могла бы сделать это?

Любая помощь приветствуется.

...