Pull to refresh
5
0
Андрей@uxgen

фрилансер (c++, vulkan, оптимизация)

Send message

По спекам видеокарты давно могут рисовать однопиксельные треугольники в 5К 60фпс. Чтение текстур и расчеты тоже дешевые. Но почему-то все тормозит и требует 16гб памяти.

Только llama не работает с NPU, остается только посчитать TOPS на CPU и GPU.

Но для локального запуска все равно лучше NV на 16гб, стоит не дорого, токенов/с в десятки раз больше, а с помощью разбиения задачи на мелкие куски и небольшой контекст не проблема.

Со старыми играми тоже не очень, где-то с 2010 слишком нагруженные постэффекты которые плохо подходят для тайловой архитектуры. Дешевые АМД на RDNA2-3 в этом случае намного лучше и стабильнее.

В общем железка интересная, но нормального ПО под него нет и не скоро будет.

Какой "такой"

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

Есть еще вариант SIMD/SIMT - когда одна инструкция выполняется для набора данных, такие вот виртуальные потоки с возможностью дешевого чтения регистров соседних потоков, что позволяет наплохо так оптимизировать математику.

Система тасков и корутины уже большой шаг к такой многопоточности. В зависимости от количества потоков выполняющих задачи и будет однопточные или многопоточные программы. Проблема только в устаревших ОС и устаревшей кодовой базе, включая популярные либы.

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

По использованию SIMD https://gdcvault.com/play/1022248/SIMD-at-Insomniac-Games-How

По оптимизации по L2 идея в том, чтобы загрузить часть данных в L2 и прогнать все системы для них, затем загрузить следующую часть. Аналогично работают тайловые ГПУ на мобилках.

Оптимизации примитивные, проблема продумать архитектуру, чтобы эти оптимизации можно было использовать.

Про такие оптимизации расказывали еще на GDC 10 лет назад. Утеряные технологии древних) Сейчас оптимизация по L2 есть в MASS для UE.

А зачем нужно оптимизировать по L2 можно убедиться если нагрузить RAM всего одним потоком и посмотреть как работает встройка. На дешевых интелах у меня получались лаги в 100-200мс на каждый кадр.

Не совсем правильно сравнивать производительность с другими либами. По научному нужно считать флопсы и Гб/с. Мой ECS прототип использует L2 кэш и AVX512 за счет этого в 1000 раз быстрее entt.

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

Я вот вижу как ядер в ЦП становится все больше, скорость работы огромная, а большинство программ все также тормозят и используют один поток, потому что не тянут многопоточку и оптимизации. Теперь появились нейронки, которые можно распараллелить на все нейроядра, больше не нужено писать сложный код, сложную многопоточку, какой-нибудь фреймворк сам распланирует выполнение мелких нейросеток, нужно их только обучить и задать конечные состояния.

В новых ЦП более быстрая DDR5 и более широкий PCIE4/5, за счет этого данные быстрее попадают на ГПУ и лоды быстрее подгружаются. Но заметно это только при быстром перемещении.

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

Я делал автоматизацию скриншот тестов рендера на андроид. Сделал отдельное приложение которое скачивает .so, запускает тесты и отдает логи и скриншоты. Может работать даже в фоне, не нужно подключаться по usb.

Сейчас даже фильтрацию текстур не нужно поддерживать - придумали стохастическую, читается один пиксель за кадр. Поддержка сжатых форматов не нужна - придумали расжимать на тензорных. Тригонометрия и прочие SFU не нужны - научились считать PBR на тензорах.

Учитывая как NV внедряет тензоры в графику так скоро и GPU не понадобится, все на тензорах будет считаться)

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

Я заметил что RADV драйвер на линуксе работает быстрее AMDшного. Вот если его портируют на винду, тогда можно будет сравнить влияние ОС.

Половина статьи про UB и проблемы использования. На самом деле все не так плохо, достаточно полностью переделать архитектуру и корутины заработают без боли и страданий)

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

Когда-то выбрал AngelScript и поначалу все было нормально, но потом вылезли баги в Linux/Android, долго добавляли Mac на arm. В итоге решил что скрипты будут только для ускорения разработки.

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

Тест ни о чем, видно же что частоты ГПУ разные. Надо было выставить фиксированные частоты и потом тестировать.

Мне заплатили премию спустя полгода после увольнения. Только эта была крипта компании и на момент выплаты стоила $200, спустя пару месяцев уже $0.001. Все что нужно знать про премии криптой)

Хотя на премию битками я год жил пока восстанавливался после травмы)

1
23 ...

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity