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

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

12
задан Jonathan Leffler 4 January 2010 в 14:16
поделиться

8 ответов

Так как вы знаете время выполнения, вы можете вычислить энергию, используемую процессором, посмотрев на листе данных P4 . Например, P4 с частотой 2.2 ГГц и FSB с частотой 400 МГц имеет типичный Vcc 1.3725 Вольт и Icc 47.9 Ампер, что составляет (1.3725*47.9=) 65.74 Ватт. Так как вы знаете, что цикл из 10 000 циклов алгоритма занял 46.428570 с, вы предполагаете, что один цикл займет 46.428570/10000 = 0.00454278 с. Количество энергии, потребляемой вашим алгоритмом, составит 65.74 Вт * 0.00454278 с = 0.305 Вт/с (или джоулей).

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

Имейте в виду, что это только процессор... ни один из остальной части компьютера.

.
6
ответ дан 2 December 2019 в 06:26
поделиться

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

.
5
ответ дан 2 December 2019 в 06:26
поделиться

Отличный вопрос, я его поднял. Понятия не имею, но вот методика:

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

-- транслируйте алгоритм в FLOP;

-- сделайте какую-нибудь простую арифметику;

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

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

.
4
ответ дан 2 December 2019 в 06:26
поделиться

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

.
1
ответ дан 2 December 2019 в 06:26
поделиться
[

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

].
4
ответ дан 2 December 2019 в 06:26
поделиться
[

] Извините, я нахожу этот вопрос бессмысленным. [

] [

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

]. [

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

] [

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

]. [

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

]. [

] Зачем тебе вообще эта задача? [

]
1
ответ дан 2 December 2019 в 06:26
поделиться

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

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

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

2
ответ дан 2 December 2019 в 06:26
поделиться

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

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

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

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

1
ответ дан 2 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: