Size: a a a

Compiler Development

2020 November 08

E

EgorBo in Compiler Development
надо видимо почитать про это млир
источник

M

MaxGraey in Compiler Development
Вообще в MLIR для вида регионов
источник

M

MaxGraey in Compiler Development
EgorBo
это какие инструкции? типа select в ллвм?
Типа циклов
источник

PS

Peter Sovietov in Compiler Development
Да, например. В некоторых архитектурах есть аппаратная поддержка циклов и там разбиение до уровня br только помешает.
источник

E

EgorBo in Compiler Development
напомнили мне про loop в x86 :D
источник

PS

Peter Sovietov in Compiler Development
EgorBo
напомнили мне про loop в x86 :D
Бывает и более высокоуровневая поддержка прямо в железе :)
Специальный стек циклов и так далее. (про полиэдральное направление я говорить не буду, на этот счет MLIR как раз сильно рекламируют)
источник

M

MaxGraey in Compiler Development
Peter Sovietov
Да, например. В некоторых архитектурах есть аппаратная поддержка циклов и там разбиение до уровня br только помешает.
Дело не только в этом, как я понял онсновная проблема с той же полигедральной оптимизацией в LLVm была в том, что было довольно непросто анализировать циклы, которые имели разные шейпы, особенно вложенные циклы. А с регионами мы остаемся в более высокоуровневой и канонизированной форме и многие вещи, например 2d / 3d / Nd loop tiling, векторизации и т д упрощаются
источник

PS

Peter Sovietov in Compiler Development
MaxGraey
Дело не только в этом, как я понял онсновная проблема с той же полигедральной оптимизацией в LLVm была в том, что было довольно непросто анализировать циклы, которые имели разные шейпы, особенно вложенные циклы. А с регионами мы остаемся в более высокоуровневой и канонизированной форме и многие вещи, например 2d / 3d / Nd loop tiling, векторизации и т д упрощаются
Я успел подредактировать свое сообщение раньше! :)
источник

VK

Val Krylov in Compiler Development
Peter Sovietov
Не во всех, разумеется. Некоторые компиляторщики на него жалуются :)

«IRs need to be intuitive to the people who work on the compiler. Sea of nodes is more challenging to think about than SSA over CFG.»

«I worked on V8 for awhile, which uses a sea of nodes representation. This point really resonates with me. I and many of my teammates never completely developed an intuition for the different edges in the graph. There was a lot of trial and error involved.»
Подозреваю, что проблема в качестве материалов. По SSA сейчас можно дать ту же SSA Book, а по SoN либо whitepapers (цель не "обучить", а "рассказать об исследовании"), либо говны.
источник

PS

Peter Sovietov in Compiler Development
Val Krylov
Подозреваю, что проблема в качестве материалов. По SSA сейчас можно дать ту же SSA Book, а по SoN либо whitepapers (цель не "обучить", а "рассказать об исследовании"), либо говны.
Кстати, даже в той же SSA Book есть небольшой раздел по графовым IR (SoN — это частный случай).
источник

PS

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

M

MaxGraey in Compiler Development
Кстати почему SoN вот так не рисуют? Было бы намного назляднее чем облако из нод
источник

M

MrSmith in Compiler Development
А это что?
источник

M

MaxGraey in Compiler Development
MrSmith
А это что?
граф результат статического анализа одной приблуды
источник

M

MrSmith in Compiler Development
MaxGraey
граф результат статического анализа одной приблуды
Какой приблуды?
источник

M

MaxGraey in Compiler Development
MrSmith
Какой приблуды?
Уже не помню, я только график сохранил. Это самое интерестное тым было, т к приблуда проприаторная и материал больше маркетинговый был
источник

M

MrSmith in Compiler Development
Мне особенно нравится графовый match по типу cypither, намного более грасивая штука чем clang вариант. Даже идея возникает иногда почему бы просто не взять node4j
источник

VK

Val Krylov in Compiler Development
Peter Sovietov
Проблема, очевидно, еще и в том, что не для всех компиляторщиков понятным-удобным является графовый подход к манипуляциям с IR.
При этом алгоритмы на графах изучаются в университете, а граф зависимостей — важнейшая часть серьезного генератора кода.
Может быть ещё не сам "графовый подход к IR", а "диаграммный подход к графам", по сравнению с символьным.
источник

PS

Peter Sovietov in Compiler Development
Val Krylov
Может быть ещё не сам "графовый подход к IR", а "диаграммный подход к графам", по сравнению с символьным.
А диаграммный vs символьный это о чем речь? Какой-нибудь пример?
источник

VK

Val Krylov in Compiler Development
Peter Sovietov
А диаграммный vs символьный это о чем речь? Какой-нибудь пример?
Первая же ссылка гугла по "sea of nodes": https://darksi.de/d.sea-of-nodes/ Видно, как диаграммы моментально теряют какое-либо подобие читаемости, хотя рассматривается простейшая передача контекста, на символьном уровне наглядно отображаемая как передача World в Clean, например.
источник