Size: a a a

Compiler Development

2020 February 03

EM

Evgenii Moiseenko in Compiler Development
Peter Sovietov
Да, но может даже больше. Кстати, я недавно выяснил, что в последних версиях Z3 даже Datalog встроенный появился! :)
Как мне кажется, они немного ортогональны.
Классический Prolog/Datalog — это решение системы символьных рекурсивных уравнений путём нахождения наименьшей неподвижной точки. SAT/SMT — решение задачи SAT для (нерекурсивной) формулы алгоритмом DPLL + решателей конкретных теорий, типа арифметики.
Вот в Z3 эти две вещи пытаются скрестить, чтобы получить решатель рекурсивных символьных уравнений с поддержкой разных теорий.
источник

PS

Peter Sovietov in Compiler Development
Evgenii Moiseenko
Как мне кажется, они немного ортогональны.
Классический Prolog/Datalog — это решение системы символьных рекурсивных уравнений путём нахождения наименьшей неподвижной точки. SAT/SMT — решение задачи SAT для (нерекурсивной) формулы алгоритмом DPLL + решателей конкретных теорий, типа арифметики.
Вот в Z3 эти две вещи пытаются скрестить, чтобы получить решатель рекурсивных символьных уравнений с поддержкой разных теорий.
Ну... да. А что и чему ортогонально?
источник

EM

Evgenii Moiseenko in Compiler Development
Peter Sovietov
Ну... да. А что и чему ортогонально?
нахождение lfp ортогонально решателям теорий )
источник

EM

Evgenii Moiseenko in Compiler Development
но под датологом обычно понимают вполне конкретный метод нахождения lfp с magic-sets, bottom-up evaluation и вот этим вот всем
источник

PS

Peter Sovietov in Compiler Development
Evgenii Moiseenko
нахождение lfp ортогонально решателям теорий )
Так у них там в Z3 уже давно комбайн из разных полезностей :) Например, куда отнести их модуль оптимизации? Там используется maxSAT, ILP... :)
источник

PS

Peter Sovietov in Compiler Development
Evgenii Moiseenko
но под датологом обычно понимают вполне конкретный метод нахождения lfp с magic-sets, bottom-up evaluation и вот этим вот всем
Вроде бы, классика это как раз использование BDD: https://people.csail.mit.edu/mcarbin/papers/aplas05.pdf
источник

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
Скорее, видимо, как DSL. А за Даталогом могут стоять разные решатели.
Вообще, я думаю, что в какой-то момент в Z3 перейдут на нотацию общего программирования в ограничениях. Вот, кстати, где раздолье для компиляторщиков!
Есть, допустим CP-программа. Ее нужно проанализировать (и преобразовать) на предмет того, какой решатель в конечном итоге выбрать: SAT, MILP, fixed point и так далее. Очень интересная и актуальная задача.
И это ещё и от данных для программы зависит... Думаю, без ML тут не обойтись! 😃
источник

EM

Evgenii Moiseenko in Compiler Development
Peter Sovietov
Вроде бы, классика это как раз использование BDD: https://people.csail.mit.edu/mcarbin/papers/aplas05.pdf
хз, конкретно про bdd в контексте даталога не слышал, но я не эксперт )
источник

PS

Peter Sovietov in Compiler Development
Alexander Tchitchigin
И это ещё и от данных для программы зависит... Думаю, без ML тут не обойтись! 😃
Я думаю, там и без ML есть чем заняться. Например, многие привычные ограничения в духе AllDifferent (Distinct) достаточно сложно выражаются на языке уравнений ILP.
Сейчас, как мне представляется, у SMT-решателей уровень, соответствующий оптимизирующим компиляторам 70-х. То есть шаг влево-вправо — и все перестает работать за разумное время. Единственное, что в старых компиляторах было похуже — там вообще при включении "мощной оптимизации", если помните, не гарантировалась работоспособность программы пользователя :)
источник

C

Constantine in Compiler Development
интересно🧐
источник

AT

Alexander Tchitchigin in Compiler Development
Неприлично длинное и безумно захватывающее для олдфагов интервью с Jonathan Blow: https://oxide.computer/blog/on-the-metal-9-jonathan-blow/
источник

PS

Peter Sovietov in Compiler Development
Эх, процессор Cell... Вот это был настоящий вызов для компиляторщиков!
источник

AK

Andrei Kurosh in Compiler Development
Peter Sovietov
Эх, процессор Cell... Вот это был настоящий вызов для компиляторщиков!
Это не тот, который ставили в Playstation 3?
источник

BD

Berkus Decker in Compiler Development
Andrei Kurosh
Это не тот, который ставили в Playstation 3?
это он
источник

PS

Peter Sovietov in Compiler Development
Вот неплохое описание процесса разработки (именно 3 часть): http://www.blachford.info/computer/articles/CellProgramming3.html
источник

PS

Peter Sovietov in Compiler Development
Было множество исследовательских проектов на тему того, как всю эту возню с SPE автоматизировать.
источник

E

EgorBo in Compiler Development
If you’ve developed SSE and / or Altivec code in C and understand multithreading you’ll probably recognise almost everything here and be wondering what all the fuss is about.
источник

E

EgorBo in Compiler Development
правда выше написано что если ты перловод или питоновод - то ни хрена не поймешь
источник

BD

Berkus Decker in Compiler Development
Peter Sovietov
Вот неплохое описание процесса разработки (именно 3 часть): http://www.blachford.info/computer/articles/CellProgramming3.html
https://www.youtube.com/watch?v=ev28UgfoRR4 вот это интересней )
источник

BD

Berkus Decker in Compiler Development
есть еще пдф пейпер но за пейволом
источник