Подтвердить что ты не робот

Как измерить мощность, потребляемую алгоритмом C во время работы на процессоре Pentium 4?

Как измерить мощность, потребляемую алгоритмом C во время работы на процессоре Pentium 4 (и любой другой процессор также будет работать)?

4b9b3361

Ответ 1

Поскольку вы знаете время выполнения, вы можете рассчитать энергию, используемую процессором, путем поиска энергопотребления в P4 datasheet. Например, 2.2 ГГц P4 с FSB 400 МГц имеет типичный Vcc 1,3725 вольт и Icc 47,9 А, что составляет (1,3725 * 47,9 =) 65,74 Вт. Поскольку вы знаете, что ваш цикл из 10 000 циклов алгоритма занял 46.428570s, вы предполагаете, что один цикл будет принимать 46.428570/10000 = 0.00454278s. Количество энергии, потребляемой вашим алгоритмом, будет тогда 65,74 Вт * 0,00454278 с = 0,305 ватт секунд (или джоулей).

Чтобы преобразовать в киловатт-часы: 0,305 ватт секунд * 1000 киловатт/Вт * 1 час /3600 секунд = 0,85 киловатт-часов. Коммунальная компания взимает около 0,11 доллара за киловатт-час, поэтому этот алгоритм будет стоить 0,85 kwh * $0,11 = около копейки для запуска.

Помните, что это только процессор... ни один из остальных компьютеров.

Ответ 2

Запустите свой алгоритм в длинном цикле с Kill-a-Watt, прикрепленным к машине?

Ответ 3

Отличный вопрос; Я поддержал это. У меня нет подсказки, но здесь есть методология:

- получить спецификацию спецификации процессора от Intel (или AMD или кто бы то ни было) или просмотреть Википедию; что должно сказать вам потребление энергии при максимальной скорости FLOP;

- преобразовать алгоритм в FLOP;

- выполнить некоторую простую арифметику;

- отправьте свои данные и вычисления в SO и предложите комментарии и дополнительные данные

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

Ответ 4

Если вы не запускаете код на простой операционной системе с одним заданием, такой как DOS или RTOS, где вы получаете точный контроль над тем, что выполняется в любое время, ОС, как правило, будет запускать много других процессов одновременно. Может быть трудно отличить ваш процесс от любых других.

Ответ 5

Во-первых, вам нужно запустить простейшую ОС, которая поддерживает ваш код (возможно, версию unix для какой-либо версии сервера, я ожидаю, что это будет непрактично для Windows). Это позволит избежать ошибок в работе ОС.

Затем вам необходимо установить прибор с помощью чувствительного регистратора данных между источником питания и материнской платой. Это потребует некоторой тщательной аппаратной инженерии, чтобы не испортить регулирование напряжения ПК, но кто-то должен был это сделать.

Я действительно сделал это со встроенным модулем MIPS и протоколирующим мультиметром, но у него был единственный источник питания 12 В. На самом деле, подумайте об этом, если вы использовали источник питания, созданный для запуска ПК в автомобиле, у вас будет 12-вольтовый источник питания, и все, что вам нужно, это лабораторный блок питания с достаточным усилителем для запуска.

Ответ 6

Трудно сказать.

Я предлагаю вам использовать Current Clamp, чтобы вы могли измерить всю мощность, потребляемую вашим процессором. Затем вы должны измерить потребление холостого хода вашей системы, получить стандартное значение с минимальным стандартным отклонением, насколько это возможно.

Затем запустите критический код в цикле.

Предыдущие предложения по запуску вашего кода под DOS/RTOS также действительны, но, возможно, он не будет компилироваться так же, как ваше производство...

Ответ 7

Извините, я считаю этот вопрос бессмысленным.

Почему? Поскольку сам алгоритм имеет (со следующими исключениями *) отсутствие корреляции с потреблением энергии, он является приоритетом в программах/потоках/процессах. Если вы измените приоритет, вы измените количество времени простоя процессора и, следовательно, потребление энергии. Я думаю, что единственное различие в потреблении энергии между инструкциями - это количество циклов, поэтому быстрый код будет дружественным по мощности. Для измерения энергопотребления "алгоритма" бессмысленно, если вы не имеете в виду производительность.

* Исключения: потоки, которые могут быть свободными в ожидании других потоков, программы, которые используют инструкцию HLT.

Уверенный запуск процессора по мере возможности увеличивает количество энергии сверхлинейно (больше тепла, требуется больше охлаждения), но это проблема с оборудованием. Если вы хотите сэкономить энергию, вы можете перезапустить процессор или использовать энергоэффективные процессоры Atom, но изменение/настройка кода ничего не изменит.

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

Почему вам все равно нужна эта задача?

Ответ 8

Привет, ребята, спасибо за ответ.... Код очень простой код C (даже не 150 строк), поэтому я думаю, мы сможем легко запустить его под DOS.... Мне нужно сделать это для моего проекта в колледже и они настаивают на том, чтобы не использовать какое-либо внешнее устройство или схему... Нет ли способа сделать это логически.. просто используя некоторые команды операционной системы или что-то еще в этом роде..... Я зациклил свой код на 10000 время и количество требуемых тактовых сигналов были 845, а время было 46.428570... Не могу выполнить некоторые манипуляции с этими значениями и получить определенную идею о потребляемой мощности..... Если вы хотите, я могу загрузить весь код