Санкт-Петербургский государственный университет
Опубликован: 24.10.2012 | Доступ: свободный | Студентов: 8672 / 1178 | Оценка: 4.00 / 4.00 | Длительность: 05:26:00
Специальности: Системный архитектор
Лекция 2:

Инструменты Intel для оптимизации и отладки Android-приложений

3.4. Intel Graphics Performance Analyzers

Разработчики графических приложений хорошо знают, как важны в их работе удобные средства по анализу построения кадра и производительности рендеринга (отрисовки кадра). Современные графические приложения очень сложны, и со временем эта сложность только увеличивается. Для того, чтобы программисты оптимально использовали возможности устройств, им нужны утилиты, помогающие обнаруживать ошибки и узкие места в их приложениях, ограничивающие производительность.

GPU (Graphics Processing Unit – графический процессор) и CPU (Central Processing Unit – центральный процессор) в пределах каждого кадра выполняют множество различных операций графического конвейера, и общая производительность зависит от наиболее медленного участка. Именно поэтому удобные средства отладки так важны, ведь разобраться в сотнях вызовов функций, происходящих за несколько миллисекунд, без соответствующих инструментов очень сложно.

Intel Graphics Performance Analyzers (GPA) состоит из набора программных средств, предназначенных для мониторинга производительности и отладки графических программ и компьютерных игр. Данная версия состоит из программы мониторинга реального времени – Intel System Analyzer, и программы анализа и отладки перехваченных графических фреймов – Intel Frame Analyzer. Важно, что данные программы не требует перекомпиляции или какого-либо предварительного инструментирования графического приложения, все необходимые вмешательства делаются в момент запуска. Инструмент Intel Platform Analyzer визуализирует профиль выполнения CPU- и GPU-задач, но в отличие от System Analyzer и Frame Analyzer он может потребовать изменения исходного кода приложения.

Все компоненты Intel GPA построены на основе сетевой удаленной отладки. Это означает, что на целевой машине, где планируется запускать приложение, также должно присутствовать специальное приложение-агент (Intel GPA Server). Клиентские приложения Intel System Analyzer и Intel Frame Analyzer запускаются на удаленной машине и связываются с сервером по сетевому протоколу TCP/IP. Главными преимуществами удаленной отладки являются:

  • Точность измерений. Клиентское графическое приложение, как правило, довольно требовательно к ресурсам процессора и памяти, что в некоторых случаях может приводить к вытеснению и замедлению профилируемого приложения. Удаленная отладка решает эту проблему, профайлер, физически находясь на удаленном хосте, не может внести искажений в работу приложения.
  • Улучшенная эргономика и графический интерфейс профайлера. Совмещение полноэкранного графического приложения и GUI (Graphical User Interface – графический интерфейс) профайлера накладывают серьезнейшие ограничения на компоновку и эргономику пользовательского интерфейса. В результате часто страдает разработчик, вынужденный изучать детали картины сквозь набор графиков, нарисованных поверх приложения. При разработке Intel GPA разработчики сознательно выносят профайлер на удаленный терминал для удобства визуализации и управления.
  • Возможность совместного использования оборудования несколькими разработчиками.

Текущая версия продукта (2012 R4) разработана для устройств на базе процессора Intel и поддерживает различные операционные системы. В следующей таблице представлены поддерживаемые платформы:

Клиентская ОС Целевая ОС Графический API приложения
Microsoft Windows 7/8 Microsoft Windows 7/8 Microsoft DirectX (версия не ниже 9)
Microsoft Windows 7/8 Google Android OpenGL-ES
Ubuntu Google Android OpenGL-ES

Рассмотрим подробнее каждую из утилит, входящих в пакет.

Intel GPA Monitor.

Работа по анализу и отладке приложения начинается с инструмента Intel GPA Monitor. С его помощью происходит запуск анализируемого приложения (Рис. 3.9) и осуществляются настройки Intel GPA System Analyzer HUD (Head-Up Display).

Intel GPA System Analyzer.

Intel GPA System Analyzer предназначен для мониторинга в реальном времени различных параметров приложения. Данный инструмент предоставляет разработчику возможность следить за FPS (Frame Per Second – кадровая частота) приложения и визуально сопоставлять падение FPS c показаниями графиков, отражающих различные параметры DirectX, CPU или GPU. Поддерживаются три уровня детализации графиков. Разработчик может оценить степень зависимости приложения от CPU или GPU, эффективность распараллеливания (баланс загрузки различных CPU ядер), посмотреть, что происходит в вызовах DirectX (Рис. 3.10).

Intel GPA Monitor

Рис. 3.9. Intel GPA Monitor
Intel GPA System Analyzer

Рис. 3.10. Intel GPA System Analyzer

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

  • Вершинный шейдер оперирует данными, сопоставленными с вершинами многогранников. К таким данным, в частности, относятся координаты вершины в пространстве, текстурные координаты, тангенс-вектор, вектор бинормали, вектор нормали. Вершинный шейдер может быть использован для видового и перспективного преобразования вершин, генерации текстурных координат, расчета освещения и т. д.
  • Геометрический шейдер, в отличие от вершинного, способен обработать не только одну вершину, но и целый примитив. Это может быть отрезок (две вершины) и треугольник (три вершины), а при наличии информации о смежных вершинах может быть обработано до шести вершин для треугольного примитива.
  • Пиксельный шейдер работает с пикселями изображения, которым поставлен в соответствие некоторый набор атрибутов, таких как цвет, глубина, текстурные координаты. Пиксельный шейдер используется на последней стадии графического конвейера для формирования фрагмента изображения.

Intel GPA System Analyzer позволяет проводить эксперименты на живом, работающем приложении. В качестве наиболее популярных и показательных экспериментов реального времени следует отметить:

  • Wireframe (Рис. 3.11) позволяет визуально оценить геометрическую сложность сцены и моделей.
  • Simple Pixel Shader – подмена шейдеров на простейший: к каждому пикселю сцены применяется один и тот же пиксельный шейдер, который перекрашивает пиксель в определенный цвет. Это позволяет оценить прирост FPS и роль шейдеров в финальной производительности.
    Эксперимент реального времени Wireframe

    Рис. 3.11. Эксперимент реального времени Wireframe
  • Overdraw Visualization – визуализация перерисовки пикселов позволяет градациями серого показать степень перерисовки пикселя для визуальной оценки эффективности Z-отсечения.
  • Null Driver – отключение драйвера позволяет оценить вклад драйвера в общее падение производительности.
  • 2x2 Texture – упрощение текстур: вместо всех загруженных приложением текстур используются текстуры размером 2x2 пикселя. Это позволяет оценить сложность и ресурсоемкости текстур.
  • 1x1 Scissor Rect – все пиксели, прошедшие пиксельную обработку, отбрасываются, не отрисовываясь.
  • Cull Counter-Clockwise / Cull Clockwise отрисовывает только те треугольники, которые ориентированы к наблюдателю / от наблюдателя. Эти режимы полезны для определения проблемных мест при неверной отрисовке сцены.
  • Disable Alpha Blending (Рис. 3.12) отключает альфа-смешивание, то есть использование альфа-канала (дополнительного канала в изображении для создания эффекта прозрачности).
    Эксперимент реального времени Disable Alpha Blending

    Рис. 3.12. Эксперимент реального времени Disable Alpha Blending

С помощью Intel GPA System Analyzer можно останавливать приложение. Используя остановку, разработчик может "поймать" нужную сцену или эффект для последующего перехвата интересующего графического кадра. Intel GPA System Analyzer позволяет перехватить и записать текущий фрейм (Рис. 3.13) для последующего детального анализа в программе Intel GPA Frame Analyzer. Перехват предусматривает сохранение всех вызовов DirectX и всех используемых приложением графических ресурсов.

Intel GPA Frame Analyzer.

Intel GPA Frame Analyzer является важнейшим инструментом для детального изучения структуры перехваченного фрейма (работа производится с одним кадром). В основе представления информации о фрейме лежит концепция DirectX команд, выполняющих работу на GPU. В Intel GPA такие команды названы термином Эрг (Erg). Большинство Эргов представляют собой функции рисования (Draw Calls) библиотеки DirectX. Intel GPA Frame Analyzer позволяет воспроизвести (проиграть) все Эрги с целью определения их длительности и их вклада в суммарное время фрейма (Frame Time).

Выбор перехваченного кадра для анализа в Intel GPA Frame Analyzer

Рис. 3.13. Выбор перехваченного кадра для анализа в Intel GPA Frame Analyzer

В Visualization Panel отображается гистограмма, наглядно представляющая продолжительность Эргов (Рис. 3.14). Предусмотрена возможность изменять единицы измерения по осям X, Y. Проблемные этапы обработки сцены наиболее четко видны в виде X: GPU Duration Y: GPU Breakdown (по оси X откладывается время выполнения Эрга, по оси Y – детализированное время выполнения, то есть время выполнения пиксельных, вершинных и геометрических шейдеров).

Гистограмма продолжительности эргов

Рис. 3.14. Гистограмма продолжительности эргов
Несипбай Сагыныш
Несипбай Сагыныш
Сергей Петров
Сергей Петров