Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LabPract_SPP

.pdf
Скачиваний:
20
Добавлен:
18.03.2015
Размер:
648.64 Кб
Скачать

Лабораторная работа № 4

ИСПОЛЬЗОВАНИЕ ИНСТРУМЕНТОВ

INTEL THREAD CHECKER, INTEL THREAD PROFILER И INTEL VTUNE PERFORMANCE ANALYZER

ДЛЯ ОТЛАДКИ И ОПТИМИЗАЦИИ МНОГОПОТОЧНЫХ ПРИЛОЖЕНИЙ

1. Цель работы

Научиться проводить отладку многопоточных приложений, созданных с помощью Windows Threading API и OpenMP, с использованием Intel Thread Checker, а также оптимизацию этих программ с использованием Intel Thread Profiler и Intel VTune Performance Analyzer.

2. Теоретическая часть

Необходимые для выполнения данной работы теоретические сведения из математической физики и численных методов приведены в теоретической части лабораторной работы №1.

3.Краткое описание используемых программных продуктов и вычислительной техники

Выполнение заданий лабораторной работы предполагает доступ к вычислительным системам с общей памятью. Описание используемых в данной лабораторной работе систем приведено в п. 3 лабораторной работы №1.

В данной лабораторной работе используются инструменты корпорации Intel: отладчик многопоточных приложений Intel Thread Checker, многопоточный профилировщик Intel Thread Profiler и анализатор многопоточной модели программы Intel VTune Performance Analyzer. В работе используются версии этих инструментов, предназначенные для работы под операционными системами семейства Windows. Для упрощения работы с программным кодом эти инструменты интегрируются в среду разработки Microsoft Visual Studio

.NET 2005. Для компиляции программ используется Intel C++ Compiler v. 10.1, также интегрированный в оболочку Visual Studio.

23

4. Руководство по использованию программных продуктов

4.1. Работа с Intel Thread Checker

Данный инструмент предназначен для поиска двух основных видов ошибок в многопоточных приложениях: взаимных блокировок потоков (дедлоков) и конкуренции потоков за доступ к данным (так называемые, race conditions). При этом возможно отслеживание конкуренции трех типов:

Write-Write – один поток пытается изменить в памяти значение переменной раньше другого потока;

Read-Write – один поток читает значение переменной раньше, чем она изменяется другим потоком;

Write-Read – один поток изменяет значение переменной раньше,

чем оно прочитывается другим потоком.

Для отладки программы с использованием Intel Thread Checker необходимо удовлетворить следующим условиям.

1)Объем данных, с которыми работает программа, должен быть минимальным.

2)В свойствах проекта Visual Studio должны быть выставлены следующие ключи компиляции:

/MD, /MDd – использование динамических многопоточных библиотек;

/Zi, /ZI, /Z7 – генерирование отладочной информации;

/Od – отключение оптимизации.

3)В свойствах проекта Visual Studio должны быть выставлены следующие ключи компоновки (линковки):

/debug – включение режима отладки;

/fixed:no – опция в Linker->Advanced->Fixed Base Address.

Для запуска продукта необходимо запустить оболочку Intel

VTune Performance Environment (для этого обычно запускается Intel VTune Performance Analyzer), или нажать соответствующую кнопку на панели инструментов Visual Studio, если инструменты отладки Intel при установке были интегрированы в эту среду разработки. Затем необходимо через меню выбрать создание нового проекта (New Project), в закладке Category выбрать Threading Wizards и

в открывшемся списке выбрать Intel Thread Checker Wizard. Необходимо также ввести имя проекта (Project Name) и путь

24

к нему (Project Location). После этого появится окно Intel Thread Checker Wizard, в котором необходимо выбрать пункт Launch application и указать полный путь к исполняемому файлу программы. После этого программа будет автоматически запущена отладчиком, который проведет ее диагностику. После завершения работы программы на экран будут выведены выявленные отладчиком ошибки с кратким их описанием. Двойной щелчок мышью на ошибке позволяет перейти к участку программного кода, который привел к этой ошибке. Возможен просмотр кода как в режиме текста на С++, так и в режиме ассемблерных команд.

Необходимо отметить, что не всё диагностируемые данным инструментом действительно является ошибкой: это просто может быть «тонкое место», логику которого программа не смогла правильно диагностировать и поэтому включила в список.

4.2. Работа с Intel Thread Profiler

Intel Thread Profiler предназначен для анализа эффективности многопоточных приложений, созданных с помощью Windows Threading API, POSIX Threads или OpenMP. Данный инструмент позволяет выявлять потери производительности, связанные с

дисбалансом вычислительной нагрузки различных потоков;

простоями на объектах синхронизации;

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

Для запуска анализа программы необходимо в уже созданном ранее (при запуске Intel Thread Checker) проекте выбрать New Ac-

tivity и в списке Category\Threading Wizards выбрать Intel Thread Profiler Wizard. После этого будет выполнена диагностика программы. Результаты представляются графически.

4.3. Работа с Intel VTune Performance Analyzer

Intel VTune Performance Analyzer предназначен для

повышения эффективности вычислительного процесса,

оптимизации многопоточной модели программы.

25

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

Для запуска анализа программы необходимо в уже созданном ранее проекте выбрать New Activity и в списке Category выбрать Analyzer Projects. Далее из открывшегося списка нужно выбрать первую позицию: Quick Performance Analyzer Wizard. После этого откроется окно Quick Performance Analysis, в котором необходимо указать полный путь к исполняемому файлу анализируемого приложения и выбрать все три возможных типа собираемых сведений: Collect sampling data, Collect counter monitor data и Collect call graph data. После нажатия на кнопку Go будет выполнена диагностика программы. Результаты представляются в табличном виде и графически.

5. Выполнение работы

Исходными данными для этой лабораторной работы служат многопоточные программы, написанные при выполнении лабораторных работ №1 и №2. Далее приводится пошаговое описание методики выполнения задания.

1.Используя отладчик Intel Thread Checker выполнить поиск ошибок в созданных ранее многопоточных программах и в случае их обнаружения – исправить.

2.Используя профилировщик Intel Thread Profiler провести анализ созданных ранее многопоточных программ. Исследовать соотношение последовательной и параллельной частей программы. Выявить узкие места программ и оптимизировать их с целью увеличения доли параллельной части программы.

3.Используя анализатор производительности Intel VTune Performance Analyzer выполнить анализ созданных ранее многопоточных программ. В каждой программе выявить функцию, которая вызывалась максимальное количество раз и проанализировать, нельзя ли уменьшить количество ее вызовов. В каждой программе определить функцию, выполнение которой потребовало наибольшего времени.

26

Выполнить оптимизацию кода этой функции с целью уменьшения времени ее выполнения.

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

5.Вычислить ускорения и эффективности программ для различного числа ядер по формулам п. 5.9 лабораторной работы № 1. Рассчитанные значения занести в таблицы 1.1 и 1.2.

6.Сопоставить новые данные с результатами, полученными ранее при выполнении лабораторных работ №1 и №2. Сделать вывод об эффективности проведенных оптимизационных процедур.

7.Оформить отчет по лабораторной работе в соответствии с требованиями, приведенными в приложении Б.

8.Подготовиться к защите лабораторной работы, ответив на приводимые ниже контрольные вопросы.

6. Контрольные вопросы

1.Какие типы ошибок позволяет выявлять Intel Thread Checker?

2.Как избавиться от взаимной блокировки (дедлока)?

3.Каким образом исправляется конкурентный доступ потоков к данным?

4.Для каких целей может быть использован профилировщик Intel Thread Profiler?

5.Какую информацию выдает Intel Thread Profiler?

6.Какую информацию о программе позволяет получить Intel VTune Performance Analyzer?

7.Каким образом осуществляется оптимизация программ с использованием Intel VTune Performance Analyzer?

27

Лабораторная работа № 5

СОЗДАНИЕ И ОТЛАДКА ПАРАЛЛЕЛЬНЫХ ПРОГРАММ ДЛЯ КЛАСТЕРНЫХ СИСТЕМ СРЕДСТВАМИ MPI

С ИСПОЛЬЗОВАНИЕМ ПАРАЛЛЕЛЬНЫХ МАТЕМАТИЧЕСКИХ БИБЛИОТЕК

1. Цель работы

Научиться создавать параллельные вычислительные программы с использованием MPI и вызвать из них функции параллельных вычислительных библиотек.

2. Теоретическая часть

Необходимые для выполнения данной работы теоретические сведения из математической физики и численных методов приведены в теоретической части лабораторной работы №1.

3.Краткое описание используемых программных продуктов и вычислительной техники

Выполнение данной лабораторной работы предполагает доступ к вычислительным системам с распределенной памятью, к которым относятся современные суперкомпьютеры и кластерные системы. При проведении лабораторных работ на кафедре ВВТиС могут быть задействованы следующие вычислительные ресурсы.

1)Учебный Athlon-кластер УГАТУ

12 вычислительных узлов на базе процессора AMD Athlon XP 3000+;

ОЗУ 1.5 М/узел;

коммуникационная среда – Gigabit Ethernet 1Гбит/с;

2)Суперкомпьютер УГАТУ

266 двухпроцессорных узлов;

532 четырехядерных процессора Intel Xeon 5300 2.33 ГГц;

ОЗУ 8 Гб/узел;

полная оперативная память 2.15 ТB;

дисковая память 26.7 ТB;

28

ленточная библиотека 8.8 ТВ;

коммуникационная среда – Infiniband (10 Гбит/с);

операционная система: RedHat Enterprise Linux 4.4;

Потребляемая мощность 85 КВт.

Для написания и предварительной отладки программ могут использоваться рабочие станции дисплейных классов кафедры ВВТиС, параметры которых приведены в п. 3 лабораторной работы № 1.

Все вычислительные ресурсы должны функционировать под управлением операционных систем семейства Linux.

Программное обеспечение: любая реализация интерфейса MPI, математическая библиотека ScaLAPACK (распространяется свободно), собранная с использованием выбранной реализацией MPI.

4. Руководство по использованию программных продуктов

Описание необходимых для лабораторной работы функций интерфейса MPI содержится в главе 7 учебного пособия [2] или в главе 2 учебного пособия [3]. Описание библиотеки ScaLAPACK можно найти в главе 8 пособия [2]. Подробная схема работы с пакетом ScaLAPACK содержится в лабораторном практикуме по дисциплине «Многопроцессорные системы и параллельное программирование» [4], изучавшейся в предыдущем семестре, либо в лабораторном практикуме по курсу «Основы суперкомпьютерных технологий» [5].

5. Выполнение работы

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

1.Выполнить разработку параллельного алгоритма, основанного на идее геометрического параллелизма [2], для решения задачи согласно индивидуальному заданию.

2.Выполнить программную реализацию алгоритма с использованием MPI двумя способами:

а) решение системы заданным методом реализовать самостоятельно;

б) использовать для решения системы стандартную функцию пакета ScaLAPACK.

29

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

4.Проверить правильность работы программ с использованием построенного в лабораторной работе № 1 тестового примера. Убедиться, что программы дают ускорение при запуске на многоядерной системе (при запуске на двух ядрах ускорение должно быть не меньше 1.7).

5.Выполнить серию расчетов по заданным преподавателем исходным данным на кластерной системе на различном числе узлов и процессоров. Данные по времени исполнения программ занести в таблицу 5.1.

Таблица 5.1

Программа

Параметр

 

Количество процессоров (узлов)

 

1

 

2

4

 

n

 

 

 

 

Собственный

Время, с

 

 

 

 

 

 

 

Ускорение

 

 

 

 

 

 

 

решатель

 

 

 

 

 

 

 

Эффективность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Решатель

Время, с

 

 

 

 

 

 

 

Ускорение

 

 

 

 

 

 

 

ScaLAPACK

 

 

 

 

 

 

 

Эффективность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.Вычислить ускорение и эффективность параллельной программы для различного числа процессоров по формулам п. 5.9 лабораторной работы № 1. Рассчитанные значения занести в таблицу 5.1.

7.Провести анализ полученных результатов. Сделать вывод об эффективности собственного итерационного решателя СЛАУ по сравнению с решателем пакета ScaLAPACK.

8.Оформить отчет по лабораторной работе в соответствии с требованиями, приведенными в приложении Б.

9.Подготовиться к защите лабораторной работы, ответив на приводимые ниже контрольные вопросы.

6. Контрольные вопросы

1.В чем суть идеи геометрического параллелизма?

2.Какие способы декомпозиции расчетной области возможны в решаемой индивидуальной задаче?

30

3.Какие типы функций точечного обмена данными MPI существуют? Какие из них использованы в программах лабораторной работы и почему именно они?

4.Какие существуют функции коллективного обмена данными MPI? Какие из них использованы в программах лабораторной работы и почему именно они?

5.Каким образом в MPI-программах осуществляется синхронизация процессов?

6.Для чего предназначен пакет ScaLAPACK?

7.Какова структура пакета ScaLAPACK?

8.Каков алгоритм использования функций пакета ScaLAPACK?

31

Лабораторная работа № 6

СОЗДАНИЕ И ЗАПУСК РАСПРЕДЕЛЕННЫХ ВЫЧИСЛИТЕЛЬНЫХ ПРОГРАММ В ГРИД-СИСТЕМЕ, ПОСТРОЕННОЙ С ИСПОЛЬЗОВАНИЕМ GLOBUS TOOLKIT

1. Цель работы

Научиться на основе имеющихся параллельных приложений формировать задания и запускать их в грид-системе, построенной с использованием Globus Toolkit.

2. Теоретическая часть

Необходимые для выполнения данной работы теоретические сведения из математической физики и численных методов приведены в теоретической части лабораторной работы №1.

3. Краткое описание используемых программных продуктов и вычислительной техники

В данной работе для запуска приложений используется гридсистема, построенная с использованием набора инструментов Globus Toolkit из локальных вычислительных ресурсов кафедры ВВТиС и учебной кластерной системы. Описание кластерной системы приведено в предыдущей лабораторной работе, локальные вычислительные ресурсы описаны в лабораторной работе № 1.

Приведем краткое описание Globus Toolkit.

Инструментальные средства Globus Toolkit образуют набор программных средств и позволяют построить полнофункциональную грид-систему. Средства Globus Toolkit представляют собой совокупность программных компонент, реализующих необходимые части архитектуры грид.

Globus Toolkit состоит из следующих основных компонент:

GRAM (Globus Resource Allocation Manager) – менеджер выделения ресурсов ответственный за создание/удаление процессов. Этот компонент устанавливается на локальном вычислительном узле грид-системы.

32

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]