Size: a a a

2020 March 13

A

Alex in graalvm_ru
да, для tierd как раз и разрабатывают graal eco
чтобы он выступал вместо c1
а грааль сам будет вместо c2
источник

OS

Oleg Shelajev in graalvm_ru
я не эксперт, но я так понимаю что если это сделать - то будет интерпретатор -> вместо С2: GraalVM compiler (eco -> full)
источник

OS

Oleg Shelajev in graalvm_ru
и ничего вместо c1
источник

OS

Oleg Shelajev in graalvm_ru
как бы это то же самое что ты говоришь мне кажется
источник

OS

Oleg Shelajev in graalvm_ru
но архитектура другая
источник

A

Alex in graalvm_ru
то есть было 2 проблемы, которые решались параллельно:

1) нам нужен c1 чтобы собрать в рантайме сам graal иначе он слишком медленный, решаем проблему старта с помощью libgraal и aot
2) нам нужен graaleco так как interpetator + graal не всегда пользователям удобно, нужно промежуточная компиляция с задачей “максимально быстро сгенерировать код по байткоду, не сильно заботясь о пиковой производительности”
источник

A

Alex in graalvm_ru
грааль сам по себе достаточно жадный и требует много статистики и вычислительной можности для работы
поэтому имеется ситуация “сразу тормоза, а потом резко быстро”

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

раньше тоже было или c1 (он же client) или c2 (он же server), выбирай какой хочешь на старте
источник

A

Alex in graalvm_ru
но не можешь указать оба =)
источник

A

Alex in graalvm_ru
в презентации по очереди по уровням рассказывали какие оптимизации делает сам грааль
на 20м слайде показано что из них осталось в graal economy frontend

никаких dead code elimination/simplification/etc
только разобрались байткод, построили граф, добавили сейфпоинтов и скомпилировали
источник

OS

Oleg Shelajev in graalvm_ru
да. смотри сейчас вот так:
interpreter -> c1 -> c2
источник

OS

Oleg Shelajev in graalvm_ru
или вот так interpreter -> c1 -> GraalVM compiler
источник

OS

Oleg Shelajev in graalvm_ru
и если сделать в graalvm tiered compilation
источник

OS

Oleg Shelajev in graalvm_ru
то будет вот так:
interpreter ->   -> GraalVM: eco -> full
источник

OS

Oleg Shelajev in graalvm_ru
а вместо с1 ничего не будет
источник

OS

Oleg Shelajev in graalvm_ru
или например можно вот так:

interpreter -> c1 -> GraalVM: eco -> full
источник

OS

Oleg Shelajev in graalvm_ru
то есть это не заменит с1 а будет решать ту же проблему
источник

OS

Oleg Shelajev in graalvm_ru
вот я про это
источник

A

Alex in graalvm_ru
если мы убираем c1 и делаем

interpreter -> GraalVM: eco -> GraalVM: full

вместо
interpreter -> c1 -> GraalVM: full

это замена или решение той же проблемы?
источник

A

Alex in graalvm_ru
interpreter -> c1 -> GraalVM compiler (full)

с1 нужен только для самого грааля
пользователький код можно направить по

interpreter -> GraalVM compiler (full)
источник

OS

Oleg Shelajev in graalvm_ru
Alex
если мы убираем c1 и делаем

interpreter -> GraalVM: eco -> GraalVM: full

вместо
interpreter -> c1 -> GraalVM: full

это замена или решение той же проблемы?
я думаю решение той же проблемы потому что оно не вместо С1, потому что можно interpreter -> c1 -> GraalVM: eco -> full
источник