1 of 20

Обучение с подкреплением для управления процессом компиляции исходного кода

Студент: Чучин Дмитрий Юрьевич

Научный руководитель: Свидченко Олег Анатольевич

Научные консультанты: Косов Павел Владимирович, Хомутов Никита Юрьевич

Университет ИТМО

Санкт-Петербург, 2024

2 of 20

Определения эффективной последовательности оптимизаций компилятора

Оптимизации позволяют улучшить такие характеристики программы, как время исполнения или размер исполняемого файла

Сложности:

  • Порядок применения оптимизаций влияет на результат
  • Разным программам могут соответствовать разные оптимальные последовательности
  • Число возможных решений растет экспоненциально при увеличении длины последовательности

В рамках работы рассматривалась задача оптимизации времени исполнения. Задача решалась для архитектуры x86-64 и инфраструктуры LLVM 10.0.0

Пример оптимизации instcombine для промежуточного представления LLVM

2 / 13

3 of 20

Существующие подходы

1. Kulkarni, Sameer and John Cavazos. (2012)

2. Mammadli, Rahim et al. (2020)

3 / 13

Подход

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

Позволяет учесть специфику конкретной программы

Позволяет превзойти O3 на всех тестовых программах

Время компиляции

Дополнительный комментарий

Готовые последовательности оптимизаций (O2, O3)

Да

Нет

Нет

Небольшое

-

Итеративная компиляция

Нет (требует десятки запусков 1)

Да

Да

Очень большое

Показывает результаты лучше остальных подходов

Обучение с учителем

(без запуска программы)

Да

Да

-

Среднее

Работ, использующих данный подход, найти не удалось

Обучение с подкреплением (без запуска программы)

Да

Да

Нет (для существующих моделей 2)

Среднее

Не требует размеченных датасетов, в отличии от обучения с учителем

4 of 20

Определение порядка оптимизаций как задача обучения с подкреплением

  •  

представление IR, история действий, награда

LLVM IR

opt

Агент

применение

оптимизаций

4 / 13

2. Mammadli, Rahim et al. (2020)

5 of 20

Цель и задачи

Цель:

Разработать модель поиска эффективной последовательности оптимизаций компилятора в инфраструктуре LLVM для оптимизации времени исполнения, используя обучение с подкреплением

Задачи:

  • Разработать и реализовать архитектуру модели
  • Обучить и протестировать различные конфигурации модели
  • Выбрать лучшую модель на основе экспериментальных данных

5 / 13

6 of 20

Архитектура модели. Векторное представление и награда

  •  

6 / 13

7 of 20

Архитектура модели. Пространство действий и алгоритм обучения с подкреплением

  • Пространство действий
    • POSET-manual 3: подпоследовательности -O3, сгруппированные по своей функциональности
    • POSET-odg 3: последовательности построенные по графу зависимостей оптимизаций в последовательности -O3
    • Cbench-inst-min: последовательности минимизирующие количество исполненных инструкций на наборе программ Cbench
    • MiCOMP: последовательности из работы MiCOMP 4
  • Алгоритм обучения с подкреплением
    • Алгоритм: DQN (использовался в предыдущих работах 2, 3)
    • Наблюдение: история действий и история векторных представлений IR
    • Нейросеть: LSTM с полносвязными слоями для преобразований входов и выходов

7 / 13

2. Mammadli, Rahim et al. (2020)

3. Jain, Shalini et al. (2022)

4. Ashouri, Amir H. et al. (2017)

8 of 20

Обучение моделей. Датасет

Датасеты

  • Jotai Benchmark Collection
    • Исполняемые программы на языке C из одного исходного файла
    • Составлен на основе программ из открытых репозиториев
    • Каждая программа состоит из функции с логикой и функции запуска
    • Входные данные каждой программы фиксированы
  • llvm-test-suite
    • Набор исполняемых программ (преимущественно на C и C++)
    • Используется для тестирования компиляторов
    • Включает 128 программ из одного исходного файла, подобранных для тестирования времени исполнения

Данные для обучения и тестирования

  • Обучение: Jotai Benchmark Collection (4000 программ)
  • Тест: Jotai Benchmark Collection (2000 программ) и llvm-test-suite (128 программ)

8 / 13

9 of 20

Обучение моделей. Сравнение наград

9 / 13

Модель

Jotai тестовый датасет

llvm-test-suite

Время исполнения

-0.014±0.002

0.456±0.013

-41.2±21.0

Количество исполненных инструкций

-0.014±0.002

0.452±0.013

-0.33±0.11

Block RThroughput

-0.124±0.004

0.463±0.013

-85.3±47.4

Параметры моделей:

  • Представление: конкатенация IR2Vec, Autophase и Instcount
  • Пространство действий: Cbench-inst-min

 

10 of 20

Обучение моделей. Сравнение пространств действий

Параметры моделей:

  • Представление: конкатенация IR2Vec, Autophase и Instcount
  • Функция стоимости в награде: количество исполненных инструкций

Модель

Jotai тестовый датасет

llvm-test-suite

POSET-manual

-0.033±0.002

0.449±0.012

-27.6±16.8

POSET-odg

-0.011±0.002

0.449±0.012

-26.1±16.8

Cbench-inst-min

-0.014±0.002

0.452±0.013

-0.33±0.11

MiCOMP

-0.015±0.003

0.459±0.014

-0.138±0.016

10 / 13

 

11 of 20

Выбор лучшей модели

Пространство действий

Векторное представление

Функция стоимости в награде

Доля ускоренных программ относительно O3

Cbench-inst-min

конкатенация IR2Vec, Autophase и Instcount

количество исполненных инструкций

-0.33±0.11

0.652

0.242

MiCOMP

конкатенация IR2Vec, Autophase и Instcount

количество исполненных инструкций

-0.138±0.016

0.465

0.258

 

11 / 13

 

Количество программ

12 of 20

Выбор лучшей модели. Применение для итеративной компиляции

4. Ashouri, Amir H. et al. (2017)

5. Sameer Kulkarni and John Cavazos. (2012)

12 / 13

Модель

Среднее гармоническое ускорения

Cbench

Jotai тестовый датасет

llvm-test-suite

Моя модель с пространством действий Cbench-inst-min

1.017

1.034

1.018

Моя модель с пространством действий MiCOMP

1.011

1.035

1.019

Результаты из статьи MiCOMP 4 (модель MiCOMP)

1.038

-

-

Результаты из статьи MiCOMP 4 (модель NEAT 5)

1.016

-

-

  • Обученная модель может быть применена в рамках итеративной компиляции, например можно запускать две скомпилированные программы: с оптимизациями модели и с оптимизациями O3

  • Сравнение с другими моделями примененными в данном сценарии (в статье MiCOMP результаты моделей были получены путем leave-one-out кросс валидации на Cbench):

13 of 20

Результаты

  •  

13 / 13

14 of 20

Дополнительные слайды

Репозиторий: https://github.com/capitanFlint129/diplom_experiments

14 / 13

15 of 20

Архитектура модели. Агент

Был реализован DQN с LSTM для учета истории применения действий. Среди алгоритмов обучения с подкреплением в первую очередь был применен DQN поскольку, данный алгоритм использовался в предыдущей аналогичной работе, а сравнение эффективности различных алгоритмов не было первоочередной задачей работы

Преимущества алгоритма для данной задачи:

  • Обучение за небольшое количество взаимодействий со средой
  • Итоговая политика детерминированная

at - примененная оптимизация

ot - наблюдение (например IR2Vec)

ht - скрытое состояние LSTM

one-hot at-1

ot

LSTM

ht-1

at

Полносвязная сеть

ht

+

+

- конкатенация

ht+1

one-hot at

ot+1

LSTM

+

Полносвязная сеть

Полносвязная сеть

Полносвязная сеть

at+1

15 / 13

16 of 20

Обучение моделей. Сравнение представлений

Параметры моделей:

  • Пространство действий: POSET-manual
  • Функция стоимости в награде: количество исполненных инструкций

Модель

Jotai тестовый датасет

llvm-test-suite

IR2Vec

-0.035±0.002

0.420±0.013

-97.0±48.9

Autophase

-0.076±0.003

0.451±0.013

-101.4±50.5

IR2Vec + Autophase + Instcount

-0.033±0.002

0.449±0.012

-27.6±16.8

 

16 / 13

17 of 20

Обучение моделей. DQN Loss

Номер эпизода

Loss

17 / 13

18 of 20

Выбор лучшей модели. Применение для итеративной компиляции

2. Ashouri, Amir H. et al. (2017)

4. Sameer Kulkarni and John Cavazos. (2012)

Модель

Среднее гармоническое Среднее гармоническое ускорения

на Cbench

Моя модель с пространством действий Cbench-inst-min

1.017

Моя модель с пространством действий MiCOMP

1.011

Результаты из статьи MiCOMP 2 (модель MiCOMP)

1.038

Результаты из статьи MiCOMP 2 (модель NEAT 4)

1.016

Модель

Jotai тестовый датасет

llvm-test-suite

Среднее гармоническое ускорения

Среднее гармоническое ускорения

Cbench-inst-min

0.038±0.001

1.034

0.022±0.004

1.018

MiCOMP

0.039±0.001

1.035

0.022±0.004

1.019

18 / 13

19 of 20

Пространство действий Cbench-inst-min

Пример выбора ключевой оптимизации на программе stringsearch2

Индекс оптимизации в последовательности O3

Нормированное количество исполненных инструкций

19 / 13

20 of 20

Обучение моделей

Модель

Jotai тестовый датасет

llvm-test-suite

POSET-odg

-0.011±0.002

0.449±0.012

-26.1±16.8

Cbench-inst-min

-0.014±0.002

0.452±0.013

-0.33±0.11

MiCOMP

-0.015±0.003

0.459±0.014

-0.138±0.016

 

Модель

Jotai тестовый датасет

llvm-test-suite

Время исполнения

-0.014±0.002

0.456±0.013

-41.2±21.0

Количество исполненных инструкций

-0.014±0.002

0.452±0.013

-0.33±0.11

Сравнение наград основанных на разных функциях стоимости:

Сравнение пространств действий (функция стоимости - количество исполненных инструкций):

20 / 13