The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Основанные на GCC проекты JIT-компилятора и расширения, испо..., opennews (??), 04-Окт-13, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


60. "Основанные на GCC проекты JIT-компилятора и расширения,..."  +/
Сообщение от arisu (ok), 04-Окт-13, 14:41 
> Предложи более прямой способ сгенерить шейдеры для GPU, например?

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

но, конечно, наименее костыльный метод — это, я так понимаю, таскать с собой всю механику GCC (которая изначально не предназначена была для подобного использования). или монстра-переростка llvm.

и да: я не уточнил, что подразумеваю использование gcc/llvm именно как jit. это и есть мегаизвращение. что, собственно, доказывает нам Mike Pall со своим LuaJIT2.

Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору

85. "Основанные на GCC проекты JIT-компилятора и расширения,..."  +/
Сообщение от Аноним (-), 05-Окт-13, 11:50 
> предлагаю: унифицировать промежуточную VM для оных GPU,

Уже была попытка, кстати. Называлось сие TGSI, см. http://people.freedesktop.org/~csimpson/gallium-docs/tgsi.html - и оно местами таки юзается. Но на общие вычисления не особо заточено, тому что сейчас в GPU не очень соответствует, и вообще имеет кучу грабель и все на это подзабили. К тому же еще парсить код шейдеров кто-то должен, в том числе и выислительный, а OpenCL уже достаточно приличный кусок от си. Собственно из каких-то таких соображений LLVM нынче и юзают нынче: парсер и генератор кода.

> то и VM можно сдизайнить соответствующим образом, чтобы на стадии «компиляция
> в код VM» делалось побольше всего.

Уже было и уже частично пострадало за свою специфичность, т.к. TGSI был слишком ориентирован на графику, а на GPGPU - как-то не особо. А тут до народа дошло что раз есть столько числокрушилок - хорошо бы на них не только графику считать :). Ну вот народ и возится теперь кто с чем.

В конечном итоге это нынче выглядит так: на вход дается сорц шейдера или вычислительного кернела а как оно там его перегонит сие в нативный код GPU - уже проблемы драйвера. При этом виртуальный набор команд не навязывается, там могут быть грабли еще и в том что этот набор менее фичаст чем свойства конкретного GPU который умеет больше нежели это. При компиляции из сорца такая проблема не возникает ессно. А вот внутрях там уже кто как делает. В открытых дровах интел пилит свою собственную реализацию opencl, амдшники поюзали некоторые части gallium и LLVM как генератор кода, etc. Что там у нуво - хрен их знает. Проприерасы IIRC целиком запилили с нуля свои реализации.

> но, конечно, наименее костыльный метод — это, я так понимаю, таскать с
> собой всю механику GCC (которая изначально не предназначена была для подобного
> использования). или монстра-переростка llvm.

Сдается мне что gcc не сильно меньше LLVM будет в этом плане. Ну и да, gcc на такое изначально никто вообще не рассчитывал, хотя то что его таки прикрутили и для этого, да еще довольно быстро - внушает. Яблочно-бздoтные фанаты бы оборались тут уже если б их фетиш с такой скоростью кто-то допиливал под разные задачи.

> и да: я не уточнил, что подразумеваю использование gcc/llvm именно как jit.
> это и есть мегаизвращение. что, собственно, доказывает нам Mike Pall со
> своим LuaJIT2.

LuaJIT это конечно круто и замечательно, но шейдеры пишутся на чем-то сиподобном, а OpenCL по сути специфичный диалект си. Так что да, кроме JIT надо бы еще и парсер этого самого си-подобного синтаксиса. Для OpenCL его целиком фигачить не вломак оказалось интелу, АМД заломало и они взяли из шланга. Почему не GCC? Ну... они уже 2 года долбутся с этим, 2 года назад сабжа не было :)

Ответить | Правка | Наверх | Cообщить модератору

87. "Основанные на GCC проекты JIT-компилятора и расширения,..."  +1 +/
Сообщение от arisu (ok), 05-Окт-13, 11:56 
как я уже сказал — тут две отдельные ветки беседы надо. JIT в одну сторону, компиляцию шэйдеров — в другую.

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

просто в винде создать новый процесс сильно дороже, чем в пингвинусе, вот и занимаются извращениями.

Ответить | Правка | Наверх | Cообщить модератору

91. "Основанные на GCC проекты JIT-компилятора и расширения,..."  –1 +/
Сообщение от Аноним (-), 05-Окт-13, 13:18 
> как я уже сказал — тут две отдельные ветки беседы надо. JIT
> в одну сторону, компиляцию шэйдеров — в другую.

Компиляция шейдеров во время выполнения происходит, по поводу чего не вижу глобальных отличий от JIT в плане логики действа, если честно. Единственное чем оно так глобально отличается - сгенеренный код потом не на системном проце выполняется а отправится в GPU.

> для шэйдеров и можно, и нужно позвать внешний компилятор.

Не, спасибочки, еще не хватало чтобы при запуске какойнить игрушки 100500 внешних процессов пахало. Нафиг-нафиг.

> помимо того, что это обезопасит драйвера от ошибок в компиляторе,

Программа все-равно не сможет корректно работать если шейдер или CLный кернель не скомпилился. Если компилер даже совсем навернется где-то в прога -> GL/CL либы -> компилер - да и болт с ним. Нехай чинят, юзери лишний раз прессанут разработчиков чтобы обезглючили эту хрень.

> можно ещё и обновлять раздельно: не надо переустанавливать драйвера,
> если вышел новый релиз компилятора шэйдеров.

Компилятор шейдеров не имеет самоценности как отдельная сущность в отрыве от драйверов, которые позволяют то что получилось в GPU запихнуть и запустить.

> просто в винде создать новый процесс сильно дороже, чем в пингвинусе, вот
> и занимаются извращениями.

А при чем тут вообще винда? Амдшники в открытом драйвере юзанули, с аргументом что там парсер есть и кодогенератор какой-никакой.

Ответить | Правка | Наверх | Cообщить модератору

93. "Основанные на GCC проекты JIT-компилятора и расширения,..."  +1 +/
Сообщение от arisu (ok), 05-Окт-13, 15:10 
> по поводу чего не вижу глобальных отличий от JIT

это потому, что про JIT-ы ты тоже знаешь только три символа, как и про X11.

остальную феерию просто вытер, потому что тут опять «обнять и плакать».

Ответить | Правка | Наверх | Cообщить модератору

138. "Основанные на GCC проекты JIT-компилятора и расширения,..."  +/
Сообщение от Аноним (-), 10-Окт-13, 11:41 
> это потому, что про JIT-ы ты тоже знаешь только три символа, как и про X11.

Да это пофигу - общую суть затеи с шейдерами и CL ядрами я усек и вижу что народ тяготеет к сборке этого в рантайме, когда оно по факту понадобилось. Почти как JIT по общей логике получается. А gcc на такое исходно никогда никто не затачивал вообще - он обычный такой компилятор.

> остальную феерию просто вытер, потому что тут опять «обнять и плакать».

Да ну, брось. Ты всякой всякой феерии тоже не меньше генеришь.

А насчет иксов и прочая - я буду пользоваться той графической системой которая будет для меня работать лучше. И это явно не про иксы. Насчет того кто в в чем разбирается: реально разбирается в иксах полтора землекопа на всю планету. Остальные приходят в ужас от увиденного и действительно не разбираются в иксах. Ну или по крайней мере в их коде, являюищмся ужасным месивом костылей и подпорок. Лично мне намного интереснее будет посмотреть что такие как ты разбирающиеся будут делать когда парочка грандов типа Кейта Пакарда окончаетльно задолбаются с этим месивом. У тебя и vkni появится чудный шанс показать всему миру как ты там разбираешься.

Ответить | Правка | Наверх | Cообщить модератору

148. "Основанные на GCC проекты JIT-компилятора и расширения,..."  +/
Сообщение от arisu (ok), 10-Окт-13, 12:11 
>> это потому, что про JIT-ы ты тоже знаешь только три символа, как и про X11.
> Да это пофигу

я заметил.

> общую суть затеи с шейдерами и CL ядрами я усек

только вот беда: это не JIT, это кросс-компиляция. «не в лотерею, а в преферанс. не выиграл, а проиграл. не квартиру, а машину. а так всё верно, да.»

> Да ну, брось. Ты всякой всякой феерии тоже не меньше генеришь.

все ошибаются. я тоже ошибаюсь, конечно. но в темы, где я совсем ничего не понимаю, я стараюсь вообще не лезть.

> делать когда парочка грандов типа Кейта Пакарда

вот его вообще не надо было туда пускать. «гранд», блин. забирайте это к себе куда угодно и не возвращайте никогда.

> У тебя и vkni появится чудный шанс показать всему миру как ты там разбираешься.

(пожимает плечами) возможно, придётся. правда, лично я «всему миру» ничего доказывать и показывать не собираюсь, я если буду пилить — то совсем для других целей. потому как форк для распальцовки и сейчас сделать никто не мешает.

Ответить | Правка | Наверх | Cообщить модератору

111. "Основанные на GCC проекты JIT-компилятора и расширения,..."  –1 +/
Сообщение от annulen (ok), 07-Окт-13, 14:37 
> и да: я не уточнил, что подразумеваю использование gcc/llvm именно как jit.
> это и есть мегаизвращение. что, собственно, доказывает нам Mike Pall со
> своим LuaJIT2.

Для си-подобных языков это не мегаизвращение, а наиболее естественный метод JIT-компиляции. Для Lua LLVM JIT сливает, но не потому что он плохой, а потому что заточен на совсем другие языки.

Кстати, в WebKit яббловцы прикрутили JIT-компиляцию JS с помощью LLVM в качестве четвертого уровня JIT.

Ответить | Правка | К родителю #60 | Наверх | Cообщить модератору

112. "Основанные на GCC проекты JIT-компилятора и расширения,..."  +1 +/
Сообщение от arisu (ok), 07-Окт-13, 14:50 
> Для си-подобных языков это не мегаизвращение, а наиболее естественный метод JIT-компиляции.

— алё, Хьюстон, у нас проблемы: воробей!
— спокойно, уже везём ядерную боеголовку!

> Для Lua LLVM JIT сливает, но не потому что он плохой,
> а потому что заточен на совсем другие языки.

тут вот в списке рассылки LuaJIT забавное пролетело: транслятор байт-кода JVM в байт-код LuaJIT. первая версия — в общем-то PoC — показала (на микротестах, конечно) результаты кое-где получше хотспота, а кое-где ненамного хуже. ну, и кое-где таки хуже — потому что автор транслятора сделал некоторые вещи неправильно, на что СуперМайк ему указал. про потребление памяти лучше умолчу вообще, чтобы у жавистов падучая не началась.

это я к чему? к тому, что с джитингом «статически типизированых» языков LuaJIT2 справляется тоже весьма неплохо.

> Кстати, в WebKit яббловцы прикрутили JIT-компиляцию JS с помощью LLVM в качестве
> четвертого уровня JIT.

ну, любят люди извращения — кто ж им запретить-то может…

Ответить | Правка | Наверх | Cообщить модератору

113. "Основанные на GCC проекты JIT-компилятора и расширения,..."  –1 +/
Сообщение от annulen (ok), 07-Окт-13, 15:17 
>> Для си-подобных языков это не мегаизвращение, а наиболее естественный метод JIT-компиляции.
> — алё, Хьюстон, у нас проблемы: воробей!
> — спокойно, уже везём ядерную боеголовку!

Проще взять готовый фронт-енд для С-подобных языков и готовый бэкэнд для JIT, чем городить велосипеды.

Ответить | Правка | Наверх | Cообщить модератору

114. "Основанные на GCC проекты JIT-компилятора и расширения,..."  +1 +/
Сообщение от arisu (ok), 07-Окт-13, 15:19 
> Проще взять готовый фронт-енд для С-подобных языков и готовый бэкэнд для JIT,
> чем городить велосипеды.

— а пользователь?
— а нам какое дело? купит процессор поновее и ещё 16GB памяти, это его проблемы!

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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