The OpenNET Project / Index page

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

Основанные на GCC проекты JIT-компилятора и расширения, использующего GPU для вычислений

03.10.2013 23:49

Дэвид Малколм (David Malcolm), активный разработчик GCC из компании Red Hat, опубликовал прототип библиотеки libgccjit.so с реализацией встраиваемого в приложения JIT-компилятора, использующего GCC в качестве бэкенда. Данная библиотека может быть динамически связана с интерпретаторами байткода и другими программами, которым необходима генерации машинного кода на лету, во время выполнения.

Идея проекта состоит в том, что GCC собирается в форме позиционно-независимого кода, который присоединяется к библиотеке libgccjit.so, что позволяет обеспечить возможность выполнения GCC в одном процессе с генерируемым машинным кодом. Инициирование компиляции и выполнения откомпилированных на лету блоков кода производится приложением при помощи специально предоставленного библиотекой API. Первый прототип проекта поддерживает JIT-компиляцию кода на языке Си, но уже началась подготовка биндинга для языка Python.

Другим интересным проектом, является опубликованный разработчиками из компании Samsung модифицированный вариант GCC с интегрированной поддержкой стандарта OpenACC 1.0. Указанный вариант GCC даёт возможность сформировать исполняемый файл, позволяющий в процессе работы программы вынести выполнение некоторых вычислительных операций на плечи GPU.

 
  1. Главная ссылка к новости (http://gcc.gnu.org/ml/gcc-patc...)
  2. OpenNews: Обсуждение возможных планов развития GCC 5.0
  3. OpenNews: Наглядное представление шагов оптимизации в GCC
  4. OpenNews: nVidia Fermi сможет выполнять Linux
  5. OpenNews: Проект KGPU позволяет задействовать GPU для выполнения фрагментов кода ядра Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/38075-gcc
Ключевые слова: gcc, jit, gpu, openacc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (113) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 00:37, 04/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • –5 +/
    Чем оно лучше LLVM?
     

     ....большая нить свёрнута, показать (42)

  • 1.2, ssy (?), 00:37, 04/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +4 +/
    Скоро окажется, что gpu работает наравне с cpu и последний можно убрать. Потом окажется, что gpu можно разгрузить, добавив cpu. Ну вы поняли.
     
     
  • 2.5, pavlinux (ok), 00:47, 04/10/2013 [^] [^^] [^^^] [ответить]  []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +4 +/
    > Скоро окажется, что gpu работает наравне с cpu ...

    Еще лет 7-8 назад один из разрабов Nvidia вывалил на сайте developer.nvidia.com,
    что они запускали ядро Linux на GeForce, вроде 6800GT. Пост исчез в течении двух дней,
    разраба никто больше не слышал.  :)

    Чуть раньше, когда CUDA и OpenCL в планах даже не было, один чувак,
    реализовал функции сортировки, сравнения строк на Жыфорсе. Его сайт
    жил дольше, но не обновлялся ни разу.

     
     
  • 3.6, Аноним (-), 00:52, 04/10/2013 [^] [^^] [^^^] [ответить]  []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    Не в начале апреля пост был?
     
     
  • 4.7, pavlinux (ok), 00:56, 04/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    Симшьно, ща уписаюсь http://www.cs.utah.edu/~wbsun/gpustore.pdf
     
  • 4.10, pavlinux (ok), 01:44, 04/10/2013 [^] [^^] [^^^] [ответить]  []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +1 +/
    Кстати, на Опеннете новость была.
     
     
  • 5.36, zhenya_k (?), 11:11, 04/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • –2 +/
    За вами тоже уже выехали.
     
     
  • 6.40, Аноним (-), 11:31, 04/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    Извинитесь.
     
  • 4.26, Аноним (-), 09:17, 04/10/2013 [^] [^^] [^^^] [ответить]  []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +1 +/
    http://www.opennet.me/opennews/art.shtml?num=23833 nVidia Fermi сможет выполнять Linux
    http://www.opennet.me/opennews/art.shtml?num=30484 Проект KGPU позволяет задействовать GPU для выполнения фрагментов кода ядра Linux
     
     
  • 5.35, Аноним (-), 11:02, 04/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    Это завязано на CUDA и блободрайвере, что для ядра сильно-сильно не айс. Вот если будет VAAPI и nouveau (radeon), то тогда да.
     
     
  • 6.42, Аноним (-), 11:54, 04/10/2013 [^] [^^] [^^^] [ответить]  []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +1 +/
    > CUDA... VAAPI и nouveau (radeon)

    Какие еще слова знаешь?

     
     
  • 7.70, Аноним (-), 16:45, 04/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • –1 +/
    Wiki всем доступно, можешь и ты просветиться :)
     
  • 6.82, Аноним (-), 09:59, 05/10/2013 [^] [^^] [^^^] [ответить]  []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    > Вот если будет VAAPI

    И как именно апи для декодирования видео относится к вычислениям на GPU? :)


     
  • 3.8, vitalif (ok), 00:58, 04/10/2013 [^] [^^] [^^^] [ответить]  []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    А ещё был более-менее реальный proof of concept червя, живущего исключительно в памяти GPU и в ROM'е broadcom'овской сетевухи (она там тоже такая типа вся программируемая), и слущающего трафик.
     
  • 2.37, анонимус (??), 11:17, 04/10/2013 [^] [^^] [^^^] [ответить]  []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +2 +/
    Это никогда не случится :) Вы не особо представляете как вообще GPU работает. Для некоторых алгоритмов намного быстрее, а для некоторых наоборот намного медленнее. А вот решения AMD CPU + GPU - APU вполне жизнеспособны, как в свое время CPU + FPU.
     

  • 1.9, rshadow (ok), 01:38, 04/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +2 +/
    Странная эта борьба за новые языки и возможности. Все время пытаются сделать лазерный скальпель, когда вогруг все пилят только деревья. Надо бы культуру программирования и технологии в массы подтянуть, а не переизобретать очередной велосипед на очередном языке.
     
     
  • 2.12, Аноним (-), 03:32, 04/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    Речь скорее идет о изобретении инструментов переноса старого кода и инструментов в новые условия. Что с того, что новые условия это не лесопилка, а что то потоньше? Уровень среднего программера остается неизменным.
     

  • 1.13, jOKer (ok), 03:53, 04/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    >но уже началась подготовка биндинга для языка Python.

    Отличненько, - горю желанием заценить!

     
  • 1.14, arisu (ok), 04:33, 04/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    забавно, конечно, но редкостные извращенцы. что этот, что llvm-щики.
     

     ....большая нить свёрнута, показать (35)

  • 1.15, Аноним (-), 07:21, 04/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    угу, для питона, руби, перла, пэхапе - первые будут.
    потом всякие тикли, APL и проч и проч - втащат, мб )
    было бы прикольно увидеть Erlang OTP - сроднившимся с GCC :P
     
     
  • 2.61, arisu (ok), 14:51, 04/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +1 +/
    > было бы прикольно увидеть Erlang OTP — сроднившимся с GCC :P

    не особо. и вообще, для многих «динамических» языков AOT-компилятор — совсем не лучшее решение, как ни странно. даже если этот AOT-компилятор пытается изобразить из себя JIT.

     

  • 1.17, Vkni (ok), 07:30, 04/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • –4 +/
    Я может быть чего-то не понимаю, но Gentoo вроде бы давно придумали. И компилятся там исходники ровно один раз, а не постоянно, как Jit без кеширования.
     
     
  • 2.21, Аноним (-), 08:39, 04/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    Вы вообще нихрена не понимаете И гентушники тут ни о чем Что есть у гентушник... большой текст свёрнут, показать
     
     
  • 3.64, arisu (ok), 15:01, 04/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +1 +/
    действительно, то ли дело 8212 прямо в драйвер вкорячить немеряных размеров б... большой текст свёрнут, показать
     
     
  • 4.72, Vkni (ok), 18:16, 04/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    > а память вообще экономит прямо влёт:
    > пользователь же каждую наносекунду какой-нибудь шэйдер компилирует!

    Меня, если честно, беспокоит вопрос времени - gcc -O2 значительно тормознее gcc -O0. Т.е. фаза оптимизации занимает очень существенное время. А JIT должен быть всё-таки достаточно быстр. Ну, либо придётся ограничиться предкомпиляцией с сохранением результатов (но это и есть вариант Gentoo).

     
     
  • 5.73, arisu (ok), 18:24, 04/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +1 +/
    да и памяти оно тоже кушает. при этом libjit — если выкинуть вливы — весит значительно меньше, работает сильно быстрее и выдаёт достаточно неплохой код. вдобавок имеет интерпретатор для архитектур, где нет кодогенерации.
     
     
  • 6.86, Аноним (-), 11:55, 05/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    > да и памяти оно тоже кушает.

    В gcc 4.8 вроде как потребление памяти заметно скостили, правда там в основном на LTO вроде непирали.

    > при этом libjit — если выкинуть вливы —

    Гыгы, действительно, нафиг надо генерить код под GPU? Отдадим шлангу на откуп? :)

    > весит значительно меньше, работает сильно быстрее и выдаёт достаточно
    > неплохой код. вдобавок имеет интерпретатор для архитектур, где нет кодогенерации.

    Звучит довольно вкусно.

     
     
  • 7.89, arisu (ok), 12:06, 05/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    >> при этом libjit — если выкинуть вливы —
    > Гыгы, действительно, нафиг надо генерить код под GPU?

    jit-компилятором? однозначно не надо, jit-ы не для этого совсем придуманы.

    >> весит значительно меньше, работает сильно быстрее и выдаёт достаточно
    >> неплохой код. вдобавок имеет интерпретатор для архитектур, где нет кодогенерации.
    > Звучит довольно вкусно.

    оно ещё вкуснее, на самом деле, потому что на вход libjit'у подаётся почти классический SSA. то есть, распределением регистров, уничтожением лишних временных переменных и прочей «низкой» механикой занимается сама libjit. и это действительно удобно.

    и ещё там есть плюшки для перекомпиляции уже раз отджитеной функции, при этом с поддержкой многопоточности. то есть, сам компилятор только в одном потоке может работать, но: пока мы упорно занимаемся перекомпиляцией, другие потоки спокойно используют старую версию функции. а потом libjit заменит её на новую. при этом позаботившись о том, чтобы ничего не упало и не сглючило, если какой-то другой поток в это время всё ещё находится в старом варианте.

    «из коробки» оно умеет x86, x86_64 и arm. то есть, подавляющее большинство устройств, где может понадобиться, охвачено. да и создание нового бэкэнда не ракетная наука.

     
     
  • 8.120, annulen (ok), 18:37, 07/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • –1 +/
    Мда, и кто-то еще заикается про малое количество архитектур, поддерживаемых LLVM... текст свёрнут, показать
     
  • 8.139, Аноним (-), 11:49, 10/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    Оно достаточно близко по смыслу имхо - код для GPU генерится на лету, по ходу вы... текст свёрнут, показать
     
     
  • 9.150, arisu (ok), 12:15, 10/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    оно совершенно далеко и по смыслу, и по целям, и по требованиям и вот ты как ра... текст свёрнут, показать
     

  • 1.78, Аноним (-), 20:34, 04/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    Использовать gcc для jit какая-то нелепость при наличии llvm.
     
     
  • 2.80, arisu (ok), 09:35, 05/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • –1 +/
    > Использовать gcc для jit какая-то нелепость при наличии llvm.

    не большая, чем использовать для этого llvm.

     

  • 1.92, lucentcode (ok), 13:20, 05/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    То, что ребята пошли по пути LLVM не может не радовать. Вот только они опоздали. В LLVM классных плюшек с каждым релизом только прибавляется. И догнать их будет не легко. А поддерживая старый(и зачастую плохо поддерживаемый код на C) - просто не реально.
     
     
  • 2.140, Аноним (-), 11:52, 10/10/2013 [^] [^^] [^^^] [ответить]      [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • +/
    > В LLVM классных плюшек с каждым релизом только прибавляется.

    Особенно "классно" с LLVM сношались амдшники, которые добрых 2 года пытались убедить этот крап сгененрить просто валидный код для их GPU. Про оптимизацию кода речь вообще не шла - для этого отдельный довесок присобачили. Который к LLVM вообще никак не относится.

    > И догнать их будет не легко. А поддерживая старый(и зачастую
    > плохо поддерживаемый код на C) - просто не реально.

    Я думаю мсье стоило бы почитать что думают практикующие разработчики о "простоте" работы с clang/llvm. Например, мнение от Vadim Girlin, того который оптимизатор шейдеров написал. Ему проще с нуля оказалось написать это чем с шланговской инфраструктурой бодаться.

     

  • 1.97, хрюкотающий зелюк (?), 23:27, 06/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  []     [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
  • –2 +/
    > но уже началась подготовка биндинга для языка Python

    а вот это уже интересно

     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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