Параллелизация алгоритма Гаусса-Зейделя решения дифференциальных уравнений с использованием Intel® Cilk Plus.02
Материалы к лабораторной работе Вы можете скачать здесь.
Задание 1 - Последовательная программа численного решения дифференциального уравнения Пуассона методом Гаусса-Зейделя.
Время на выполнение задания | 15 минут |
Цель | Измерение производительности последовательной программы решения уравнения Пуассона методом Гаусса-Зейделя |
Подготовка
Скопируйте папку cilk_lab2 с файлами демонстрационной программы решения уровнения Пуассона методом Гаусса-Зейделя из папки classfiles/Lab02/WTemplates в папку classfiles/Lab02/Explorations.
Компиляция и запуск последовательного метода Гаусса-Зейделя
- Перейти в каталог classfiles/Lab02/Explorations.cilk_lab2 и откройте файл с решением Microsoft® Visual Studio 2010 cilk_lab2.sln. Скомпилируйте приложение, выбрав кнопку меню Build -> Build Solution.
- Обратите внимание, что инициализация задачи и вызов алгоритмов решения находится в функции main в файле p_seidel.cpp, а их реализация содержится в заголовочном файле poisson.h. Убедитесь, что в тексте программы в файле p_seidel.cpp закомментированы шаги 2-3 (активен вызов последовательного метода Гаусса-Зейделя).
-
Запустите приложение, выбрав кнопку меню Debug -> Start Without Debugging.
Запишите время его выполнения в последовательном режиме:__________________.
Повторите 3) не менее 5 раз и найдите среднее время выполнения:________________.
Задание 2 - Параооельная программа численного решения дифференциального уравнения Пуассона методом Гаусса-Зейделя с помощью OpenMP.
Время на выполнение задания | 25 минут |
Цель | Измерение производительности параллельной программы решения уравнения Пуассона методом Гаусса-Зейделя с помощью средств OpenMP |
Компиляция и запуск параллельного метода Гаусса-Зейделя
- В тексте программы в файле p_seidel.cpp расомментируйте шаг 2 (нем самым станет активен вызов параллельного решения методом Гаусса-Зейделя с помощью средств OpenMP).
-
Запустите приложение, выбрав кнопку меню Debug -> Start Without Debugging.
Запишите время его выполнения в последовательном режиме с использованием OpenMP:
_______________________________________________________________________________.
При помощи изменения строчки omp_set_num_threads (n);
в файле p_seidel.cpp можно менять число потоков OpenMP.
Повторите 2) не менее, чем по 5 раз для каждого значения числа потоков (от 1 до 4) и найдите среднее время выполнения в каждом случае:
_______________________________________________________________________________
- Сравните полученный результат с результатом задания 1 и объясните причину сходства/различия.
Задание 3 - Параллельная программа численного решения дифференциального уравнения Пуассона методом Гаусса-Зейделя с помощью Intel® Cilk Plus.
Время на выполнение задания | 25 минут |
Цель | Измерение производительности параллельной программы решения уравнения Пуассона методом Гаусса-Зейделя с помощью средств Intel® Cilk Plus. |
Компиляция и запуск параллельного метода Гаусса-Зейделя
- В тексте программы в файле p_seidel.cpp раскомментируйте шаг 5 (тем самым станет активен вызов параллельного решения методом Гаусса-Зейделя с помощью средств Intel® Cilk Plus).
-
Запустите приложение, выбрав кнопку меню Debug -> Start Without Debugging.
Запишите время его выполнения в параллельном режиме с использованием Cilk:
_______________________________________________________________________________
При помощи изменения строчки __cilkrts_set_param("nworkers", "n");
в файле p_seidel.cpp можно менять число рабочих потоков Cilk.
Повторите 2) не менее, чем по 5 раз для каждого значения числа потоков (от 1 до 4) и найдите среднее время выполнения в каждом случае:
_______________________________________________________________________________
Сравните полученные результат с результатами заданий 1 и 2 и попробуйте объяснить причину сходства/различия.