У меня есть приложение Metal на iOS, в котором я беру видеокадры и передаю каждый кадр через несколько шейдеров, некоторые из них являются вычислительными шейдерами, применяемыми за несколько проходов, а 4 из них являются независимыми MTKView, которые отображают вычисленные текстуры (например, гистограмму) вместе с предварительным просмотром видео. . Иногда (но не всегда) на более старом оборудовании, таком как iPhone 6s, я замечаю, что приложение стало слишком медленным, частота кадров упала до 1 или 2 кадров в секунду. Пожалуйста, дайте мне знать, как отлаживать, какие шейдеры Metal забивают GPU / GPU и как оптимизировать производительность кода, связанного с Metal.
Отладка производительности металла
comment
Телефон становится особенно горячим при падении частоты кадров до 1 или 2 кадров в секунду?
- person Matthijs Hollemans   schedule 18.05.2018
comment
Нет, ничего подобного. Иногда частота кадров возвращается к норме примерно через 20 секунд.
- person Deepak Sharma   schedule 18.05.2018
comment
Можете ли вы указать мне список инструментов отладки и профилирования для Metal и любые статьи / видео, в которых показано, как их использовать?
- person Deepak Sharma   schedule 18.05.2018
comment
Посмотрите видео о металле с прошлогодней WWDC. Они есть на сайте Apple.
- person Matthijs Hollemans   schedule 18.05.2018
comment
Я проверил их, но похоже, вам нужно посмотреть другие видео, прежде чем вы сможете полностью их понять. Я не могу найти другие видео.
- person Deepak Sharma   schedule 19.05.2018
comment
Небольшое примечание: вы не сможете запускать вычислительные шейдеры на A7 и обрабатывать видео достаточно быстро, чтобы не отставать от полноэкранного видео со скоростью 30 кадров в секунду. Даже фрагментные шейдеры могут быть слишком медленными на A7, хотя A8 и более новые графические процессоры достаточно быстры для выполнения рабочих нагрузок вычислений видео.
- person MoDJ   schedule 10.09.2018
Ответы (1)
- Запустите ваше приложение в Xcode.
- Выберите Debug -> Capture GPU frame.
- Выберите "Навигатор проблем" на левой панели инструментов.
- Выберите время выполнения
- Устраните перечисленные проблемы, как минимум, с «высоким» приоритетом.
- Вы также можете увидеть, на что расходуется производительность, посмотрев
drawPrimitives
и т.д. раз в навигаторе отладки слева.
Чтобы просмотреть сведения о производительности шейдера, выберите вызов отрисовки или отправки из списка событий слева. Есть раздел «производительность».
person
SurvivalMachine
schedule
27.05.2018
@DeepakSharma Я обновил свой ответ, чтобы отобразить дополнительную информацию о производительности.
- person SurvivalMachine; 27.05.2018
Где именно я нахожу раздел производительности? Я не вижу кодировщика команд вычислений на левой панели. Только команды рендеринга!
- person Deepak Sharma; 27.05.2018
Я вижу это на устройствах iOS 11, но не на iOS 10 :(
- person Deepak Sharma; 27.05.2018
Я думаю, это связано с выполнением вычислительного шейдера во время захвата кадра графическим процессором!
- person Deepak Sharma; 27.05.2018