ChimbaBench v2.2: На сцену выползает новая сцена
Однажды в комментариях под какой-то из моих статей кто-то сказал что мой проект тупик, возможно этот комментарий был удалён спустя некоторое время, ибо я его не смог найти повторно, но суть в принципе запомнил.
реклама
Что сказать, рано или поздно любой проект станет тупиком, в том числе и мой проект, но кого это волнует? Меня это вообще не волнует, ибо мой проект будет работать даже если все репозитории исчезнут так как портативен, просто беру хороший пример с софта для Windows:
Первым делом небольшой рефакторинг кода:
![]() |
![]() |
реклама
Вторым делом проверка на работоспособность в дистрибутиве Trisquel 11 KDE, сегодня я в одном дистрибутиве тестирую, а завтра уже в другом, причём без доступа к интернету, просто копирую с "флешки" и запускаю как нормальное приложение:
![]() |
![]() |
![]() |
А вот дальше я отлучился на некоторое время, но вернувшись экран дистрибутива оказался заблокирован, хотя отключал блокировку экрана при отсутствии активности, ох уж эти линуксы... Конечно проблему с блокировкой экрана исправил расковыряв изначально спрятанные настройки, но это не самое интересное, что произошло.
Да, я ковырял оформление дистрибутива, чтобы исправить убогие часы в панели задач... Но размер убогих часов я так и не смог сделать нормальным, при этом у меня появилось пустое место между значками, и это оказался "update-notifier", интересно, зачем он вылез, интернет всё равно ведь не подключен...
![]() |
![]() |
Чисто ради объективности сравню часы в дистрибутиве Linux с часами в Windows, такое ощущение, что разработчики дистрибутивов намеренно делают такие базовые вещи как "часы" максимально отвратительными, чтобы люди попробовали и убежали обратно к Microsoft, хотя в данном случае не только часы выглядят максимально "колхозно" и убого по сравнению с Windows:
реклама
По итогу хвалёная кастомизация линуксов лишь на словах хороша, в реальности сами видите что из этого выходит, куда не плюнь везде какая-то дичь творится, ну да ладно, вернёмся к ChimbaBench.
Теперь нужно исправить баг с сохранением текстовой информации в среде Windows, откуда этот баг взялся? Всё просто, функция Godot выводящая текущую дату и время по стандарту ISO8601 выдает время с двоеточием в качестве разделителя, а двоеточие нельзя вписать в имя файла.
И это довольно серьёзная проблема Windows, хотя многих это не волнует, но решение проблемы весьма простое, я заменю двоеточие на точку с запятой, хотя это и нарушение стандарта ISO8601:
реклама
Это действительно выглядит это так себе...
В итоге было решено сделать для Windows точку с запятой, а для Linux оставить двоеточие, это пожалуй лучший вариант на текущий момент:
А дальше я снова принялся за работу над кодом, есть у меня кое-какие идеи, но их реализовать будет крайне тяжело пока не будет порядка в ассоциативных массивах указывающих на элементы интерфейса:
А вот и первые плоды моих "оптимизаций", теперь шрифты назначаются только элементам интерфейса с текстом, да и количество лишнего кода явно уменьшилось:
![]() |
![]() |
Сохранение и загрузку локализации я тоже подрежу, у меня есть идеи как реализовать данный функционал "немного" иначе, но это уже в следующих версиях проекта:
Пройдясь по коду и сократив лишнее у меня получилось нечто такое (было - стало):
![]() |
![]() |
Пока что хватит "оптимизировать" код, пользователи всё равно не увидят разницы между целой страницей и парой строчек кода, а вот разница в расположении элементов весьма заметна (было - стало):
![]() |
![]() |
![]() |
![]() |
Не обошлось и без доработок слоя с информацией о тестовой сцене и системе пользователя, я убрал массив кода с фиксированными значениями при диапазоне разрешений и заменил на динамическое изменение размера в зависимости от текущего разрешения отрисовки.
И да, при разрешении по ширине 640 пикселей или меньше размер шрифта фиксируется на значении 16, иначе плохо видно текст при столь низком разрешении:
![]() |
![]() |
![]() |
![]() |
Естественно окно с результатами тоже было немного переработано и зафиксировано при низком разрешении.
Но сейчас я обращаю внимание на другой нюанс, я разрабатывал интерфейс с таким расчётом, чтобы вся информация была читаема даже если скриншот будет сжат в низком качестве JPEG, что позволяет хранить результаты даже в сильно сжатом формате:
![]() |
![]() |
Конечно, при нулевом качестве JPEG сложно разобрать текст, но при качестве 10 единиц уже вполне нормально можно различить абсолютное большинство информации даже в разрешении 640x360, а в разрешении 1280x720 уже при качестве в 5 единиц текст можно прочитать, а при 10 единицах качества и вовсе текст отлично читаем, и это хорошо:
![]() |
![]() |
![]() |
![]() |
Точно, тест Simple Box надо бы сделать более простым для видеокарт, убрать parallax mapping, зеркальность и все лишнее, так гораздо лучше, кубик должен быть простым, и он теперь простой:
А для создания тяжёлого теста производительности я посматриваю в сторону вот этого:
Пока ещё не знаю что именно возьму в качестве тяжёлого теста для видеокарт, или с нуля создам сцену новую, в любом случае что-нибудь придумаю... Но сейчас была решена проблема размазанной текстуры, как и во многих "попен-сорс" проектах, в Godot Engine нельзя просто взять, и изменить уровень анизотропной фильтрации:
У каждой текстуры при импорте нужно выставлять галочку "Anisotropic" и импортировать заново:
А после перезапускать приложение целиком, иначе никакого эффекта от изменения настроек анизотропной фильтрации не будет:
![]() |
![]() |
![]() |
К сожалению я не нашёл простых костылей для изменения уровня анизотропной фильтрации без перезапуска прямо во время работы, потому добавил кнопку "Save and restart":
А ещё перенёс кнопку выбора шрифта в раздел для теста шрифтов, логично ведь чтобы эта кнопка была именно здесь:
И снова поработал над окном "About", добавил несколько кнопок для переключения разной информации и оформил всё более прилично, осталось только наполнять информацией:
![]() |
![]() |
![]() |
![]() |
Что-то я совсем позабыл про новую сцену...
Прежде чем начать работу над новой сценой для разнообразия я взялся за сборку Stable Diffusion WebUI v3, меня просили прикрутить xformers, и было решено полностью обновить сборку собрав вместе с тем самым xformers. Разработчики Web UI явно поправили ряд противных проблем, и за это моё уважение им, хотя зависимости от этого никуда не исчезли, но мои сборки как раз и предназначены для того, чтобы изначально зависимый софт стал независимым и пригодным для нормального свободного использования.
А ещё я не обнаружил никакой прибавки к скорости от xformers, может быть это будет заметно при более высоких разрешениях и с более новыми видеокартами чем GTX 1070, или разница выйдет в количестве потребляемой памяти, но это будет видно когда новую сборку приведу в удобное для использования состояние и поэкспериментирую:
![]() |
![]() |
![]() |
В общем я работаю над новой версией сборки SD WebUI.
Но ещё нужно поработать и над бенчмарком... Так как я решил добавлять новые сцены, то и модуль тестирования нужно сделать универсальным, и я сделал такой модуль (Bench60), вот теперь можно и над самой сценой работать:
Вообще хорошо бы реализовать функционал подключения пользовательских сцен для тестирования, но думаю для версии 2.2 это уже будет перебор, так что оставлю для будущих версий ChimbaBench если не передумаю вообще добавлять такое...
Ещё немного работы над интерфейсом, добавил кнопку информации о тесте, и теперь уж точно пора бы начать создавать тестовую сцену:
![]() |
![]() |
В итоге я наконец начал работать над самой сценой, и понял что не смогу быстро реализовать задуманное:
![]() |
![]() |
Впрочем, думаю пора на этом завершать ChimbaBench версии 2.2, новая сцена конечно "вышла" на сцену, но пока только в зачаточном состоянии, хотя уже в текущем состоянии новый тест GPU Heavy настолько тяжёлый, что Ryzen 7 2700X в виртуальной машине через LLVM уже не способен даже один кадр в минуту выдать, так что да, без видеокарты тест GPU Heavy нет смысла запускать:
А ещё я обнаружил забавный нюанс, включение стороннего оверлея MSI Afterburner загружает один поток процессора почти на полную, этот нюанс хоть и не влияет на FPS в случае тяжёлого теста, но может ввести в заблуждение неопытных людей увлекающихся сравнительным тестированием, как следствие такую нагрузку на процессор могут списать в сторону бенчмарка, хотя бенчмарк в этом не виноват:
![]() |
![]() |
Пожалуй на этом хватит, результаты теста GPU Heavy v0.5 в разрешении 360p и 720p без сглаживания и с 16x MSAA, довольно не густо, всего 404 CPs в 360p без сглаживания, и ~329 CPs в 720p без сглаживания, а со сглаживанием в 720p и вовсе моя видеокарта вытянула всего на ~253 CPs:
![]() |
![]() |
![]() |
![]() |
Конечно, текущая версия теста GPU Heavy хоть и нагружает видеокарту, но далеко не полностью, потому использовать как стресс тест мой бенчмарк пока не выйдет, но это дело поправимое, а пока закончу работы над ChimbaBench версии 2.2:
![]() |
![]() |
![]() |
![]() |
![]() |
Найти новую версию ChimbaBench можно в репозитории GitHub, совершенно бесплатно без СМС:
( https://github.com/Shedou/ChimbaBench ).
А мне пора продолжать работу над третьей версией портативной сборки Stable Diffusion WebUI Neuro, а после над новой версией ChimbaBench... Раз уж заговорил про SD WebUI, то оставлю ссылку и на полезные сборки Neuro:
( https://github.com/Shedou/Neuro ).
На момент публикации текущей статьи скорее всего новой версии сборки SD WebUI в репозитории не будет, всё же нужно ещё немного протестировать, упаковать и загрузить в репозиторий с помощью мобильного интернета, а этот процесс не быстрый. Но ссылку оставлю заранее так как не думаю что буду писать отдельную статью ради новой версии сборки Stable Diffusion Web UI Neuro.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила