Jump to content

Супероптимизация

(Перенаправлено с Супероптимизатора )

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

Термин «супероптимизация» был впервые введен Алексией Массалин в статье 1987 года «Супероптимизатор: взгляд на самую маленькую программу» . [ 1 ] Ярлык «оптимизация программы» был присвоен области, которая не стремится к оптимизации, а только к улучшению. Это неправильное название вынудило Массалин назвать свою систему супероптимизатором, который на самом деле является оптимизатором для поиска оптимальной программы. [ 2 ]

В 1992 году был разработан GNU Superoptimizer (GSO) для интеграции в коллекцию компиляторов GNU (GCC). [ 3 ] [ 4 ] Более поздние работы развили и расширили эти идеи.

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

В 2001 году целенаправленная супероптимизация была продемонстрирована в проекте Denali исследовательской компанией Compaq. [ 6 ] В 2006 году набора ответов декларативное программирование использовалось для супероптимизации в проекте «Полная оптимизация с использованием технологии набора ответов» (TOAST) в Университете Бата . [ 7 ] [ 8 ]

Супероптимизацию можно использовать для автоматического создания оптимизаторов-глазков общего назначения . [ 9 ]

Общедоступные супероптимизаторы

[ редактировать ]

Несколько супероптимизаторов доступны для бесплатного скачивания.

См. также

[ редактировать ]
  1. ^ Массалин, Генри (1987). «Супероптимизатор: взгляд на самую маленькую программу» (PDF) . Новости компьютерной архитектуры ACM SIGARCH . 15 (5): 122–126. дои : 10.1145/36177.36194 . Проверено 1 мая 2023 г. Учитывая набор команд, супероптимизатор находит кратчайшую программу для вычисления функции. Были созданы поразительные программы, многие из которых занимаются запутанной битовой манипуляцией, мало похожей на исходные программы, определяющие функции. Ключевая идея супероптимизатора — вероятностный тест, который делает практичным исчерпывающий поиск программ полезного размера.
  2. ^ Джоши, Раджив; Нельсон, Грег; Рэндалл, Кейт (2002). «Денали: целенаправленный супероптимизатор» . Уведомления ACM SIGPLAN . 37 (5): 304–314. дои : 10.1145/543552.512566 .
  3. ^ Перейти обратно: а б Гранлунд, Торбьёрн; Кеннер, Ричард (июль 1992 г.). «Устранение ветвей с помощью супероптимизатора и компилятора GNU C». Уведомления ACM SIGPLAN . 27 (7): 341–352. CiteSeerX   10.1.1.58.3509 . дои : 10.1145/143095.143146 . ISBN  978-0-89791475-8 . S2CID   8825539 .
  4. ^ Перейти обратно: а б «Индекс /gnu/superopt» . Операционная система GNU . Фонд свободного программного обеспечения, Inc., 14 июня 1995 г .. Проверено 1 мая 2023 г.
  5. ^ Перейти обратно: а б Джангда, Абхинав; Йорш, Грета (25 октября 2017 г.). Неограниченная супероптимизация . Вперед!»'17, 25–27 октября 2017, Ванкувер, Канада. стр. 78–88. дои : 10.1145/3133850.3133856 .
  6. ^ Джоши, Раджив; Нельсон, Грег; Рэндалл, Кейт (30 июля 2001 г.). «Денали: целенаправленный супероптимизатор» . Исследовательский центр систем Compaq. Лаборатории HP . Hewlett-Packard Co. Проверено 1 мая 2023 г.
  7. ^ Брэйн, Мартин; Крик, Том; Де Вос, Марина; Фитч, Джон (17 августа 2006 г.). «TOAST: применение программирования набора ответов для супероптимизации». В Эталье, Сандро; Трушинский, Мирослав (ред.). Логическое программирование . Шпрингер-Верлаг , Берлин/Гейдельберг. стр. 270–284. ISBN  978-3-540-36636-2 .
  8. ^ «ТОСТ – KRRwiki» . Департамент компьютерных наук, группа математических фондов. Группа «Представление знаний и рассуждение» (KRR) . Университет Бата . 07.08.2007. Архивировано из оригинала 28 ноября 2012 г. Проверено 03 сентября 2016 г.
  9. ^ Бансал, Сорав; Эйкен, Алекс (2006). «Автоматическое создание супероптимизаторов-глазков» (PDF) . Проверено 1 мая 2023 г.
  10. ^ «Супероптимизатор GNU» .
  11. ^ СтэнфордPL. «СТОК» . Гитхаб .
  12. ^ Бансал, Сорав; Эйкен, Алекс (2008). «Двоичный перевод с использованием супероптимизаторов-глазков» (PDF) . Проверено 1 мая 2023 г.
  13. ^ Серпелл, Дэниел (2003). «Супероптимизатор для PIC-микроконтроллеров Microchip» . Сайты Google . Архивировано из оригинала 11 октября 2016 г. Проверено 6 сентября 2016 г.
  14. ^ Серпелл, Дэниел (21 июня 2003 г.). «Супероптимизатор микроконтроллера PIC» . Бесплатный код . Слэшдот Медиа. Архивировано из оригинала 17 сентября 2016 г. Проверено 6 сентября 2016 г.
  15. ^ «Технико-экономическое обоснование Embecosm» .
  16. ^ Embecosm Супероптимизация - Исходный код
  17. ^ Хьюм, Том (21 августа 2012 г.). «Программа Clojure для исчерпывающего поиска оптимальных Java-программ» . Гитхаб . Архивировано из оригинала 10 июня 2018 г. Проверено 6 сентября 2016 г.
  18. ^ Саснаускас, Раймондас; Чен, Ян; Коллингборн, Питер; Кетема, Йерун; Луп, Грациан; Танеха, Джуби; Регер, Джон (2017). «Супер: синтезирующий супероптимизатор». arXiv : 1711.04422 . Исходный код GitHub
  19. ^ Кабрера Артеага, Хавьер; Донде, Шриниш; Гу, Цзянь; Флорос, Орестис; Сатабин, Лукас; Бодри, Бенуа; Монперрус, Мартин (23 марта 2020 г.). Супероптимизация байт-кода WebAssembly . MoreVMs: семинар по современным языковым средам выполнения, экосистемам и виртуальным машинам. стр. 36–40. arXiv : 2002.10213 . дои : 10.1145/3397537.3397567 . Исходный код GitHub
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: dda2e65b7505ff46b8c687cbadb18cf7__1707241920
URL1:https://arc.ask3.ru/arc/aa/dd/f7/dda2e65b7505ff46b8c687cbadb18cf7.html
Заголовок, (Title) документа по адресу, URL1:
Superoptimization - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)