Нижегородский государственный университет им Н.И.Лобачевского им. Н И Лобачевского Факультет Вычислительной математики и кибернетики Образовательный комплекс Технологии разработки параллельных программ Intel Thread Profiler Краткое описание Часть 2: Пример использования Корняков К.В., Шишков А.В. Кафедра математического обеспечения ЭВМ Содержание Изучение профилируемого приложения Подготовка приложения для анализа Профилирование Анализ производительности приложения Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 2 Изучение профилируемого приложения Задание 1 Запустите приложение Microsoft Visual Studio 2005, В меню File выполните команду Open→Project/Solution…, В диалоговом окне Open Project выберите папку C:\ITPLab\Factorization, Дважды щелкните на файле Factorization.sln или, выбрав файл, выполните команду Open. После открытия проекта в окне Solution Explorer дважды щелкните на файле исходного кода Factorization.cpp. Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 3 Изучение профилируемого приложения Приложение Factorization ищет разложение множества чисел на простые множители. Алгоритм разложения основан на попытке деления нацело каждого числа на все числа, числа меньшие его. его 12 = ?*?*...*? ?*?* *? 12 / 2 = 6; // пробуем разделить на 2 еще раз 6/2=3 3; // пробуем б разделить на 2 еще раз 3 / 2 = 1,5; // берем следующий делитель 3/3=1 1; // СТОП – получили единицу Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 4 Изучение профилируемого приложения В приложении объявлены #define NUM_NUMBERS 100000 #define NUM_THREADS 2 следующие константы: Результаты разложения сохраняются в массив векторов vector<int> divisors[NUM_NUMBERS+1]; Так, например, divisors[5] = {5} divisors[6] = {2, 3} Для разложения используется несколько потоков. Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 5 Изучение профилируемого приложения В данной работе нас будут интересовать только функции main и factorization1. factorization1 Функция main содержит необходимые объявления, операции создания потоков и ожидания их завершения, а также вывод на экран, предназначенный для контроля правильности результатов. Функция factorization1 представляет собой рабочую функцию потока. В ней реализуется простейшая стратегия распределения нагрузки между потоками. Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 6 Подготовка приложения для анализа Подготовка заключается в установке определенных опций компиляции и компоновки приложения приложения. Большинство настроек установлены по умолчанию. Необходимые настройки – Компиляция в Release режиме – Формат отладочной информации Program Database (/Zi) – Включение В ю е е в приложение р о е ео отладочной а о ой информации фор а – Использование потокобезопасных библиотек – Использование опции компоновщика /fixed:no После установки всех этих опций приложение готово к профилированию. Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 7 Подготовка приложения для анализа Задание 2 В меню Build выберите пункт Configuration Manager…, в открытом окне выберите режим Release. Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 8 Подготовка приложения для анализа Задание 2 Укажите формат отладочной информации Program Database (/Zi). Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 9 Подготовка приложения для анализа Задание 2 Включите генерацию отладочной информации. Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 10 Подготовка приложения для анализа Задание 2 Использование потокобезопасных библиотек. Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 11 Подготовка приложения для анализа Задание 2 Установите опцию компоновщика /fixed:no. Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 12 Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 13 Создание проекта Intel® Thread Profiler Задание 3 Запустите Intel Thread Profiler. Start→All programs→Intel(R) Software Development Tools→Intel(R) Thread Profiler 3.0→Intel(R) Thread Profiler. В открывшемся окне нажмите на кнопку New Project . В новом окне выберите Intel(R) Thread Profiler Wizard и нажмите кнопку о OK OK. Ниже надписи Launch an application имеется строка, в которой необходимо у указать имя профилируемого у приложения. Нажмите кнопку […] и в открывшемся диалоговом окне укажите путь до приложения, подлежащего профилировке. В нашем случае это С:\ITPLab\Factorization\release\Factorization.exe. Нажмите кнопку Finish. Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 14 Профилирование ITP самостоятельно осуществляет инструментацию приложения и запускает процесс профилирования профилирования. Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 15 Профилирование Окно Summary Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 16 Профилирование Окно Profile Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 17 Профилирование Окно Profile (группировка по потокам) Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 18 Профилирование Окно Profile (без группировки) Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 19 Профилирование Окно Profile (двойная группировка) Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 20 Профилирование Окно Profile (обращение к коду) Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 21 Профилирование Окно Timeline Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 22 Профилирование Окно Timeline (обращение к коду) Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 23 Самостоятельная работа В окне Profile установите первичную группировку по потокам, а вторичную по уровню параллелизма. параллелизма Установите соответствие между столбцами в окне Profile и полосами в окне Timeline. Мы установили, что основная причина медленной работы нашего приложения – неравномерное распределение нагрузки между потоками. Предложите ваш способ решения данной проблемы. Ответьте на контрольные вопросы – Наличие каких цветов в критическом пути свидетельствует о проблемах с производительностью приложения? – В чем разница между группировкой по объектам и по типам объектов? Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 24 Источники информации 1. 2. 3 3. 4. 5. 6. 7 7. 8. «Developing Multithreaded Applications: A Platform Consistent Approach», Intel Corporation Corporation, March 2003 2003. «Threading Methodology: Principles and Practices», Intel Corporation, March 2003. «Multi-Core Multi Core Programming for Academia», Academia Student Workbook, Workbook by Intel Intel. «Multi-Core Programming», book by Sh. Akhter and J. Roberts, Intel Press 2006. «Intel® Thread Profiler. Getting Started Guide». «Intel® Thread Profiler. Guide to Sample Code». «Intel® Thread Profiler Help» Help». «Intel® Thread Profiler – краткое описание», материалы по образовательному комплексу «Технологии разработки параллельных программ». программ» Н.Новгород, 2007 г. Технологии разработки параллельных программ Intel Thread Profiler. Краткое описание 25