Опубликован: 19.10.2012 | Доступ: свободный | Студентов: 299 / 65 | Длительность: 05:51:00
Самостоятельная работа 2:

Параллелизация алгоритма Гаусса-Зейделя решения дифференциальных уравнений с использованием Intel® Cilk Plus.02

Аннотация: На примере задачи о численном решении уравнения Пуассона рассматривается организация параллельных вычислений с помощью Intel® CilkTM Plus и OpenMP. Предлагается сравнить эффективность этих подходов с эффективностью последовательного алгоритма.

Материалы к лабораторной работе Вы можете скачать здесь.

Задание 1 - Последовательная программа численного решения дифференциального уравнения Пуассона методом Гаусса-Зейделя.

Время на выполнение задания 15 минут
Цель Измерение производительности последовательной программы решения уравнения Пуассона методом Гаусса-Зейделя

Подготовка

Скопируйте папку cilk_lab2 с файлами демонстрационной программы решения уровнения Пуассона методом Гаусса-Зейделя из папки classfiles/Lab02/WTemplates в папку classfiles/Lab02/Explorations.

Компиляция и запуск последовательного метода Гаусса-Зейделя

  1. Перейти в каталог classfiles/Lab02/Explorations.cilk_lab2 и откройте файл с решением Microsoft® Visual Studio 2010 cilk_lab2.sln. Скомпилируйте приложение, выбрав кнопку меню Build -> Build Solution.
  2. Обратите внимание, что инициализация задачи и вызов алгоритмов решения находится в функции main в файле p_seidel.cpp, а их реализация содержится в заголовочном файле poisson.h. Убедитесь, что в тексте программы в файле p_seidel.cpp закомментированы шаги 2-3 (активен вызов последовательного метода Гаусса-Зейделя).
  3. Запустите приложение, выбрав кнопку меню Debug -> Start Without Debugging.

    Запишите время его выполнения в последовательном режиме:__________________.

    Повторите 3) не менее 5 раз и найдите среднее время выполнения:________________.

Задание 2 - Параооельная программа численного решения дифференциального уравнения Пуассона методом Гаусса-Зейделя с помощью OpenMP.

Время на выполнение задания 25 минут
Цель Измерение производительности параллельной программы решения уравнения Пуассона методом Гаусса-Зейделя с помощью средств OpenMP

Компиляция и запуск параллельного метода Гаусса-Зейделя

  1. В тексте программы в файле p_seidel.cpp расомментируйте шаг 2 (нем самым станет активен вызов параллельного решения методом Гаусса-Зейделя с помощью средств OpenMP).
  2. Запустите приложение, выбрав кнопку меню Debug -> Start Without Debugging.

    Запишите время его выполнения в последовательном режиме с использованием OpenMP:

    _______________________________________________________________________________.

    При помощи изменения строчки omp_set_num_threads (n);

    в файле p_seidel.cpp можно менять число потоков OpenMP.

    Повторите 2) не менее, чем по 5 раз для каждого значения числа потоков (от 1 до 4) и найдите среднее время выполнения в каждом случае:

    _______________________________________________________________________________

  3. Сравните полученный результат с результатом задания 1 и объясните причину сходства/различия.

Задание 3 - Параллельная программа численного решения дифференциального уравнения Пуассона методом Гаусса-Зейделя с помощью Intel® Cilk Plus.

Время на выполнение задания 25 минут
Цель Измерение производительности параллельной программы решения уравнения Пуассона методом Гаусса-Зейделя с помощью средств Intel® Cilk Plus.

Компиляция и запуск параллельного метода Гаусса-Зейделя

  1. В тексте программы в файле p_seidel.cpp раскомментируйте шаг 5 (тем самым станет активен вызов параллельного решения методом Гаусса-Зейделя с помощью средств Intel® Cilk Plus).
  2. Запустите приложение, выбрав кнопку меню Debug -> Start Without Debugging.

    Запишите время его выполнения в параллельном режиме с использованием Cilk:

    _______________________________________________________________________________

    При помощи изменения строчки __cilkrts_set_param("nworkers", "n");

    в файле p_seidel.cpp можно менять число рабочих потоков Cilk.

    Повторите 2) не менее, чем по 5 раз для каждого значения числа потоков (от 1 до 4) и найдите среднее время выполнения в каждом случае:

    _______________________________________________________________________________

    Сравните полученные результат с результатами заданий 1 и 2 и попробуйте объяснить причину сходства/различия.