Я пытаюсь запустить код 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 ответ1

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .