Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 02.10.2012 | Доступ: свободный | Студентов: 1754 / 201 | Длительность: 17:47:00
Специальности: Программист
Лекция 6:

Введение в использование инструментов для параллельного программирования на примере пакета Intel Parallel Studio

Профилирование приложения

Создание проекта Intel Thread Profiler
  1. Запустите Intel® Thread Profiler. Найти его можно, например, по следующему пути: Start—All programs—Intel(R) Software Development Tools—Intel(R) Thread Profiler 3.0^Intel(R) Thread Profder.
  2. В открывшемся окне нажмите на кнопку New Project
  3. В новом окне выберите Intel(R) Thread Profiler Wizard и нажмите кнопку OK.
    Выбор типа проекта

    Рис. 6.27. Выбор типа проекта
  4. Ниже надписи Launch an application имеется строка, в которой необходимо указать имя профилируемого приложения. Нажмите кнопку [...] и в открывшемся диалоговом окне укажите путь до приложения, подлежащего профилированию. В нашем случае это C:\ITPLab\Factorization\release\Factorization.exe.
    Выбор профилируемого приложения

    Рис. 6.28. Выбор профилируемого приложения
  5. Нажмите кнопку Finish.
    Рабочая область Intel Thread Profiler

    увеличить изображение
    Рис. 6.29. Рабочая область Intel Thread Profiler

Профилирование

Профилирование приложения можно начать несколькими способами:

  • Выбрать пункт меню Activity—Run;
  • Нажать F5;
  • Нажать на панели инструментов кнопку с зеленой стрелкой.

Результаты каждого запуска сохраняются, и вы можете работать с несколькими профилями одновременно. Доступ к профилям осуществляется через пункт меню View—Tuning Browser.

Анализ производительности приложения.

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

Вкладка Summary

В нижней части окна ITP располагаются вкладки под названием Profile View и Summary. Перейдите на вторую из них, наведя на нее курсор и щелкнув левой кнопкой мыши. Эта вкладка содержит общую информацию о трассе приложения (рис. 6.30).

Вкладка Summary

увеличить изображение
Рис. 6.30. Вкладка Summary

Вкладка состоит из двух таблиц: первая содержит общую информацию о состоявшемся запуске (характеристики узла, время работы приложения, число потоков и т.д.), а вторая - статистику вызовов API.

Щелкните на знак "+", располагающийся возле надписи "APIs" в нижней таблице, при этом она должна принять вид, показанный на рис. 6.30. Из таблицы можно узнать, сколько времени приложение потратило на ввод/вывод, синхронизацию, непроизводительные издержки и т.д.

После того как вы ознакомитесь с приведенной информацией, вернитесь на вкладку Profile View.

Окно Profile

Основную часть окна Profile занимает область, на которой представлен критический путь приложения. Пользователь имеет возможность управлять представлением критического пути, для чего используется функция группировки и справка по использованию цветов (легенда), располагающаяся справа. Рассмотрим их подробнее.

Окно Profile

увеличить изображение
Рис. 6.31. Окно Profile

Выбор характеристик поведения потоков для визуализации

С помощью панели Legend пользователь имеет возможность указать интересующие его характеристики поведения потоков. Для этого используются находящиеся на легенде кнопки-флажки (check-box). Первый из них, называемый Thread State, позволяет указать, интересует ли нас информация о состоянии потока. Напомним, что существуют три типа состояния: активное (active), активное ожидание (spin), ожидание (wait).

Выберите тип группировки по потокам, нажав на панели кнопку с изображением катушки Катушка. После этого в окне появится информация о распределении времени в критическом пути, как показано на рис. 6.32.

Информация о состоянии потоков представлена в виде столбиков зеленого цвета различной насыщенности. Бледно-зеленый цвет используется для обозначения того, что поток находился в состоянии ожидания, а темно-зеленый цвет соответствует активному состоянию потока. Из рисунка можно узнать, что два потока в нашем приложении (первый и третий столбики) большую часть времени были активны, а еще один поток в основном находился в состоянии ожидания. Нетрудно понять, что в ожидании находился основной поток нашего приложения, в то время как созданные им потоки производили разложение чисел на простые множители. Снимите флажок Thread State и убедитесь, что информация о состоянии потоков исчезнет. После этого верните флажок в исходное положение.

Следующая кнопка-флажок - Critical Path Data, при помощи которой пользователь может указать, интересует ли его разбиение критического пути по категориям времени. Снимите этот флажок и убедитесь, что на рисунке останется информация, касающаяся исключительно состояний потоков.

Анализ состояний потоков

увеличить изображение
Рис. 6.32. Анализ состояний потоков

После этого верните все в исходное положение, в котором установлены флажки Critical Path Data и Concurrency, а флажок Behavior неактивен. В этой конфигурации легенды пользователь имеет возможность анализировать, насколько эффективно его приложение использует ядра процессора (уровень параллелизма). Здесь мы имеем дело с категориями времени, про которые было рассказано в разделе 3.3. В нашем случае можно увидеть, что основную часть критического пути занимает оранжевый цвет, что означает, что большую часть времени приложение выполнялось в последовательном режиме. Это тревожный симптом, который может означать недостаточно высокую степень распараллеливания или неравномерное распределение нагрузки между потоками. Легенда также выполняет информационную функцию. Если вы забыли, что означает тот или иной цвет, наведите курсор мыши на прямоугольник соответствующего цвета в легенде. Появится всплывающая подсказка, содержащая информацию о том, что он означает. Кроме того, если цвет считается "проблемным" (свидетельствует о неправильной организации приложения), то в подсказке будут содержаться советы для решения данной проблемы.

На легенде неизученной осталась последняя кнопка-флажок Behavior. Установите ее и снимите флажок Concurrency. В этой конфигурации пользователь имеет возможность определить поведение потока в его активном состоянии, о котором мы говорили ранее в разделе 3.3. В нашем случае критический путь окрашен в основном в красный цвет, что означает, что происходило ожидание завершения работы некоторых потоков. Это дает нам мало новой информации, поскольку мы и раньше знали, что основной поток приложения большую часть времени ожидает завершения дочерних потоков.

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

Использование функции группировки.

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

Рассмотрим наиболее типичные варианты использования группировки. Полезно начать с варианта, когда группировки не используются. Нажмите кнопку с изображением перечеркнутого красного круга Перечеркнутый красный круг) - при этом критический путь примет вид, показанный на рис. 6.33.

Изображение критического пути при отключенной группировке

увеличить изображение
Рис. 6.33. Изображение критического пути при отключенной группировке

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

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

Использование вторичной группировки

увеличить изображение
Рис. 6.34. Использование вторичной группировки

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

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

Рабочая область

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

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

Анализ критического пути

увеличить изображение
Рис. 6.35. Анализ критического пути
Дмитрий Остапенко
Дмитрий Остапенко

поддерживаю выше заданые вопросы

 

Павел Каширин
Павел Каширин

Скачал архив и незнаю как ничать изучать материал. Видео не воспроизводится (скачено очень много кодеков, различных плееров -- никакого эффекта. Максимум видно часть изображения без звука). При старте ReplayMeeting и Start в браузерах google chrome, ie возникает script error с невнятным описанием. В firefox ситуация еще интереснее. Выводится: 

Meet Now: Кукаева Светлана Александровна. 

Meeting Start Time: 09.10.2012, 16:58:04
Meeting Stop Time: 09.10.2012, 18:45:18
Recording Duration:01:47:14

Downloading...

Your Web browser is not configured to play Windows Media audio/video files.

Make sure the features are enabled and available.