Нейронная сеть как оптимизатор быстродействия машинного кода в компиляторе, возможно ли и есть ли примеры?
Я не знаком с нейронными сетями глубоко, поисковики выдают мне не то что я ищу. С ассемблером и написанием компиляторов не знаком так же, поэтому интересуюсь у продвинутых в этой области и в области нейросетей конечно же. Постараюсь описать свой вопрос максимально понятно.
Вот как я это понимаю в классическом смысле:
есть некий код на высокоуровневом компилируемом языке, который посредством компилятора (транслятора) переводят в машинный код с учетом разных оптимизаций для определённых платформ. В самом компиляторе сложные алгоритмы для оптимизации быстродействия работы программы и написаны они людьми. Возможно ли писать такие оптимизации с помощью обученных н.сетей?
То есть у нас есть некий код на компилируемом языке, который оптимизируется по быстродействию с помощью н.сети. Возможно такая н.сеть будет как то оперировать инструкциями процессора для каждой платформы и оптимизировать конкретно их.
Возможна ли вообще такая программа? Наверняка не я один задавался таким вопросом. Возможно мне не хватает знаний, чтобы понять, что такое невозможно (или возможно но не имеет смысла). Прошу помочь с этим вопросом.
Заранее благодарен за ответ всем и каждому в частности.
гугл много чего выдает, исследования есть, как решение задачи оптимизации компилятором, так и улучшение jit, но как я понимаю либо результаты под капотом, либо все еще на грани исследований
читать статьи сложно даже бегло по заголовкам требуют уровень выше среднего
Даже простое предсказание работы приложения по ее коду может привести к заметной оптимизации (компилятор не знает какие именно данные будут, а от них может зависеть выбор методов оптимизаций, но пользуясь огромным объемом реализованных алгоритмов и рабочих данных можно обучить нейронки на соответствующие предсказания.
Нейросети непосредственно для оптимизации кода я бы не стал использовать, тк самое важной свойство любого компилятора - он не должен менять поведение программы.
В принципе, нейросети можно попробовать использовать для предсказания какие участки программы наиболее нагружены, а также для анализа статистических данных после профилирования или бенчмарков.
До замены программиста программой в полной мере ещё далеко, тк нужно анализировать очень много разной информации