Использование nvidia-smi - лучшая стратегия для захвата власти

Я использую Tesla K20c и измеряю мощность с помощью nvidia-smi во время работы моего приложения. Моя проблема в том, что энергопотребление не достигает устойчивого состояния, но продолжает расти. Например, если мое приложение работает на 100 итерациях, мощность достигает 106 Вт (за 4 секунды), на 1000 итераций - 117 Вт (за 41 секунду), на 10000 итераций - 122 Вт (за 415 секунд) и т. Д. Каждый раз слегка увеличивается. Я пишу для какой-то рекомендации, какое значение мощности я должен записать. В моей экспериментальной установке у меня более 400 экспериментов, и выполнение каждого из них для 10000 итераций, по крайней мере, пока невозможно. Приложение представляет собой матричное умножение, которое выполнимо за одну итерацию, занимающую всего несколько миллисекунд. Увеличение количества итераций не дает никакого значения для результатов, но увеличивает время выполнения, позволяя контролировать мощность.

1 ответ

Решение

Причина, по которой вы видите увеличение энергопотребления со временем, заключается в том, что графический процессор нагревается при постоянной нагрузке. Электронные компоненты потребляют больше энергии при повышенной температуре в основном за счет увеличения омического сопротивления. Кроме того, Tesla K20c является активно охлаждаемым графическим процессором: по мере нагрева графического процессора вентилятор на плате вращается быстрее и, следовательно, требует большей мощности.

Я проводил эксперименты на K20c, которые были очень похожи на ваши, примерно до 10 минут. Я обнаружил, что выходное напряжение возрастает через 5–6 минут, и после этого наблюдаются только колебания уровня шума +/-2 Вт. Это может быть связано с гистерезисом в контуре обратной связи вентилятора с регулируемой температурой или из-за кратковременных колебаний из-за неполного использования графического процессора в конце каждого ядра. Разница в потребляемой мощности из-за разницы в скорости вентилятора составляла около 5 Вт. Причина, по которой графическому процессору требуется довольно много времени для достижения устойчивого состояния, заключается в теплоемкости всей сборки, которая имеет небольшую массу, включая сплошную металлическую заднюю панель,

Похоже, ваши измерения направлены на определение относительного энергопотребления при работе с 400 различными вариантами кода. Не кажется критическим, что достигается установившееся энергопотребление, просто условия, при которых тестируется каждый вариант, настолько же равны, насколько это практически достижимо. Имейте в виду, что датчики питания графического процессора не предназначены для обеспечения высокоточных измерений, поэтому для целей сравнения вы можете предположить уровень шума порядка 5%. Для точного сравнения вам может потребоваться усреднить измерения более чем с одним графическим процессором одного типа, поскольку производственные допуски могут привести к колебаниям потребления мощности между несколькими "одинаковыми" графическими процессорами.

Поэтому я бы предложил следующий протокол: запускать каждый вариант в течение 30 секунд, измеряя энергопотребление ближе к концу этого интервала. Затем дайте GPU бездействовать в течение 30 секунд, чтобы он остыл, прежде чем запускать следующее ядро. Это должно дать примерно равные начальные условия для каждого варианта. Возможно, вам придется немного увеличить предложенное время простоя, если вы обнаружите, что температура остается повышенной в течение более длительного времени. Данные о температуре, представленные nvidia-smi могу направить вас сюда. С этим процессом вы сможете завершить тестирование 400 вариантов за одну ночь.

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