Для работы проектов iXBT.com нужны файлы cookie и сервисы аналитики.
Продолжая посещать сайты проектов вы соглашаетесь с нашей
Политикой в отношении файлов cookie
Нет не угадал. Но близко:
«Движок портирован в режиме „интерпретатора“ — ahead-of-time шаблонного компилятора с внутренним предствавлением на псевдоассемблере....»
Это не процессор ₽#3@ец, комментаторы, которые не могут закрепленый комментарий под оригинальным видео прочитать.
Там этот код можно раз в 15 оптимизировать…
Затем что он свой и он работает и уже сейчас закрывает основные потребности разных ведомств.
И игрухи современные вполне нормально тянет при наличии правильно скомпилированных исходников.
https://youtu.be/5TtOQQAtt3A
Дело даже не столько в этом, а в том что ОпенЕксрэй не основан на исходниках а:
1) Движок портирован в режиме «интерпретатора» — ahead-of-time шаблонного компилятора с внутренним предствавлением на псевдоассемблере.
2) Проект выложен в открытый доступ за исключением кодогенератора, с предгенеренным кодом на github-е: github.com/helce/LuaJIT
3) Порт достаточно медленный в виду архитектурных особенностей движка, т.к. используется рандом-доступ к шаблоном с вычислением адреса каждого следущего и хранение всех операндов и результатов операций в памяти. Т.е. для выполнения простейшей операции a = b, требуется загрузить операнды из памяти, вычислить a, записать в память, вычислить адрес следующего шаблона, подготовить операнды и передать управление. В итоге заместо одного такта получается в районе 20 в «хорошем случае» и сотни в случае кэш-промахов. На интелах подобная модель может работать относительно быстро, т.к. планированием всего этого счастья будет заниматься процессор, на эльбрусе такое же не прокатывает.
4) По моим расчетам можно сделать минимум раз в 10-15 быстрее, если переписать механизм взаимодействия шаблонов на использование «шаблонных лент», с записью в память только на переходах. Это и jit-итить имеет смысл, т.к. код получится связанный. И планирование будет в разы лучше. По крайней мере тестовый компилятор brainfck получился довольно быстрым (на нем отлаживал кодогенератор dynasm).
5) Однако это довольно большой объем работы, а т.к. у автора luajit не то что документации нет, а даже с комментариями в коде беда, проще с нуля написать. Но боюсь у меня нет столько свободного времени.
6) Jit-а в текущих реалиях не планируется, т.к. толку от него будет мало, да и запрещено пока публиковать opcode-ы, а кодогенератор то на lua написан и будет требовать установки на машину.
7) Ошибки все еще присутствуют минорные, т.к. тестов конкретно luajit немного, а api отличается от ванильного lua-5. Несколько ошибок удалось отловить как раз на openxray.
Я правильно понимаю что у фанатов не было исходников и это
«Движок портирован в режиме „интерпретатора“ — ahead-of-time шаблонного компилятора с внутренним предствавлением на псевдоассемблере.»
«Движок портирован в режиме „интерпретатора“ — ahead-of-time шаблонного компилятора с внутренним предствавлением на псевдоассемблере....»
И далее по тексту закрепенного ко мента а данном видосе
…
Да только читаем закрепленый коммент под сабжевым видосом:
«Движок портирован в режиме „интерпретатора“ — ahead-of-time шаблонного компилятора с внутренним предствавлением на псевдоассемблере… „
Дело даже не в техпроцессе. Нормальноскомпилироаанные игры работают на Эльбрус так, что процессор вообще не является узким местом..
https://youtu.be/5TtOQQAtt3A
Прочитай закрепленый коммент под сабжевым видео. Это не есть нормально скопилированеый исходный программный код.
Нормально скомпилированная игрушка вот в этом примере: https://youtu.be/5TtOQQAtt3A
Нет времени смотреть видос… А исходники Сталкера для компиляции в нативный код эльбруса они где взяли?
Дайте угадаю, игру запустили в режиме двоичной трансляции?
А давайте сравним как интел будет тащить реалтайм трансляцию сталкера в кодах иксбокса например…
«Движок портирован в режиме „интерпретатора“ — ahead-of-time шаблонного компилятора с внутренним предствавлением на псевдоассемблере....»
Там этот код можно раз в 15 оптимизировать…
https://youtu.be/5TtOQQAtt3A
И игрухи современные вполне нормально тянет при наличии правильно скомпилированных исходников.
https://youtu.be/5TtOQQAtt3A
https://youtu.be/5TtOQQAtt3A
1) Движок портирован в режиме «интерпретатора» — ahead-of-time шаблонного компилятора с внутренним предствавлением на псевдоассемблере.
2) Проект выложен в открытый доступ за исключением кодогенератора, с предгенеренным кодом на github-е: github.com/helce/LuaJIT
3) Порт достаточно медленный в виду архитектурных особенностей движка, т.к. используется рандом-доступ к шаблоном с вычислением адреса каждого следущего и хранение всех операндов и результатов операций в памяти. Т.е. для выполнения простейшей операции a = b, требуется загрузить операнды из памяти, вычислить a, записать в память, вычислить адрес следующего шаблона, подготовить операнды и передать управление. В итоге заместо одного такта получается в районе 20 в «хорошем случае» и сотни в случае кэш-промахов. На интелах подобная модель может работать относительно быстро, т.к. планированием всего этого счастья будет заниматься процессор, на эльбрусе такое же не прокатывает.
4) По моим расчетам можно сделать минимум раз в 10-15 быстрее, если переписать механизм взаимодействия шаблонов на использование «шаблонных лент», с записью в память только на переходах. Это и jit-итить имеет смысл, т.к. код получится связанный. И планирование будет в разы лучше. По крайней мере тестовый компилятор brainfck получился довольно быстрым (на нем отлаживал кодогенератор dynasm).
5) Однако это довольно большой объем работы, а т.к. у автора luajit не то что документации нет, а даже с комментариями в коде беда, проще с нуля написать. Но боюсь у меня нет столько свободного времени.
6) Jit-а в текущих реалиях не планируется, т.к. толку от него будет мало, да и запрещено пока публиковать opcode-ы, а кодогенератор то на lua написан и будет требовать установки на машину.
7) Ошибки все еще присутствуют минорные, т.к. тестов конкретно luajit немного, а api отличается от ванильного lua-5. Несколько ошибок удалось отловить как раз на openxray.
https://youtu.be/5TtOQQAtt3A
«Движок портирован в режиме „интерпретатора“ — ahead-of-time шаблонного компилятора с внутренним предствавлением на псевдоассемблере.»
Движок портирован в режиме «интерпретатора» — ahead-of-time шаблонного компилятора с внутренним предствавлением на псевдоассемблере…
И далее по тексту закрепенного ко мента а данном видосе
…
«Движок портирован в режиме „интерпретатора“ — ahead-of-time шаблонного компилятора с внутренним предствавлением на псевдоассемблере… „
https://youtu.be/5TtOQQAtt3A
Нормально скомпилированная игрушка вот в этом примере: https://youtu.be/5TtOQQAtt3A
https://youtu.be/5TtOQQAtt3A
Просто надо уметь дорабатывать напильником программный код…
Дайте угадаю, игру запустили в режиме двоичной трансляции?
А давайте сравним как интел будет тащить реалтайм трансляцию сталкера в кодах иксбокса например…