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-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor