Size: a a a

Compiler Development

2020 February 03

E

EgorBo in Compiler Development
>  абстрагирован от языкового фронтенда

помню кто-то у нас на хакатоне шапр прикручивал к нему или что там под капотом у грааля
источник

МБ

Михаил Бахтерев in Compiler Development
MaxGraey
Есть еще GRIN который умеет работать почти со всеми lazy eval языками, есть GraalVM который еще более абстрагирован от языкового фронтенда)
Ну там же не только lazy eval. Там используется параметричность, свойства рекурсивных схем и всякое такое разное именно из семантики Haskell.
источник

KR

K R in Compiler Development
MaxGraey
Есть еще GRIN который умеет работать почти со всеми lazy eval языками, есть GraalVM который еще более абстрагирован от языкового фронтенда)
Ну это компромисс - вы что-то теряете, что-то находите при переходе к универсальному промежуточному представлению.
источник

МБ

Михаил Бахтерев in Compiler Development
И? У кода для GPU другая совсем семантика. Синтаксис может быть любым, хоть Лисповым. Тот же Halide весьма похож на JS.

Или вот есть PetaLisp, выглядит, как Lisp, но семантика у него, как в Connection Machine. А работает он, как ленивый APL. Но из-за этого всего возникают всякие семантические тонкости и ограничения, которые нельзя выразить на языке с другой семантикой.

Semantics first!

P.S. За ссылочку отдельное спасибо, тем не менее.
источник

KR

K R in Compiler Development
Тут уже много раз появлялась статья

http://www.complang.tuwien.ac.at/kps2015/proceedings/KPS_2015_submission_29.pdf

?
источник

M

MaxGraey in Compiler Development
Еще тот же barvinok и прочие фреймворки со статической кодогенерацией:
https://hal.inria.fr/tel-01251719/document
источник

KR

K R in Compiler Development
Михаил Бахтерев
И? У кода для GPU другая совсем семантика. Синтаксис может быть любым, хоть Лисповым. Тот же Halide весьма похож на JS.

Или вот есть PetaLisp, выглядит, как Lisp, но семантика у него, как в Connection Machine. А работает он, как ленивый APL. Но из-за этого всего возникают всякие семантические тонкости и ограничения, которые нельзя выразить на языке с другой семантикой.

Semantics first!

P.S. За ссылочку отдельное спасибо, тем не менее.
Спасибо за Petalisp.
источник

МБ

Михаил Бахтерев in Compiler Development
MaxGraey
Еще тот же barvinok и прочие фреймворки со статической кодогенерацией:
https://hal.inria.fr/tel-01251719/document
Это не фреймворки. Это именно другая семантика языка. SCoP - это не Си, а подмножество с другой семанитикой for-ов
источник

PS

Peter Sovietov in Compiler Development
MaxGraey
Еще тот же barvinok и прочие фреймворки со статической кодогенерацией:
https://hal.inria.fr/tel-01251719/document
На французском! :) Кстати, это полиэдральная библиотека, которая названа в честь математика Александра Барвинка: https://en.wikipedia.org/wiki/Alexander_Barvinok

А еще есть Reservoir R-Stream: https://www.reservoir.com/product/r-stream/
источник

PS

Peter Sovietov in Compiler Development
K R
Тут уже много раз появлялась статья

http://www.complang.tuwien.ac.at/kps2015/proceedings/KPS_2015_submission_29.pdf

?
Кажется, раз или два в чате эта статья Эртла появлялась. Но почему и не повторить? :)
источник

M

MaxGraey in Compiler Development
Peter Sovietov
На французском! :) Кстати, это полиэдральная библиотека, которая названа в честь математика Александра Барвинка: https://en.wikipedia.org/wiki/Alexander_Barvinok

А еще есть Reservoir R-Stream: https://www.reservoir.com/product/r-stream/
Там на французком только вступление (1я глава))
источник

PS

Peter Sovietov in Compiler Development
Вообще, мода на полиэдральные представления показывает, что компиляторщику некогда предаваться чувству самоуспокоенности. Никакой опыт работы с деревьями/графами не поможет разобраться в тонкостях представления зависимостей для гнезд циклов в виде многогранников.
источник

KR

K R in Compiler Development
MaxGraey
Там на французком только вступление (1я глава))
Автореферат
источник

KR

K R in Compiler Development
Peter Sovietov
Вообще, мода на полиэдральные представления показывает, что компиляторщику некогда предаваться чувству самоуспокоенности. Никакой опыт работы с деревьями/графами не поможет разобраться в тонкостях представления зависимостей для гнезд циклов в виде многогранников.
Вопрос - насколько оно стабильно? Вот прикладник напишет программу, вроде оптимизированную, потом изменит что-то, а производительность резко просядет. И что делать? Отлаживать алгоритм оптимизатора на компиляторе, как правило, без исходных кодов?

Сложно описать чувство беспомощности пользователя, попавшего в такую ситуацию.
источник

PS

Peter Sovietov in Compiler Development
K R
Вопрос - насколько оно стабильно? Вот прикладник напишет программу, вроде оптимизированную, потом изменит что-то, а производительность резко просядет. И что делать? Отлаживать алгоритм оптимизатора на компиляторе, как правило, без исходных кодов?

Сложно описать чувство беспомощности пользователя, попавшего в такую ситуацию.
Да, так и получается :) Стабильнее с pragmas. Или с DSL. Но многие заказчики боятся DSL, вот в чем проблема. Хотят обычно C/C++/ OpenCL.
источник

KR

K R in Compiler Development
Peter Sovietov
Да, так и получается :) Стабильнее с pragmas. Или с DSL. Но многие заказчики боятся DSL, вот в чем проблема. Хотят обычно C/C++/ OpenCL.
DSL обычно без поддержки среды разработки. То же раскрашивание в vim
источник

FO

FORTRAN ONE LOVE in Compiler Development
K R
Вопрос - насколько оно стабильно? Вот прикладник напишет программу, вроде оптимизированную, потом изменит что-то, а производительность резко просядет. И что делать? Отлаживать алгоритм оптимизатора на компиляторе, как правило, без исходных кодов?

Сложно описать чувство беспомощности пользователя, попавшего в такую ситуацию.
ага... у меня включение -march=native на Gfortran 9.2.0 в два раза замедляет программу.
источник
2020 February 04

МБ

Михаил Бахтерев in Compiler Development
Peter Sovietov
Да, так и получается :) Стабильнее с pragmas. Или с DSL. Но многие заказчики боятся DSL, вот в чем проблема. Хотят обычно C/C++/ OpenCL.
Главное, заказчику не говорить, что делаешь DSL :) И иметь заначку из уже написанных Си-style конструкций
источник

KR

K R in Compiler Development
А сколько есть условно "разных семейств синтаксисов"? Так, если достаточно крупными мазками - Pascal/C/C++/Java/JS запихиваем в одно семейство, Хаскелл-Питон в другое, ещё ML-подобные (включая всякие F#, Why3ML и прочие дервативы. А ещё?
источник

KR

K R in Compiler Development
Вот, скажем, ReasonML - это просто C-подобный (или Алголо-подобный) синтаксис для Ocaml. Сделан специально, поскольку некоторые JavaScript программисты не могут привыкнуть к синтаксису Ocaml (почему-то другая семантика их не пугает).
источник