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

Многие инструменты в сфере разработки программного обеспечения — будь то компиляторы, оптимизаторы или синтезаторы — решают схожую фундаментальную задачу. Им необходимо преобразовывать сложные и объемные исходные программы в упрощенные эквиваленты. Основное требование к таким упрощенным версиям — сохранение исходной функциональности при одновременном повышении скорости работы и расширении совместимости с различными аппаратными платформами.
Сложность заключается в том, что эффективная оптимизация сильно зависит от конкретной области применения. То, что работает для сжатия трехмерных CAD-моделей, может не подойти для ускорения SQL-запросов, и на сегодняшний день не существует единого решения, подходящего для всех случаев.
Американский ученый Павел Панчеха предложил инструментарий с открытым исходным кодом egg. Этот набор инструментов представляет собой универсальный метод для решения задач оптимизации.
По словам Панчехи, традиционная разработка компиляторов и оптимизаторов всегда требовала глубокой проработки деталей и тонкой настройки. Новый подход, напротив, позволяет разработчикам начать работу с минимальным объемом кода и обещает высокую производительность.
В основе egg лежат структуры данных, известные как графы равенства (e-графы). Они позволяют системе сопоставлять различные варианты построения программы, которые ведут к одному и тому же результату. Когда инструментарий находит критическую массу возможных конфигураций (процесс, называемый «насыщением равенством»), система определяет наиболее эффективный вариант.
Хотя теоретические основы e-графов разрабатывались с 2009 года, именно реализация egg сделала этот подход практически применимым. Инструментарий уже нашел использование в промышленности: например, инженеры Intel применяют его для улучшения проектирования чипов. Сам Панчеха использовал egg в своем проекте для численных вычислений Herbie, что позволило ускорить его работу в 3000 раз и повысить качество результатов.
Панчеха отмечает гибкость системы, которая позволяет разработчикам экспериментировать и тестировать новые подходы. При этом он признает, что у egg есть ограничения — например, в некоторых проектах по компьютерной графике инструмент потребляет слишком много памяти. Однако даже в таких случаях его можно использовать как библиотеку для первоначального анализа и поиска рабочих решений, прежде чем переходить к более традиционным методам.
Читайте также: В США ускоряют принятие закона об «отключении ИИ» после серии хакерских атак.
