
Михаил Литвинов
Компания: Яндекс
Расскажу и покажу, как, используя ML-подходы в современных компиляторах, можно оптимизировать продукт. Рассмотрим оптимизации и оптимизации оптимизаций внутри LLVM, методы решений и существующие фреймворки для этих задач. Также разберем, какую выгоду можно получить на конкретном проекте на С++, например, LLVM-project.
Для начала обсудим теорию: что оптимизируем, как и почему. Какие бывают трансформации кода в LLVM. Почему необходимо прибегать к помощи ML для подбора оптимальных гиперпараметров в трансформациях. Расскажу про Phase-Ordering problem, Inlinig и Register Allocation, Auto-vectorization.
Затем погрузимся в прикладную часть и взглянем на команды и их продукты, которые решают поставленные задачи. Обратим внимание на MLGO от Google, CompilerGym от Facebook Research и ML-LLVM-project от IITH.
Сравним все три фреймворка, посмотрим на codesize и performance, которые удастся получить на LLVM-project. Будем сравнивать по нескольким критериям — по результатам оптимизаций и по простоте использования.
Построим композиции фреймворков и конвейеры, которые можно встроить в пайплайн вашей разработки.
Компания: Яндекс