Общее энергопотребление 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]);
        }

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

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

0 ответов

Другие вопросы по тегам