Re[3]: Энергоэффективность алгоритмов
От: Stanislav V. Zudin Россия  
Дата: 18.02.25 15:32
Оценка:
Здравствуйте, Философ, Вы писали:

SVZ>>А разве энерго-ужористость не прямо пропорциональна алгоритмической сложности?

SVZ>>Если один алгоритм выполняется, допустим, за O(logN), а другой за O(N^2), то кто из них больше раскочегарит процессор?

Ф>Я думаю, что всё может быть несколько сложнее:

Ф>1) Разные операции требуют разного кол-ва энергии. Например, думаю очевидно, что операции с плавающей точкой сильно более жористые чем целочисленные.
Ф>2) Операции с памятью могут сильно напрягать кэш, который сам по себе неплохой обогреватель. Может быть энергетически выгоднее каждый раз рассчитывать какое-либо значение, чем регулярно перезагружать/инвалидировать кэш-линейки для его поиска в памяти.

Хочешь убрать кеш? Боюсь время отклика софта будет таким, что пользователи взвоют.

К тому же всегда стремились уменьшить частоту обновления кеша. А для этого данные желательно укладывать плотно, чтобы минимизировать промахи.
Т.е. опять речь идёт о повышении эффективности и алгоритма, и структур данных.

Ф>3) Все современные процессоры суперскалярные — параллельно исполняют инструкции, исполняют код спекулятивно, и предсказывают переходы. Т.е. кол-во ветвлений может напрямую и нелинейно влиять на жористость. Т.е. сделать что-либо медленнее, по минимому напрягая BTB/BTU, может оказаться энергетически выгоднее чем делать за минимальное время.

Ф>4) Есть также догадки по поводу использования синхронизации: синхронизировать крупные куски или отказаться от синхронизации может быть энергетически более выгодно, нежели синхронизировать маленькие участки, оптимизируя тем самым скорость параллельных вычислений. Тот же вопрос по поводу инструкций типа PAUSE....

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

Сэкономить энергию можно за счет перехода с JS на Си Вот тут да, количество операций процессора на вычисление будет значительно меньше
Но боюсь, программистское сообщество не оценит
_____________________
С уважением,
Stanislav V. Zudin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.