The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

08.04.2015 20:01  Пример использования средств JIT-компиляции, появившихся в GCC 5

Разработчики из компании Red Hat опубликовали интересную заметку с примером использования библиотеки libgccjit, которая входит в состав набора компиляторов GCC 5, релиз которого ожидается через несколько недель. В GCC 5 генератор кода может быть собран в виде разделяемой библиотеки, встроен в другие процессы и использован для упреждающей AOT-компиляции (Ahead-of-time) или JIT-компиляции байткода в машинный код. В заметке показано как построить компилятор для гипотетического языка программирования, используя Python-биндинг к libgccjit для JIT-компиляции кода в Python-скрипте.

  1. Главная ссылка к новости (http://developerblog.redhat.co...)
Лицензия: CC-BY
Тип: английский / Практикум
Ключевые слова: gcc, jit
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Показать все | RSS
 
  • 1.1, nc, 20:09, 08/04/2015 [ответить] [смотреть все]    [к модератору]
  • +3 +/
    Компиляторы из промежуточного представления в бинарное имеют смысл при инсталляции кроссплатформенных программ из единого источника на разные аппаратные платформы. Это то что гугл сделал в виде art. А JIT как компиляция каждый раз при запуске программы - а нафиг это нужно?
     
     
  • 2.2, A.Stahl, 20:21, 08/04/2015 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]
  • –5 +/
    Писать скрипты в сишном коде не на lua или, избавь Ктулху, на JavaScript, а на С... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.3, Аноним, 20:25, 08/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +5 +/
    Что-то я не вижу ничего хорошего в скриптах на Си Если же вы думаете, что это п... весь текст скрыт [показать]
     
     
  • 4.4, A.Stahl, 20:28, 08/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Есть программа на Си Нужно в ней что-то скриптовое Разумеется лучше чтобы этот... весь текст скрыт [показать]
     
     
  • 5.6, Сергей, 20:44, 08/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Какой кусок кода в гипотетической, но уже написанной C-шной программе разумеетс... весь текст скрыт [показать]
     
     
  • 6.10, A.Stahl, 20:49, 08/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    Скриптовый. Т.е. часто изменяемый. Возможно даже пользователем.
     
     
  • 7.14, Сергей, 20:53, 08/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +2 +/
    Пользоветель скорее умрет, но попросит сделать поддержку LUA вместо С.
     
  • 7.15, Сергей, 20:54, 08/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    "Частоизменяемый" не проблема компилировать при разработке.
     
     
  • 8.19, Вулх, 21:09, 08/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    В том то и дело, что изменяемый при эксплуатации, а не при разработке.
     
     
  • 9.34, Сергей, 03:21, 09/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Смотри пост 7.14
     
  • 5.7, Сергей, 20:46, 08/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Чем лучше писать скрипты на C по сравнению с LUA?
     
     
  • 6.11, A.Stahl, 20:50, 08/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Тем, что зная Си ты уже автоматичемски знаешь Си Круто, да А вот знание Си ник... весь текст скрыт [показать]
     
     
  • 7.17, Сергей, 20:58, 08/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +6 +/
    Знание C/C++/Tcl/BASH мне тут же обеспечило знание LUA. Попробуй под пытками заставить человека, знающего только LUA,Tcl и BASH хоть что-то написать на C/C++ -- человек погибнет. ;-)
     
  • 7.37, Vkni, 06:09, 09/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Все знают Бейсик, но это же не повод писать на нём абсолютно всё ... весь текст скрыт [показать]
     
     
  • 8.42, cmp, 08:45, 09/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    да ну
     
  • 5.9, Аноним, 20:48, 08/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Обычно что-то скриптовое в программе нужно для расширения функциональности польз... весь текст скрыт [показать]
     
     
  • 6.43, cmp, 08:56, 09/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    О чем речь, если оно поддерживает си, то и луа автоматом, кому надо луа пусть ег... весь текст скрыт [показать]
     
  • 5.12, Сергей, 20:52, 08/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +2 +/
    Я всего один раз написал на LUA, но с полпинка небольшой скрипт без предваритель... весь текст скрыт [показать]
     
  • 3.8, Аноним, 20:47, 08/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Lua божественнен Один из самых шустрых скриптовых языков, очень малые затраты н... весь текст скрыт [показать]
     
     
  • 4.13, A.Stahl, 20:52, 08/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Ну никто и не утверждает обратного Но сишникам приятней будет использовать Си у... весь текст скрыт [показать]
     
     
  • 5.16, Аноним, 20:56, 08/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Проще что?

    На самолёте проще чем на троллейбусе.

     
     
  • 6.18, A.Stahl, 21:04, 08/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    >Проще что?

    всё

     
     
  • 7.45, arisu, 17:57, 09/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    хэш 8208 таблицы, например куда уж несчастным скриптовикам до няшности и удобс... весь текст скрыт [показать]
     
  • 5.26, Crazy Alex, 00:03, 09/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Для скриптовых нужд у C уж больно слабо в плане синтаксиса и высокоуровневых кон... весь текст скрыт [показать]
     
     
  • 6.28, Led, 00:05, 09/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • –3 +/
    Начал за здравие а закончил за упокой ... весь текст скрыт [показать]
     
     
  • 7.33, Crazy Alex, 02:34, 09/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    И в чём проблема Для скриптов нужно что-то, где, как минимум, можно автоматом у... весь текст скрыт [показать]
     
  • 6.30, Анончег, 01:29, 09/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Precompiled Headers Нет, не слышал https gcc gnu org onlinedocs gcc Precom... весь текст скрыт [показать]
     
     
  • 7.32, Crazy Alex, 02:29, 09/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Их хватает, чтобы компиляция не занимала вечность, но не для того, чтобы компили... весь текст скрыт [показать]
     
  • 6.38, Vkni, 06:11, 09/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    > На плюсах - тоже можно хотя бы сделать по-человечески

    Нельзя.

     
  • 5.35, Сергей, 03:25, 09/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +3 +/
    Запатентуй компилятор мата -- обогатишься - ... весь текст скрыт [показать]
     
  • 3.44, Аноним, 11:34, 09/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Вообще-то, libgccjit - это всего лишь backend, т е генератор машинного кода А ... весь текст скрыт [показать]
     
  • 2.5, Tav, 20:30, 08/04/2015 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +4 +/
    Для разного нужно - динамическая оптимизация программы с учетом текущего профил... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.23, freehck, 22:18, 08/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Ну, это скорее её недостаток Ей ведь надо балансировать между скоростью запуска... весь текст скрыт [показать]
     
     
  • 4.24, Tav, 23:00, 08/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    На серверах, где программа перезапускается редко и работает долго, это не пробле... весь текст скрыт [показать]
     
     
  • 5.31, Анончег, 01:33, 09/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Да, да, поддерживаю, пускай расскажет нам про Ъ-виды и НЕ-Ъ-виды ... весь текст скрыт [показать]
     
  • 5.40, freehck, 07:03, 09/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    А у программ скомпилированных до конца , такой проблемы нет Суть в том, что от... весь текст скрыт [показать]
     
     
  • 6.46, Tav, 18:13, 10/04/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Ну это не технические отличия, а вопрос позиционирования И на самом деле, произ... весь текст скрыт [показать]
     
     
  • 7.47, freehck, 15:26, 22/06/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Да, это может дать прирост производительности Однако я не очень представляю, ка... весь текст скрыт [показать]
     
  • 2.21, Аноним, 21:43, 08/04/2015 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Как-то так шейдеры в GPU вгружают например Хотя иногда скомпиленое и кэшируют ... весь текст скрыт [показать] [показать ветку]
     
  • 2.22, КарМер, 22:17, 08/04/2015 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    "Разные аппаратные платформы " - это и разное число ядер, в том числе ...
     
     
  • 3.29, Crazy Alex, 00:07, 09/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Тогда не JIT,  а просто сборка на клиенте. Но вообще-то разное число ядер в коде спокойно обрабатывается. Пул потоков, очередь заданий,да и всё
     
  • 2.25, Qld, 23:38, 08/04/2015 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • –1 +/
    JIT-компиляция может учесть все экстенжены текущего процессора, что приведет к заметному бусту высоко нагруженных длительных вычислений.
     
     
  • 3.27, Crazy Alex, 00:05, 09/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Так здесь не JIT,  а вполне себе нормальная AOT-компиляция нужна - при первом запуске собрал (или до него - привет Гента), закешировал и пусть лежит.
     
  • 1.20, Аноним, 21:28, 08/04/2015 [ответить] [смотреть все]     [к модератору]  
  • +/
    GCC 5 начинает догонять старые версии LLVM ... весь текст скрыт [показать]
     
     
  • 2.36, MaMoHT, 05:05, 09/04/2015 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +4 +/
    > GCC 5 начинает догонять старые версии LLVM :)

    Забавность ситуации заключается в том, что у gcc намного более богатые возможности по расширению - от легкого расширения ast дерева (в llvm это можно сделать только на  интринсиках) до распараллеливания на GPU "из коробки". И открыв функциональность по jit они не догоняют "старые версии llvm" а уходят в далекий-предалекий отрыв. Порог вхождения в gcc выше, и новичку намного легче написать frontend на llvm, но когда узнаешь все возможности gcc, то llvm перестает казаться даже адекватной альтернативой.

    Однако это не умаляет достоинства llvm, они дали очень хороший "пинок" для развития gcc. Конкуренция это всегда хорошо. И может быть они когда нибудь догонят gcc по возможностям...

     
     
  • 3.41, freehck, 07:09, 09/04/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    > Однако это не умаляет достоинства llvm, они дали очень хороший "пинок" для
    > развития gcc. Конкуренция это всегда хорошо. И может быть они когда
    > нибудь догонят gcc по возможностям...

    Это вряд ли. Они ведь компилируются только в одну архитектуру, а потом на лету пытаются перекомпилироваться в машинные коды. Трижды ха. Это конечно определённо даёт фору в реализации новых стандартов ЯП, но жутко демпингует их по качеству сгенерированного кода. JIT относительно хорош для многих вещей, но не для оптимизации же.

    Однако конкуренция - таки да, это хорошо.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor