RL & COMPILERS

COMPILER GYM & ETC

Литвинов

Михаил

CompilerGym

Environment

Задача оптимизации и модель компилятора

1.

Action Space

Текущее состояние среды, пространство действий

2.

Reward

Метрика оптимизации

4.

Observation

Текущее представление окружения

3.

LLVM ENV

Самое развитое окружение. И вообще мы фанаты LLVM :)

Action space

Дискретно. Состоит из 123 трансформаций

(llvm opt --passes)

Observation Spaces

LLVM-IR
InstCount
Autophase
Inst2vec
ProGraML
etc.

Reward Spaces

R(st)=C(st1)C(st)R(s_t) = C(s_{t-1}) - C(s_t)
R(s_t) = C(s_{t-1}) - C(s_t)
R(st)=C(st1)C(st)C(st=0)R(s_t) = \frac{C(s_{t-1}) - C(s_t)}{C(s_{t=0})}
R(s_t) = \frac{C(s_{t-1}) - C(s_t)}{C(s_{t=0})}
R(st)=C(st1)C(st)C(st=0)C(sb)R(s_t) = \frac{C(s_{t-1}) - C(s_t)}{C(s_{t=0}) - C(s_b)}
R(s_t) = \frac{C(s_{t-1}) - C(s_t)}{C(s_{t=0}) - C(s_b)}

IR Instruction Count

Количество LLVM-IR инструкций в программе

Codesize

Размер .TEXT секции

4. Greedy search

1.055× 

Facebook

Результаты

на llvm-ic-v0 env

и cbench-v1 bench

3. Random search (t=3600)

1.061× 

Facebook

2. Random search (t=10800)

1.062× 

Facebook

1. PPO + Guided Search

1.070×

Robin Schmöcker, Yannik Mahlau, Nicolas Fröhlich

Альтернативы! (из Индии) - POSET-RL

IITH

CODE

env.reset(benchmark="benchmark://npb-v0/50")
episode_reward = 0
for i in range(1, 101):
	observation, reward, done, info = env.step(env.action_space.sample())
	if done:
		break
	episode_reward += reward
	print(f"Step {i}, quality={episode_reward:.2%}")

Спасибо!

Ваши вопросы и пожелания!

Обзор CompilerGym & etc

By Michael Litvinov

Обзор CompilerGym & etc

  • 45