Опубликован: 19.10.2012 | Доступ: свободный | Студентов: 299 / 65 | Длительность: 05:51:00
Тема: Программирование
Специальности: Программист, Системный архитектор
Теги:
Самостоятельная работа 5:
Знакомство с основными возможностями Intel® CilkTM Plus на примере алгоритма Дейкстры поиска кратчайшего пути на графе
< Самостоятельная работа 4 || Самостоятельная работа 5 || Самостоятельная работа 6 >
Аннотация: На примере задачи о поиске кратчайшего пути на графе рассматривается организация параллельных вычислений с помощью Intel® CilkTM Plus и OpenMP. Предлагается сравнить эффективность этих подходов между собой и с эффективностью последовательной реализации.
Материалы к лабораторной работе Вы можете скачать здесь.
Задание 1 - Последовательная реализация алгоритма Дейкстры поиска кратчайшего пути на графе
Время на выполнение задания | 15 минут |
---|---|
Цель | Измерение производительности последовательной реализации алгоритма Дейкстры поиска кратчайших путей на графе |
Подготовка
Скопируйте папку cilk_lab5 с файлами демонстрационной программы поиска кратчайших путей на графе из папки classfiles/Lab05/WTemplates в папку classfiles/Lab05/Explorations.
Компиляция и запуск последовательной реализации алгоритма Дейкстры
- Перейдите в каталог classfiles/Lab05/Explorations/cilk_lab5 и откройте файл с решением Microsoft® Visual Studio 2010 cilk_lab5.sln. Скомпилируйте проекты в приложении, выбрав кнопку меню Build—>Build Solution.
- Убедитесь, что активным проектом является проект dijkstra_serial (щелчок правой кнопкой по проекту—>Set as a StartUp Project)
- Запустите приложение, выбрав кнопку меню Debug—>Start Without Debugging.
Запишите время выполнения:________
Повторите 3) не менее 5 раз и найдите среднее время выполнения:______.
- Повторите для различных размеров графа (вплоть до 5000). Для того, чтобы сделать это, в файле с исходным текстом программы (Dijkstra_serial.cpp) измените строку: const int N = 500;
Задание 2 - Параллельная реализация алгоритма Дейкстры поиска кратчайших путей на графе с использованием OpenMP
Время на выполнение задания | 25 минут |
---|---|
Цель | Измерение производительности параллельной (с использованием OpenMP) реализации алгоритма Дейкстры поиска кратчайших путей на графе |
Подготовка
Убедитесь, что активным проектом является проект dijkstra_tasks (щелчок правой кнопкой по проекту—>Set as a StartUp Project)
Запуск параллельной (с использованием OpenMP) реализации алгоритма Дейкстры
- Запустите приложение, выбрав кнопку меню Debug—>Start Without Debugging. Запишите время выполнения:________. Повторите 1) не менее 5 раз и найдите среднее время выполнения:______.
- Замените число потоков на 2. Для изменения числа потоков пользуйтесь строчкой кода const int Ntr = 4; Повторите 3) не менее 5 раз и найдите среднее время выполнения: .
- Повторите 3) для нескольких значений числа потоков.
- Постройте график зависимости ускорения от числа потоков.
- Повторите для различных размеров графа (вплоть до 5000). Для того, чтобы сделать это, в файле с исходным текстом программы (Dijkstra_tasks.cpp) измените строку:
const int N = 500;
- Сравните результаты заданий 1 и 2. Сделайте выводы об эффективности обеих версий.
Задание 3 - Параллельная реализация алгоритма Дейкстры поиска кратчайших путей на графе с использованием Intel® CilkTM Plus
Время на выполнение задания | 25 минут |
---|---|
Цель | Измерение производительности параллельной (с использованием Intel® CilkTM Plus) реализации алгоритма Дейкстры поиска кратчайших путей на графе |
Подготовка
Убедитесь, что активным проектом является проект dijkstra_cilk (щелчок правой кнопкой по проекту—>Set as a StartUp Project)
Запуск параллельной (с использованием Cilk) реализации алгоритма Дейкстры
- Запустите приложение, выбрав кнопку меню Debug—>Start Without Debugging. Запишите время выполнения: . Повторите 1) не менее 5 раз и найдите среднее время выполнения:_______ .
- Замените число потоков на 2.
Для изменения числа потоков пользуйтесь строчкой кода
Повторите 2) не менее 5 раз и найдите среднее время выполнения: .
cilkrts_set_param("nworkers","N");
- Повторите 3) для нескольких значений числа потоков.
- Постройте график зависимости ускорения от числа потоков.
- Повторите для различных размеров графа (вплоть до 5000). Для того, чтобы сделать это, в файле с исходным текстом программы (Dijkstra_cilk.cpp) измените строку:
const int N = 500;
- Сравните результаты заданий 1, 2 и 3. Сделайте выводы об эффективности обеих параллельных версий программы.
< Самостоятельная работа 4 || Самостоятельная работа 5 || Самостоятельная работа 6 >