Ускорение от алгоритмических достижений против аппаратного обеспечения

14

Я вспоминаю, как видел исследование или статью, где недавно утверждалось, что большая часть ускорения, наблюдаемого в компьютерных программах за последние несколько десятилетий, происходит от более совершенных алгоритмов, а не от более быстрого аппаратного обеспечения. Кто-нибудь знает исследование или статью?

Джон
источник
8
Вероятно, лучше подходит для cs.stackexchange.
Юваль Фильмус
действительно, в последние несколько лет произошел большой сдвиг парадигмы в отношении закона Мурса, тактовых частот и параллелизма, о котором
говорилось

Ответы:

8

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

см. [1] или [2], в которых говорится

В отчете независимой группы советников по науке и технологиям Белого дома, опубликованном в декабре прошлого года, цитируется исследование, показывающее, что прирост производительности при выполнении вычислительных задач, возникающий в результате совершенствования программных алгоритмов, часто намного опережает выгоды, связанные с более быстрыми процессорами.
...
Но в консультативном отчете Белого дома цитировались исследования, в том числе исследование прогресса за 15-летний период выполнения контрольной задачи по планированию производства. За это время скорость выполнения расчетов увеличилась в 43 миллиона раз. Согласно исследованию Мартина Гротшеля, немецкого ученого и математика, из общего числа примерно 1000 человек были связаны с более высокими скоростями процессора. И все же коэффициент в 43 000 был обусловлен повышением эффективности программных алгоритмов.

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

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

фактическая цитата из отчета на странице 71:

Еще более примечательным - и даже менее широко понимаемым - является то, что во многих областях выигрыш в производительности благодаря усовершенствованиям алгоритмов значительно превысил даже существенный прирост производительности из-за увеличения скорости процессора. Алгоритмы, которые мы используем сегодня для распознавания речи, для перевода на естественный язык, для игры в шахматы, для планирования логистики, значительно изменились за последнее десятилетие. Однако количественно оценить улучшение сложно, потому что оно касается как качества, так и времени исполнения.

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

однако есть несколько других новых / недавних фундаментальных / массовых явлений / тенденций / сдвигов в последние годы или то, что Intel Grove называет «точками перегиба», которые происходят в аппаратном и программном проектировании. aka "gamechangers":

  • рост суперкомпьютеров "Exascale" может быть не так легко достигнут, как "Petascale" из-за ограничений аппаратного масштабирования
  • тактовые частоты, основной привод предшествующего прироста скорости, оказались плато (частично из-за ограничений по нагреву / охлаждению)
  • аппаратные средства претерпевают огромный переход к менее ресурсоемким, более энергоэффективным устройствам, например мобильным, центрам обработки данных / виртуализации / облачным системам и т. д.
  • поэтому улучшение параллелизма в программном и аппаратном обеспечении (например, «многоядерный») становится все более критичным для повышения производительности (где теория может многое сказать о том, как распараллеливать алгоритмы)

[1] skeptic.se, прогресс в алгоритмах опережает прогресс в оборудовании

[2] Прогресс программного обеспечения превосходит блог Мурса по закону Нью-Йорк Таймс от Lohr

[3] ДОКЛАД ПРЕЗИДЕНТУ И КОНГРЕССУ, РАЗРАБАТЫВАЮЩИМ ЦИФРОВОЕ БУДУЩЕЕ: ФЕДЕРАЛЬНО ФИНАНСИРОВАННЫЕ ИССЛЕДОВАНИЯ И РАЗВИТИЕ СЕТЕВЫХ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, декабрь 2010 г.

ВЗН
источник
добавление к нему. вероятно, есть несколько хороших (встречных) примеров важных алгоритмов, которые вообще не продвинулись в эффективности реализаций за десятилетия. идеи? Одной из возможных областей могут быть матричные алгоритмы, которые не распараллеливаются, или другие алгоритмы, которые кажутся непараллелизуемыми по своей природе ... также, некоторые алгоритмы претерпели теоретические улучшения в сложности нижней границы, но алгоритмы фактически не реализованы или не осуществимы для типичных входные данные и т.д ... например, умножение матриц?
ВЗН
1
Это отличный ответ - полный деталей, нюансов и грамотного обсуждения!
Джошуа Грохов