Що нового в техніці оптимізації компілятора за останні кілька років?


14

Мене цікавить оптимізація графіків потоку даних та керуючих потоків, зокрема, більш обчислювально складних. Але також буде цікаво дізнатися про новітні винаходи в області оптимізацій маточок.


2
У своїй дипломній роботі ( слайдах ) я обговорював та впроваджував вирівнювання графіків викликів у LLVM; в основному це міжпроцедурна трансформація, яка позбавляється від поняття "функція", тому що вона об'єднує весь код разом, що дозволяє купу цікавих можливостей, таких як міжпроцедурний рух коду, оптимізовані виклики, оптимізовані умовні виклики, безстатеве виконання тощо.
CAFxX

@CAFxX: слайди розбилися Open Office .. Чи трапляється натомість фотографії в Інтернеті?
Yttrill


Дякую, я міг переглядати це, хоча графіки повинні були добре бачити текст, це було добре.
Іттріл

Відповіді:


8

Я не впевнений, наскільки це роман, або якщо він занадто великий на застосованій стороні для вашого інтересу, але Hoopl показує, як можна оптимізувати оптимізацію потоку управління / передачі даних, при цьому поширення фактів про вершини контрольних графіків не залежить від мова та специфічна оптимізація.

Вони посилаються на алгоритм Лернера, Гроув та Чамберс 2002 року, який складає прості оптимізації в "суперпептимізацію".


8

Я припускаю, що метод насичення рівності , оскільки інший підхід до проблеми оптимізації проходить впорядкування, був би актуальним. Наскільки мені відомо, це все ще не виявилося практичним конкретною реалізацією в повноцінному компіляторі. Наступні Оптимізація компілятора з доказів може також зацікавити.


6

Відбулось трохи пожвавлення у перевірених оптимізаторах компіляторів. Окрім статті Лернера (згаданої у попередньому коментарі), ви можете подивитися на проект CompCert під керівництвом Ксав'єра Леруа. Вони зробили кілька цікавих матеріалів із зазначенням оптимізацій як доказів, які можна перевірити машиною (використовуючи Coq ). Я ще не читав документи, але проект Verified Software Toolchain в Прінстоні також здається, що він дає цікаві результати в цій галузі.


1
Ми також працюємо над проектом, схожим на CompCert: CerCo ( cerco.cs.unibo.it ). На відміну від CompCert, ми прагнемо створити перевірений компілятор збереження конкретних витрат для великої підмножини C (CompCert лише показує, що розширення властивостей вихідної програми зберігається компіляцією). Ми також впроваджуємо в компілятор кілька помірно складних оптимізацій циклу, а також "м'які" оптимізації, як, наприклад, CompCert, які, звичайно, потребують перевірки як економії витрат.
Домінік Малліган

5

Визнаючи, що baz [i] + = сила (foo [i], foo [j]) у подвійному циклі FOR має незалежні результати для (i, j) та переупорядкування викликів у кривій заповнення простору на (i, j) для скоротити кеш-пропуски.

Не зовсім "вигляд", але отримувати кеш-поведінку для "безкоштовно", це приємно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.