Энергопотребление кода OpenCL, работающего на графическом процессоре NVIDIA

Я пытаюсь запустить код OpenCL для декодера MJPEG на графическом процессоре Nvidia (Tesla K20c). Я задавал вопросы на других веб-сайтах по обмену стеками о реализации декодера на графическом процессоре, и сейчас я пытаюсь рассчитать энергопотребление каждого отдельного ядра OpenCL, работающего на Tesla K20c. (Я перевел 4 последовательные функции C, а именно iqzz, IDCT, повышающую дискретизацию и преобразование цветов в ядра OpenCL).

Я использую nvidia-smi чтобы проверить мощность, потребляемую графическим процессором, когда я запускаю свой код OpenCL. Потребляемая мощность холостого хода K20c составляет 17 Вт, когда код не запускается.

Я использовал следующий метод, чтобы проверить мощность каждого отдельного ядра:

Чтобы рассчитать энергопотребление конкретного ядра OpenCL, я закомментировал оставшиеся ядра OpenCL и позволил их эквивалентным версиям C работать на их месте. Я делал это, чтобы код работал правильно. Следовательно, когда я хочу запустить другое ядро ​​OpenCL, я активирую (раскомментирую) однопоточные версии C других ядер.

Каждое отдельное ядро, мощность которого я хотел изучить вышеописанным способом, потребляло мощность в диапазоне приблизительно от 49 до 55 Вт. Ядро для функции Upsampling потребляло наибольшее количество энергии (55 Вт).

Более того, я считаю, что если я запускаю все ядра OpenCL одновременно на графическом процессоре, общее значение потребляемой мощности должно быть суммой значений, которые я получил, когда запускал каждое ядро ​​отдельно. Вместо этого общее энергопотребление, когда я запускал все ядра сразу, составило 54,83 Вт! Потребляемая мощность даже ниже, чем мощность, потребляемая ядром для Upsampling.

Есть ли у вас какие-либо предложения для правильного расчета мощности, потребляемой каждым ядром в моем коде OpenCL? В большинстве исследовательских работ (например, в этой) упоминаются причудливые методы, такие как подключение зондов к шине PCI, процессору и графическому процессору. Однако у меня есть закрытая система, и я не могу использовать физические средства для измерения мощности.

Сложение:

Процент использования графического процессора достиг 98 %, когда я однажды добавил printf заявления к одному из моих ядер.

1 ответ

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

Потребление энергии для "отдельного ядра" не имеет большого смысла в этом контексте; GPU будет включен и потреблять некоторое количество энергии, независимо от того, что вы используете на нем. (Этот номер должен быть вашим базовым показателем для потребления энергии.)

  • Число 54,83 Вт, которое вы указали, означает, что ваше ядро ​​потребляет меньше энергии, чем повышающая дискретизация, что имеет смысл, поскольку повышающая дискретизация является очень дорогостоящей операцией, и ее легко можно сжечь на 170 мВт больше.

(Измерение холостого хода 17 Вт вводит в заблуждение, потому что чипсет, вероятно, находится в некотором состоянии приостановки ACPI, когда части чипа полностью отключены, что позволяет "ненормально" низкое энергопотребление, которого вы никогда не сможете достичь при любом типе ядра.)

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