ChimbaBench: Начинаю разработку простого в использовании бенчмарка для Linux
Предисловие
Чего стоит пользователю запустить бенчмарк в среде Windows? Правильно, достаточно просто иметь папку с приложением и запустить исполняемый файл, хоть с USB накопителя:
реклама
Чего стоит запустить бенчмарк в среде Linux? Правильно, целый геморрой на голову пользователя с тоннами зависимостей, да еще и разные пляски с бубном в разных дистрибутивах...
А потом, когда пользователь наконец совсем устанет, и решит обратиться за помощью к "сообществу", из унитаза раздадутся вопли линуксоидов: Они будут вопить и кричать во весь голос, какой пользователь криворукий и тупой, не может всё настроить и установить, да и вообще, раз не работает - значит не нужно.
реклама
Так вот, уже давно пора бы закопать это убожество линуксоидное с репозиториями и зависимостями, хотя если честно, линуксоидов явно не интересует независимость и свобода...
О глупости и неадекватности линуксоидов можно бесконечно говорить, но некоторые экземпляры весьма показательны, один такой экземпляр я даже не постесняюсь показать.
Вот оно, сами ничего не могут нормально сделать, и другим мешают:
реклама
Как думаете, почему под Linux разработчики не горят желанием разрабатывать софт? Болото зависимостей ещё ладно, его можно обойти, что я уже давно доказал на примере Chi Calculator:
Chi Calculator 2.2: Именно таким должно быть ПО для Linux (Desktop)
Но совсем другое дело когда линуксоиды препятствуют разработке софта, порой открыто заявляя "похейтим и там его", да чего уж там, они даже Godot Engine поносят, хотя это один из редких проектов, который действительно адекватен в плане запуска и распространения, и не зависит от помойки убогих дистрибутивов, хоть на USB накопитель можно скопировать и разнести по десятку систем без доступа к интернету:
реклама
Нет смысла продолжать говорить о линуксоидах, спасибо им конечно за "копейку на доширак", в том числе за интересные идеи для статей, например создать статью из одних комментариев, много стульев обуглилось тогда...
В общем, пора бы перейти к следующему разделу статьи, хотя, один момент, я про кое-что вспомнил:
-
Chi Calculator
Немного расскажу про "калькулятор", который можно без плясок над бубном в большинстве случаев запустить не только в среде Windows и Android, но и в любых относительно исправных дистрибутивах Linux начиная с ~2013 года, и при этом не нужно выкачивать гигабайты зависимостей из интернета, как для всяких Kcalc:
Так вот, я все еще работаю над приложением, хотя по факту уже давно не обязан этого делать, и к текущему моменту калькулятор научился сохранять и загружать настройки в виде файла конфигурации.
Пока настроек мало, можно только изменить цвет фона, но опыт лишним не будет.
В данный момент я не собирал исполняемые файлы под разные платформы, ибо текущая версия калькулятора весьма "сырая", но исходный код время от времени обновляю в репозитории GitHub, особо нетерпеливые могут взять исходный код и сами собрать проект.
Репозиторий Chi Calculator: ( github.com/Shedou/Chi-Calculator ).
На этом собственно всё, хотя нет, линуксоиды наверняка будут кричать, что мой калькулятор плохо считает квадратный корень из пятнадцати значных чисел, так вот, вас заботит эта проблема? Вы и исправляйте, исходный код открыт, а я, разработчик калькулятора, довольно часто "на связи", баг ведь совсем маленький и простой, исправьте, предложите, и по возможности я займусь интеграцией исправления в калькулятор.
Или у вас, линуксоидов, вместо рук торчат "лапки" из попы? Действительно, очень показательно...
Или может мне нужно заплатить вам за то, чтобы вы соизволили исправить баг, который я в принципе не обязан исправлять, так как калькулятор уже давно выполнил изначально поставленную цель разработки? А может лучше закрыть код, сменить лицензию, и начать требовать деньги за запуск и использование софта...
А то разработал приложение, а линуксоиды еще требуют, чтобы я исправлял "маленькую ошибку", которую я не обязан исправлять от слова "совсем":
О чем я собственно и говорил еще в предисловии, не могут линуксоиды ничего нормально сделать, не способны даже исправить "маленькую ошибку" и предложить исправление имея буквально прямую связь с разработчиком.
-
--
ChimbaBench
Вот и настало время нового проекта, откуда взялось такое название? На самом деле было сложно придумать название, ведь многое уже занято другими людьми, порой весьма необоснованно, тем не менее, это не меняет того факта, что нужно было придумать нечто свободное...
В итоге я совместил свой псевдоним (никнейм), и часть от слова "benchmark", так и получилось ChimbaBench (Chimbal Benchmark), хотя у меня были и другие варианты забавные.
С названием разобрались, теперь разберемся с основой для нового бенчмарка.
Вообще для бенчмарка можно использовать всё что угодно, главное чтобы можно было посчитать количество проделанной работы за единицу времени, какая система быстрее сделает работу, та и быстрее, элементарно, по такому принципу игры превращают в бенчмарки с помощью утилит MSI Afterburner и т.п.
Так как я уже использую Godot Engine 3.5.2 для разработки Chi Calculator, то эту же среду разработки я могу использовать и для создания бенчмарка, если бы не один нюанс, вышел Godot Engine 4.0, и хотелось бы его опробовать, хотя я уже имел опыт с альфа и бета-версиями.
Но у Godot Engine 4.0 есть и недостатки относительно версии 3.5.x, проекты созданные с его помощью будут работать только при наличии поддержки OpenGL 3.3/ES 3.0, когда предыдущая версия Godot Engine позволяет создавать проекты требующие лишь OpenGL/ES 2.0.
Проще говоря, проекты разработанные в Godot Engine 4.0 имеют повышенные системные требования по сравнению с 3.5.x, для разработки приложений он уже не очень пригоден, ведь для простых приложений не нужен функционал OpenGL 3.3, а он будет затребован, что может негативно отразиться на совместимости со старыми видеокартами, или неполноценными драйверами, а неполноценные драйверы это серьёзная боль для Linux дистрибутивов.
Еще у Godot Engine 4.0 есть неприятности со сборкой для Android, минимальная поддерживаемая версия это Android 7.0, что весьма неприятно, ибо у меня есть вполне живой смартфон на Android 5.1 с процессором на 8 ядер 1.7 ГГц, Mali T760 MP2 с поддержкой OpenGL ES 3.0 / 3.1, и 2 ГБ LPDDR3 ОЗУ.
Будет весьма неприятно, если я не смогу запустить ChimbaBench разработанный в Godot Engine 4.0 на таком смартфоне...
Впрочем, используя Gradle можно снизить минимальную версию платформы до 21, а это Android 5.0, так что мои первые впечатления оказались не самыми лучшими, надеюсь никаких дополнительных "подводных камней" не всплывёт больше здесь.
Есть и плюс у Godot Engine 4.0, это поддержка Vulkan API, и это хорошо поднимает уровень производительности по сравнению с OpenGL, я это приметил ещё во время работы с версией Godot Alpha, но всё радужно только для пользователей Microsoft Windows.
К сожалению, для пользователей Linux всё очень печально, ведь как я уже отмечал, у Linux дистрибутивов есть большие проблемы с драйверами для видеокарт, что я лично ощутил когда владел видеокартой Sapphire Radeon R9 290 Tri-X, там даже с поддержкой OpenCL были серьезные проблемы, о поддержке Vulkan API можно было и не заикаться...
Конечно, владельцы видеокарт NVIDIA будут в более выгодном положении, ведь NVIDIA не бросает пользователей ущербных дистрибутивов Linux на произвол судьбы, и предоставляет адекватные драйверы, что позволяют использовать практически полный функционал видеокарт GeForce.
Так что я вполне смогу тестировать Vulkan версию бенчмарка в среде Linux (загружая вместо Windows), ибо у меня видеокарта MSI GeForce GTX 1070 AERO OC, так что владельцам видеокарт AMD могу лишь посочувствовать, хотя я и сам предпочитаю больше видеокарты AMD, но реальность всё расставляет на свои места, увы...
В общем, пора набросать первую сцену, и в процессе я обнаружил неприятный "подводный камень", Godot Engine 4.0 не поддерживает тени в режиме OpenGL, но обещают добавить в будущем, и это действительно крайне неприятный факт, ведь какая игра может обойтись без теней, а тем более бенчмарк?
Впрочем, 25 лет назад обходились ведь...
В любом случае я набросал сцену, этого пока достаточно, сейчас нужно собрать проект под разные платформы и протестировать.
В Godot Engine 4.0 явно поработали над поддержкой разных архитектур ЦП (хотя шаблоны экспорта для ARM и прочих пока недоступны), но в то же время меня очень напрягает OpenGL, который по факту я вряд ли буду использовать, а значит проект будет на Vulkan API.
Толку от поддержки разных архитектур ЦП, если дистрибутивы Linux не смогут запускать приложение по вине убогих встроенных драйверов для видеокарт AMD, версию которых даже сменить адекватно невозможно?
Я же не буду кричать на пользователей, какие они тупые бомжи и не могут заменить вполне еще производительную R9 280/290/390X (и массу других видеокарт) на RX 6800, или заставлять каждого пользователя с видеокартами серии HD7000/R7/R9 неистово плясать над терминалом прикручивая поддержку Vulkan API рискуя работоспособностью дистрибутива...
Это линуксоиды любят всех бомжами обзывать и криворукими при любой проблеме...
Хотя как показывает практика, не только у меня были серьезные проблемы с дистрибутивами Linux на современном ноутбуке, у меня были проблемы с MSI Alpha 15 (Ryzen 7 4800H + RX 5600M), тоже все дистрибутивы намертво висли и не загружались, только одна Ubuntu заработала едва, и то криво работала с монитором подключенным к дискретной видеокарте...
Так что даже современное "железо" не панацея от проблем с работоспособностью дистрибутивов Linux, а следовательно и проблем с поддержкой Vulkan API.
Потому я в крайнем замешательстве сейчас, ибо переход на Godot Engine 4 сильно увеличит "системные требования" и "порог вхождения" для конечного пользователя, старые дистрибутивы просто не смогут работать с Vulkan версией приложения, если я могу запустить Chi Calculator разработанный в Godot 3.5 даже на Ubuntu 13.04, то бенчмарк разработанный в Godot 4 уже смогу запустить только на современных дистрибутивах, которые способны на работу с Vulkan API...
И это действительно проблема, это огромная проблема, особенно если учесть и так мизерное количество пользователей в среде Linux, мой бенчмарк будет нормально работать в итоге только с Microsoft Windows, ибо там нет линуксоидного мракобесия, а я хочу, чтобы бенчмарк нормально работал в среде Linux.
Впрочем, можно несколько версий бенчмарка разрабатывать, для обычных пользователей на основе Godot Engine 3.5, и для извращенцев красноглазых на основе Godot Engine 4.0, которые не прочь потанцевать над бубном, чтобы прикрутить поддержку Vulkan API.
В любом случае мне нужно проверить работоспособность собранного проекта в режиме OpenGL, и скорее всего не будет смысла вообще работать в Godot Engine 4.0 с OpenGL... Ведь со сборкой под Android 5.0+ у меня уже возникли проблемы, а именно с Gradle, мало того, что пришлось выкачивать через мобильный интернет неизвестно сколько трафика, так еще и не собралось ничего:
В итоге я собрал проект для Windows, тут как по маслу, ничего удивительного:
Снова возвращаясь к Android я собрал уже без использования Gradle, на смартфоне Xiaomi MI8 проблем не возникло, все же минимальная версия Android 7.0, а у меня явно гораздо более новый Android:
А вот с дистрибутивами Linux возникли проблемы, на старых дистрибутивах даже OpenGL версия проекта не запустилась, хотя на современном дистрибутиве OpenGL версия без особых проблем запустилась, но Vulkan версия уже не запустилась в виртуальной машине...
Так что да, зря я полез в Godot Engine 4.0, Vulkan API конечно хорошо, но какая цена...
Я решил что будет две версии ChimbaBench, адекватная на основе Godot Engine 3.5, и для красноглазых извращенцев на основе Godot Engine 4.0, естественно результаты между разными версиями бенчмарка нельзя будет сравнивать, ибо будет совсем разный код, не говоря уже про разный API.
Естественно я создал и репозитории для проектов.
ChimbaBench (Godot 3.5, OpenGL): ( github.com/Shedou/ChimbaBench ).
ChimbaBench Vulkan (Godot 4.0, Vulkan): ( github.com/Shedou/ChimbaBench-Vulkan ).
Главной пожалуй будет "ChimbaBench" на основе Godot 3.5, а Vulkan версия уже будет по остаточному принципу, ибо я не вижу в ней адекватной совместимости с основной массой "железа ПК".
Здесь я уже выберу OpenGL ES 3.0, всё же это не простенький калькулятор, и мне явно будет мало возможностей OpenGL ES 2.0, это конечно повышает "системные требования", но не критично:
Да, драйвер в Ubuntu 13.04 не умеет работать с OpenGL 3.0 находясь в виртуальной машине, но технически даже на таком старом дистрибутиве будет работать, если он будет на реальном ПК с видеокартой поддерживающей OpenGL 3.0.
А Ubuntu 14.04 и в виртуальной машине без проблем запустила ChimbaBench в режиме OpenGL 3.0, потому не вижу смысла разрабатывать бенчмарк используя OpenGL 2.0.
-
--
---
Заключение
На этом я пожалуй закончу текущую статью, хоть и не написал код, но зато познакомился с Godot Engine 4.0, и если честно, он меня не обрадовал...
Я бы предложил разработчикам Godot Engine 4.0 забыть про совместимость с OpenGL, и сконцентрироваться на работе с Vulkan API, всё равно OpenGL у них работает через "пятую точку" и непригоден для нормального применения.
Зачем вообще OpenGL в Godot Engine 4.0, если Godot Engine 3.5 с этим API работает гораздо лучше? А так ни в одно не смогли полноценно, ни в другое.
Может быть со временем они прикрутят адекватно OpenGL, но есть ли в этом смысл при наличии Godot 3.5...
А что до моего проекта ChimbaBench, ясное дело я буду его разрабатывать на основе Godot Engine 3.5, ибо там есть адекватная поддержка OpenGL, но и Vulkan версию не собираюсь бросать, хотя у Vulkan версии не будет совместимости с OpenGL, ибо так намного целесообразнее.
Можно было конечно работать только над Vulkan версией ChimbaBench, но если заглянуть в статистику, можно заметить, что есть ещё очень много пользователей с разрешением экрана 1600x900, 1440x900, 1366x768 и 1280x720, глупо ожидать, что у всех этих людей в наличии есть видеокарта способная на работу с Vulkan API, я уже молчу о проблемах дистрибутивов Linux.
Прямо сейчас проект ChimbaBench в зачатке, и возможно на момент публикации этой статьи, в репозиториях не будет исходного кода проекта, но мои проекты всё равно ведь никому не нужны, так что не вижу проблем :)
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
Смартфон в поисках интернета...
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила