Jump to content

поддержка инструкций разных CPU


Recommended Posts

привет. первый день узнал про вас и посмотрел бенчмарки - в топе интелы , амдшные вообще слив, а я поднимал тему поддержки процессоров и для юнити и для анрила.
у меня гипотеза, что в основном заточка двжика и даже языковых сдк идёт в основном под интеловские процы, в то время как те же амд имели 64-битные инструкции 20 лет назад, а интел клепали 32бит процы - поэтому виндовоз был в двух исполнениях многие годы. Смысл, что амдшные инструкции не используются по полной и движки не оптимизируются. я эту тему расписал тут https://forums.unrealengine.com/t/cpu-gpu-profiler/1338092 . пока что не понял какая у вас совместимость - q2/bsp или ue/pak , но вообще оно под мобилы умеет готовить ? потому что это важная тема в геймдеве и это снова тема процов и поддержки гэпэу тоже и вот об этом тоже расписано в профайлере, что можно создать промежуточный слой для исполнения инстукций под конкретный проц, как виртуальная машина примерно, но можно проще сделать.

такая вот идея.

как пример - я поставил вашу СДК и там пришли библиотеки .net8 в принципе они должны быть у меня на w10 22H, но вот я поставил и у меня комп завис, один раз, второй, наверное и третий будет, но я лучше снесу эти библиотеки . скорее всего у меня была 8.0.8 или 8.0.4 а вы воткнули 8.0.1 - конечно у меня слетит всё / Заново последний SDK накатил, вроде нее ребутает. мы же все понимаем, что это простая проверка ?

Чтобы сделать промежуточный блок команд - по сути это как openGl или Vulkan / DirectX только туда нужно включить процессорные команды и связку с ГПУ. Потому что часть команд вообще может ГПУ на себя взять, если их нет в проце и эмулировать вообще любой слой. Значит если есть список необходимых команд - то для них можно создать базу аналогов / замен / либо оптимизированных костылей. 

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

FlatPak видимо по такой же схеме примерно реализован, но в общем случае как ядро линукса, которое точится под железо. или если исполльзовать minGW - это как аналог костылей под виндовоз будет, но на самом деле системы более стандартизованы, но имеют различия даже на уровне  winXp / win7 / win11.

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

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

Edited by oeaixy
Link to comment
×
×
  • Create New...