Re[2]: Энергоэффективность алгоритмов
От: Философ Ад http://vk.com/id10256428
Дата: 18.02.25 15:19
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

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

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

Я думаю, что всё может быть несколько сложнее:
1) Разные операции требуют разного кол-ва энергии. Например, думаю очевидно, что операции с плавающей точкой сильно более жористые чем целочисленные.
2) Операции с памятью могут сильно напрягать кэш, который сам по себе неплохой обогреватель. Может быть энергетически выгоднее каждый раз рассчитывать какое-либо значение, чем регулярно перезагружать/инвалидировать кэш-линейки для его поиска в памяти.
3) Все современные процессоры суперскалярные — параллельно исполняют инструкции, исполняют код спекулятивно, и предсказывают переходы. Т.е. кол-во ветвлений может напрямую и нелинейно влиять на жористость. Т.е. сделать что-либо медленнее, по минимому напрягая BTB/BTU, может оказаться энергетически выгоднее чем делать за минимальное время.
4) Есть также догадки по поводу использования синхронизации: синхронизировать крупные куски или отказаться от синхронизации может быть энергетически более выгодно, нежели синхронизировать маленькие участки, оптимизируя тем самым скорость параллельных вычислений. Тот же вопрос по поводу инструкций типа PAUSE....
Всё сказанное выше — личное мнение, если не указано обратное.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.