Инструменты intel для оптимизации отладки android-приложений. Intel Hardware Accelerated Execution Manager



Скачать 155.19 Kb.
Pdf просмотр
Дата10.12.2016
Размер155.19 Kb.
Просмотров159
Скачиваний0

2.

ИНСТРУМЕНТЫ INTEL ДЛЯ ОПТИМИЗАЦИИ ОТЛАДКИ ANDROID-ПРИЛОЖЕНИЙ.

2.1.

Intel Hardware Accelerated Execution Manager.
Каждый, кто работал с эмулятором для разработки Android-приложений, знает, что даже на современных компьютерах эмулятор загружается и работает очень медленно. Intel Hardware
Accelerated Execution Manager (Intel HAXM) – это решение данной проблемы, использующее аппаратные возможности виртуализации и позволяющее значительно ускорить работу эмулятора
Android.
Intel HAXM работает в паре с эмулятором для х86 устройств. При этом, виртуальное устройство будет работать со скоростью, приближенной к скорости работы реального устройства, что поможет сократить время на запуск и отладку приложения.
Прежде, чем установить Intel HAXM, необходимо убедиться, что компьютер удовлетворяет системным требованиям:

Процессор с поддержкой виртуализации (VT), Execute Disable Bit и инструкции EM64T. Чтобы узнать, поддерживает ли процессор перечисленнные возможности, можно воспользоваться сайтом ark.intel.com/

Как минимум 1 Гб, а лучше 2Гб оперативной памяти.

Intel HAXM поддерживает операционные системы Windows, Ubuntu и Mac OS.
Intel HAXM можно установить как вручную (скачав с сайта software.intel.com/ru-ru/android/), так и используя Android SDK Manager.
В процессе установки будет предложено определить объем выделяемой оперативной памяти.
Можно оставить значение, предложенное по умолчанию. Если в процессе работы потребуется изменить это значение, нужно просто запустить установку еще раз.
Также во время установки может возникнуть предупреждение о том, что виртуализация не включена. В этом случае нужно проверить настройки в BIOS, возможно, виртуализация поддерживается системой, но по умолчанию отключена.
Для того, чтобы проверить, что все установлено верно и работает, необходимо в командной строке выполнить: sc query intelhaxm
. После выполнения данной команды будет показан текущий статус службы (Рис. 2.1).
Рис. 2.1 В командной строке показан статус службы Intel HAXM.

Теперь необходимо создать новое виртуальное устройство с помощью AVD Manager. В окне свойств следует добавить обязательный параметр в раздел Hardware – GPU Emulation (Рис. 2.2).
Рис. 2.2 Окно свойств при создании нового эмулятора.
Осталось запустить и проверить, все ли настроено верно. Для этого нужно выбрать созданный эмулятор, запустить его и в настройках посмотреть название устройства. Если все было сделано правильно, то в поле Model number будет написано «Android SDK Build for x86» (Рис. 2.3).
Рис. 2.3 Окно настроек созданного эмулятора.

Теперь эмулятор начал работать быстрее, причем настолько, что можно прямо из него просматривать видео с Youtube в режиме реального времени, а не как раньше – в режиме слайд- шоу.
2.2.

Intel Energy Checker SDK.
Программы, особенно для мобильных устройств, могут и должны быть энергоэффективными, однако разработчики зачастую не уделяют этому показателю должного внимания. Для мобильных устройств большое значение имеет экономный расход электроэнергии, благодаря которому продлевается срок работы от аккумулятора. Поэтому пользователю предпочтительно использовать более энергоэффективные приложения. Зачастую разработчики приложений создают свои программы на настольных ПК, где показатели потребления электроэнергии намного менее существенны, чем производительность. Тем не менее, если не обращать внимания на вопросы потребления энергии, запуск программы на мобильном устройстве может обернуться для пользователя неприятной неожиданностью. Intel Energy Checker SDK измеряет количество работы, производимой системой, и соответствующее потребление энергии и позволяет тем самым определить, насколько эффективна система в части энергопотребления, и помочь в оптимизации приложения.
Уровень потребления, безусловно, является важным показателем энергоэффективности, но сам по себе он не дает полного представления о работе приложения. Малопотребляющие системы, выполняющие при этом малый объем полезной работы, могут быть менее эффективными, чем более мощные системы, способные осуществлять более значительные вычисления. Более того, даже в рамках одной системы не существует единой метрики – в зависимости от приложения ключевые показатели могут разниться. Intel Energy Checker SDK является гибким инструментом, позволяющим разработчикам проводить измерения и контроль энергоэффективности системы.
В Intel Energy Checker SDK широко используется понятие «энергоэффективность». Повсеместно принятого определения энергоэффективности не существует, но в Intel Energy Checker SDK используется следующее:
Энергоэффективность = Работа / Энергия
Под термином «работа» понимается объем полезной работы, выполненной приложением.
Простого, четкого и однозначного определения термина «полезная работа» также не существует; то, что считается полезной работой в одной программе, может не считаться таковой в другом приложении. Например, количество полезной работы, проделываемое платежным приложением, отличается от количества полезной работы, выполняемой приложением-видеосервером, программой доступа к базе данных или почтовым сервером.
Intel Energy Checker SDK API предоставляет доступ к показателям проделанной приложением полезной работы с помощью простой программной оснастки. Решение остается за разработчиком. Например, можно считать работу определенных компонентов программного видеопроигрывателя, выполняющих какую-либо работу для пользователя (например, декодирование видео), полезной работой, а действия других компонентов (получающих доступ к ресурсам, ожидающих ввода, выполняющих синхронизацию) не будут считаться полезными. Intel
Energy Checker SDK позволяет разработчикам определять, какие замеры «полезной работы» важны для конкретного приложения, и предоставляет доступ к ним с помощью простого API.

Intel Energy Checker SDK API предоставляет функции экспорта и импорта счетчиков в приложения. Счетчики хранят информацию о количестве событий или процессов, другие приложения могут считывать показания этих счетчиков и осуществлять действия на основе их текущих значений. Ядро Intel Energy Checker API состоит из пяти функций, которые позволяют открывать, повторно открывать, читать, записывать и закрывать счетчики.
Первым этапом использования
Intel
Energy
Checker
SDK для определения энергоэффективности приложения является создание и применение счетчиков, определяющих объем полезной работы в программе. Счетчик – это 8-байтовая переменная, в которой хранится количество возникновений определенного события. В языке программирования C для этого используется тип данных unsigned long. Разработчик может создать один или несколько счетчиков в ходе инициализации программного обеспечения. После этого можно создать контейнер для счетчиков, называемый «Productivity Link» (PL). Каждый PL может содержать до 512 счетчиков, одновременно может быть открыто до 10 разных PL, но для большинства программ будет достаточно гораздо меньшего числа счетчиков и PL.
Вторым этапом расчета энергоэффективности приложения является измерение объема энергии, израсходованной при работе программы. Для этого в Intel Energy Checker SDK применяются два средства, входящие в пакет SDK: Energy Server (ESRV) и Temperature Server
(TSRV). ESRV используется для отслеживания потребления электроэнергии по данным внешних измерительных устройств, а TSRV отслеживает показатели температуры по данным термодатчиков.
В состав Intel Energy Checker SDK, помимо уже упомянутых средств, входят еще две вспомогательные программы:

PL GUI Monitor – это пользовательский интерфейс (Рис. 2.4), отображающий счетчики PL в запущенной программе, совместимой с Intel Energy Checker API.

PL CSV Logger3 – это приложение, собирающее и записывающее показатели счетчиков PL в CSV- файл для дальнейшего анализа в программах обработки электронных таблиц.
Рис. 2.4 PL GUI Monitor.

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

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

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

Сокращение энергопотребления, когда приложение находится в состоянии простоя. Например, можно снизить частоту обновления таймера или настроить периодические действия таким образом, чтобы они все выполнялись в один и тот же период пробуждения системы.
Хотя изначально Intel Energy Checker SDK создавался для работы в дата-центрах, его можно использовать на клиентских или мобильных платформах. Он может работать в операционных системах Windows, Linux, Solaris и MacOS.
Несмотря на то, что изначально Intel Energy Checker SDK был призван облегчить анализ энергоэффективности и оптимизацию приложений, его можно использовать для доступа ко всем счетчикам, необходимым разработчикам или пользователям. Например, разработчики по своему усмотрению могут использовать механизм счетчиков для наблюдения за метриками качества обслуживания или счетчиками производительности.
2.3.

Intel Power Monitoring Tool
Инструмент Intel Power Monitoring Tool отслеживает данные о производительности и энергопотреблении на Android-устройствах и помогает упростить следующие задачи для разработчиков и проектировщиков Android:

Выявление проблем энергопотребления и производительности с использованием мониторинга в режиме реального времени.

Организация автономной диагностики любых проблем с помощью файла журнала.
При создании энергоэффективных систем или приложений разработчики программного обеспечения должны собирать статистические данные для выявления и диагностики проблем с энергопотреблением и производительностью. К несчастью, на изучение ключевых данных об энергопотреблении среди огромных массивов имеющихся данных тратится слишком много времени. Инструмент Intel Power Monitoring Tool позволяет собирать необходимые данные об энергопотреблении через определенные интервалы времени.
При этом состояния энергопотребления системы и приложений записываются в файл журнала. Затем разработчик программного обеспечения может использовать данные из журнала для выявления и диагностики проблем с энергопотреблением и производительностью.
Для операционной системы Android характерно то, что большинство приложений работают в полноэкранном режиме, чтобы обеспечить более удобное взаимодействие пользователя с устройствами. Из-за этого разработчикам программного обеспечения труднее отслеживать статистические данные системы и приложений в режиме реального времени. Intel Power

Monitoring Tool помогает преодолеть эти трудности, обеспечивая в режиме реального времени мониторинг ключевых данных об энергопотреблении из системы и приложений.
Intel Power Monitoring Tool собирает минимальный набор данных об энергопотреблении в фоновом режиме, не вмешиваясь в работу системы. Дополнительная загрузка процессора при использовании инструмента Intel Power Monitoring Tool достаточно мала (не более 3 %).
Intel Power Monitoring Tool предоставляет опытным и начинающим Android-разработчикам три основные возможности:

Данные об энергопотреблении на уровне компонентов
Следующие компоненты мобильных устройств потребляют большую часть энергии и сильнее всего влияют на продолжительность работы устройства от аккумулятора:

Процессор

Экран

Wi-Fi модуль

Модемы

Основное запоминающее устройство

Внешнее запоминающее устройство

Аккумулятор
Поведение операционной системы и приложений также оказывает большое влияние на общее энергопотребление устройства и время работы от аккумулятора. С помощью инструмента Intel
Power Monitoring Tool разработчики могут оценить характеристики энергопотребления устройства в режиме ожидания (когда выполняются только операционная система и службы) и отследить влияние определенного приложения на общее энергопотребление устройства.
Помимо данных об энергопотреблении на уровне компонентов Intel Power Monitoring Tool собирает данные об энергопотреблении для выполняемого приложения

Мониторинг системы и приложения в режиме реального времени
Intel Power Monitoring Tool позволяет отслеживать работу системы и приложения в режиме реального времени через настраиваемые интервалы выборки. Во время работы системы
Android или приложения этот инструмент отображает небольшое окно (Рис. 2.5) в правой части строки состояния, где показаны ключевые данные об энергопотреблении. Данные в окне обновляются практически в режиме реального времени и представлены в следующем формате:

Отметка времени;

BP: battery discharged power;

CPU: общая частота процессора, загрузка процессора 0, загрузка процессора 1;

Wifi: число переданных пакетов Wifi, число полученных пакетов Wifi;

App: состояние приложения, число потоков приложения, загрузка приложения.

Рис. 2.5 Мониторинг системы и приложения в режиме реального времени.


Профилирование в фоновом режиме с минимальной дополнительной нагрузкой
Во время выполнения системы Android и приложений Power Monitoring Tool запускает в фоновом режиме службу профилирования, которая очень незначительно влияет на использование ресурсов.
Служба профилирования запускается и останавливается нажатием на значок приложения Intel
Power Monitoring Tool. Когда пользователь останавливает службу профилирования энергопотребления, во внутренней памяти или на внешнем запоминающем устройстве создается файл журнала с именем "powermonitor.log". В этом файле содержатся все данные об энергопотреблении, которые были получены в течение интервала выборки между запуском и остановкой службы профилирования.
Частота выборки может настраиваться пользователем. В следующей таблице показано, какой объем дополнительных ресурсов использует инструмент при разных частотах выборки:
Согласно этой таблице при интервале выборки, равном 1 секунде, дополнительная нагрузка составляет не более 3 %.
Также можно включить функцию электронной почты, чтобы после остановки службы профилирования файл "powermonitor.log" отправлялся на указанный почтовый адрес. Это упрощает сбор и извлечение данных с устройства на компьютер.
Инструмент Intel Power Monitoring Tool позволяет опытным разработчикам программного обеспечения и обычным пользователям отслеживать, выявлять и диагностировать проблемы с энергопотреблением и производительностью на уровне системы. Благодаря функции мониторинга в режиме реального времени разработчики получают простую и понятную информацию, помогающую найти проблему. Функция записи в журнал позволяет отслеживать данные за определенные периоды для более глубокого анализа. Разработчики программного обеспечения экономят свое время, поскольку собирается минимальный набор данных об энергопотреблении и не нужно просматривать большие массивы данных, чтобы найти ключевую информацию об энергопотреблении и производительности. При этом дополнительная нагрузка, связанная с профилированием данных, очень мала.
Приложение было выпущено через портал Google Market в середине января 2012 года и поддерживает следующие версии Android: GingerBread, HoneyComb, IceCreamSandwich.
Установить приложение можно с помощью портала Android Market или с помощью команды adb
_
install -r com.intel.PowerMonitoringTool.apk
После установки будут доступны три основные возможности Intel Power Monitoring Tool.

Использование функции профилирования и отправка журнала по электронной почте
a.
Откройте приложение Intel Power Monitoring Tool, выберите время выборки и запустите профилирование, нажав кнопку "Start profiling" (Рис. 2.6).

Рис. 2.6 Запуск функции профилирования. b.
Запустите целевое приложение или используйте устройство как обычно. c.
Откройте приложение Intel Power Monitoring Tool и остановите профилирование, нажав на кнопку "Stop profiling". d.
Введите свой адрес электронной почты в текстовом поле и нажмите кнопку "Send out log"
(Отправить журнал). После выберите в списке приложение электронной почты. Файл "powermonitor.log" автоматически добавится в качестве вложения.

Использование функции мониторинга в режиме реального времени
a.
Откройте приложение Intel Power Monitoring Tool и запустите профилирование, нажав на кнопку "Start profiling".
b.
Чтобы отображать данные, нажмите "Display data".
c.
Нажмите кнопку "Set data notify" (Настроить уведомление о данных). В правом нижнем углу экрана появится уведомление с обновляемой информацией (Рис. 2.7).
Рис. 2.7 Мониторинг в режиме реального времени.
d.
В дополнение к работающему приложению можно запустить другие приложения, информация в уведомлении будет обновляться с заданной частотой.


Использование функции мониторинга приложения
a.
Запустите профилирование, нажав на кнопку "Start profiling". b.
Введите в поле "Enter app name" (Рис. 2.8) имя приложения или его часть. Например, для мониторинга приложения "browser", можно ввести текст "browser" или "browse". Инструмент
Intel Power Monitoring Tool выполнит поиск приложения, в имени которого содержится введенное слово.
Рис. 2.7 Мониторинг приложения c.
Данные о приложении будут отображаться в текстовой области на экране и добавляться в файл журнала "powermonitor.log

2.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. С его помощью происходит запуск анализируемого приложения (Рис. 2.8) и осуществляются настройки
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 (Рис. 2.9).
Рис. 2.8 Intel GPA Monitor.
Рис. 2.9 Intel GPA System Analyzer.
В компьютерной графике выжным понятием является «шейдер». Он представляет собой программу, определяющую параметры изображения и выполняющуюся на графическом процессоре. Шейдеры бывают трех типов:

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

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

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

Wireframe (Рис. 2.10) позволяет визуально оценить геометрическую сложность сцены и моделей.

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

Overdraw Visualization – визуализация перерисовки пикселов позволяет градациями серого показать степень перерисовки пикселя для визуальной оценки эффективности Z-отсечения.

Null Driver – отключение драйвера позволяет оценить вклад драйвера в общее падение производительности.


2x2 Texture – упрощение текстур: вместо всех загруженных приложением текстур используются текстуры размером 2x2 пикселя. Это позволяет оценить сложность и ресурсоемкости текстур.

1x1 Scissor Rect – все пиксели, прошедшие пиксельную обработку, отбрасываются, не отрисовываясь.

Cull Counter-Clockwise / Cull Clockwise отрисовывает только те треугольники, которые ориентированы к наблюдателю / от наблюдателя. Эти режимы полезны для определения проблемных мест при неверной отрисовке сцены.

Disable Alpha Blending (Рис. 2.11) отключает альфа-смешивание, то есть использование альфа- канала (дополнительного канала в изображении для создания эффекта прозрачности).
Рис. 2.11 Эксперимент реального времени Disable Alpha Blending.
С помощью Intel GPA System Analyzer можно останавливать приложение. Используя остановку, разработчик может «поймать» нужную сцену или эффект для последующего перехвата интересующего графического кадра. Intel GPA System Analyzer позволяет перехватить и записать текущий фрейм (Рис. 2.12) для последующего детального анализа в программе 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).

Рис. 2.12 Выбор перехваченного кадра для анализа в Intel GPA Frame Analyzer.
В Visualization Panel отображается гистограмма, наглядно представляющая продолжительность
Эргов (Рис. 2.13). Предусмотрена возможность изменять единицы измерения по осям X, Y.
Проблемные этапы обработки сцены наиболее четко видны в виде X: GPU Duration Y: GPU
Breakdown (по оси X откладывается время выполнения Эрга, по оси Y – детализированное время выполнения, то есть время выполнения пиксельных, вершинных и геометрических шейдеров).
Рис. 2.13 Гистограмма продолжительности эргов.
Intel GPA Frame Analyzer делает несколько попыток проиграть фрейм и показывает усредненную длительность Эргов и степень разброса (девиацию) измерений относительно среднего значения.
Разработчик может выделять индивидуальные элементы фрейма. Intel GPA Frame Analyzer при этом выполняет подсветку выбранных элементов в режимах закраски цветом (highlighted) или подсвеченной геометрии (highlighted wireframe). Таким образом, довольно легко определить, какие Эрги отвечают за тот или иной компонент финальной картины (Рис. 2.14). Для любого выбранного Эрга Intel GPA Frame Analyzer позволяет инспектировать текстуры и поверхности вывода с указанием частоты использования текстуры. Еще одним важным элементом предлагаемым пользователю, является доступ к вершинным и пиксельным шейдерам на уровне исходных кодов (на языке High Level Shader Language – HLSL) и ассемблера (Рис. 2.15).
Выбрав указанные Эрги, разработчик может провести над ними эксперименты. Например, можно переключить пиксельный шейдер на простой (Simple Pixel Shader), применить отсечение

(1x1 Scissor Rect), выполнить замену текстур (2x2 Textures). Применяя эксперименты вместе или по отдельности, разработчик наблюдает, как изменяется высота Эргов на гистограмме, и видит в панели Scene Overview старое значение длительности выполнения Эрга (Old), новое значение
(New), численную разницу (Delta) и дисперсию (Variance) (Рис. 2.16).
Рис. 2.14 Подсветка выбранного эрга в режиме Highlighted.
Рис. 2.15 Исходный код выбранного эрга на языке HLSL.
Набор отладочных средств Intel GPA Frame Analyzer включает просмотр метрик для всего фрейма в целом (Frame Overview), просмотр состояний DirectX (States), просмотр шейдеров и шейдерных констант (Shaders), просмотр текстур (Texture), лог вызовов DirectX (API Log) и другие.
Intel GPA Platform Analyzer.
GPA Platform Analyzer позволяет визуализировать профили выполнения различных задач и подзадач исследуемого приложения на платформе в целом (то есть и на CPU, и на GPU).
Поскольку использование многоядерных процессоров в персональных компьтерах стало повсеместным, для достижения наилучшей производительности необходимо эффективно
использовать все доступные вычислительные ресурсы и оптимизировать нагрузку между всеми ядрами CPU и видеокартой.
Рис. 2.16 Изменение длительности Эргов.
GPA Platform Analyzer позволяет:
• оценить масштабируемость приложения в многоядерном окружении;
• исследовать зависимость между приложением и различными компонентами платформы
(например, взаимозависимость между CPU и GPU);
• получать детализированнную информацию о выполнении задачи (необходимо добавление в код приложения вызовов Intel Tracing Technology (ITT) API);
• отслеживать состояния задачи с течением времени, позволяя при этом выяснить, на каком из ядер выполняется задача, и приостановлено ли её выполнение в данный момент.
Оптимизация приложения.
Предполагается, что оптимизация приложения должна начинаться с рассмотрения общей производительности приложения при помощи Intel GPA System Analyzer. Первичный анализ сцены с низким FPS должен выявить, чем ограничена производительность приложения – CPU или GPU.
Основными средствами в этом должны стать графики загрузки CPU (CPU Utilization).
Далее важнейшим инструментом разработчика являются эксперименты с DirectX конвейером
(pipeline). Предполагается следующая тактика применения экспериментов:

Null Hardware – разработчик может оценить, как изменится FPS если отключить GPU на уровне драйвера (DirectX и приложение остаются работать).

Null Driver – отключает все вызовы рисования DirectX. Позволяет оценить потенциальные возможности нашей программы при работе с «бесконечно быстрым» GPU и «бесконечно быстрым» драйвером.

2x2 Texture и Disable Texture Filtering – позволяют оценить нагрузку на текстурный блок GPU.
Если применение данного эксперимента дает значительный эффект – можно задуматься об упрощении текстур.

Simple Pixel Shader – упрощение пиксельного шейдера позволяет понять, является ли вычислительная сложность шейдера проблемой. Данный эксперимент необходимо сочетать с
2x2 Texture и 1x1 Scissor Rect для определения вклада текстурного блока в производительность шейдера.

1x1 Scissor Rect позволяет отсечь все пиксели после обработки пиксельным шейдером. Если наблюдается заметный прирост FPS, мы можем сказать, что проблема кроется в скорости заполнения (Fill Rate). Необходим анализ Stencil и Alpha Blending операций (эксперименты
Disable Alpha Blending, Disable Alpha Test).
Дальнейшая детальная оптимизация графического фрейма включает в себя перехват фрейма
(Frame Capture) и анализ с использованием Intel GPA Frame Analyzer.

Основные факторы, влияющие на производительность:

Скорость заполнения и пиксельные шейдеры (Fill Rate & Pixel Shaders). Для увеличения скорости заполнения следует сосредоточиться на уменьшении числа обрабатываемых пикселей. Для оптимизации работы следует попытаться:

Сконфигурировать приложение под меньшее разрешение.

Уменьшить сложность пиксельных шейдеров.

Ограничить использование эффектов требующих двухпроходной отрисовки.

Использовать проверку на загораживание (Occlusion Query). Такая проверка используется для определения числа потенциально видимых пикселей объекта при помощи рисования не самого объекта, а его ограничивающего объема. Если Occlusion Query возвращает ноль, это значит, что ни один пиксель ограничивающего объема, а значит, и самого объекта, не был виден, следовательно, объект можно не рисовать. Такая проверка максимально эффективна для сложных объектов с большим количеством вершин.

Вершинные шейдеры (Vertex Shaders). Для оптимизации работы с геометрией следует попытаться:

Уменьшить сложность вершинных шейдеров.

По возможности, использовать triangle strips вместо списка треугольников и triangle fan.

Использовать встроенные DXUT функции по оптимизации геометрии для увеличения эффективности кеша вершин.

Использовать Level of Detail (LOD) для высокополигональных моделей.

Текстуры (Textures). Для оптимизации работы с текстурами следует попытаться:

Уменьшить использование текстур высокого разрешения.

Использовать анизотропную фильтрацию только там, где она действительно нужна.

Максимально использовать сжатые форматы текстур.

Использовать FP (floating-point) текстуры только там, где это необходимо.

Использовать FP текстуры с минимально возможной точностью и числом каналов.

Количество вызовов функций отрисовки и смены состояний (DP Сalls & State Changes). Большое количество вызовов отрисовки, смены состояний конвейера могут существенно замедлить работу приложения, поэтому следует:

Использовать более оптимальный алгоритм проверки на видимость объектов в игровом движке.

По возможности объединять геометрические объекты в один.

Сортировать объекты по материалам, шейдерам для уменьшения числа смен стейтов графического конвейера.

Контроль задержек между графическими функциями (Inter Erg Stalls). Важным аспектом оптимизации может стать уменьшение времени, которое программа проводит непосредственно между графическими вызовами. Следует контролировать количество изменений состояний DirectX (DirectX State Changes) и время изменения ресурсов (Index/Vertex
Buffer Locks). В некоторых случаях GPU может оказаться недозагруженным.


Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©nethash.ru 2017
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал