Введение в практику разработки параллельных программ в стандарте MPI. Баканов В.М - 38 стр.

UptoLike

Составители: 

- 38 -
4. Лабораторная работа 4. Простые MPI-программы
(численное интегрирование)
Общие сведения. Среди задач численного анализа встречается немало за-
дач, распараллеливание которых очевидно. Например, численное интегриро-
вание сводится фактически к (многочисленному) вычислению подинтеграль-
ной функции (что естественно доверить отдельным процессам), при этом
главная ветвь управляет процессом вычислений (определяет стратегию рас-
пределения точек интегрирования по процессам исобираетчастичные сум-
мы). Подобным жеинтуитивным распараллеливаниемобладают задачи по-
иска и сортировки в линейном списке, численного нахождения корней функ-
ций, поиск экстремумов функции многих переменных, вычисление рядов и
др. Трудности распараллеливания возникают, например, в случае рекурсив-
ных алгоритмов и при последовательном просчете по формулам.
Цель работыприобретение практических знаний и навыков в практиче-
ском программировании несложных MPI-программ, анализе точности вычис-
ляемых значений.
Необходимое оборудованиевычислительный кластер под управлением
UNIX-совместимой ОС, предустановленная поддержка MPI, рабочая консоль
программиста для управления прохождением пользовательских задач.
Порядок проведения работыстудент подготавливает исходные тексты
MPI-программ, компилирует их в исполнимое
приложение, запускает на
счет, анализирует (и по заданию преподавателя представляет в графическом
виде) выходные данные.
Часть 1 работы. Широкоизвестно, что
+
==
1
0
2
x
1
dx
)0(arctg)1(arctg
4
π
. Заменяя
вычисление интеграла конечным суммированием, имеем
=
=
+
+
nj
1j
2
j
1
0
2
x
x
1
1
n
1
1
dx
,
где n
x
/)5,0j(
j
= , n – число участков суммирования при численном интегри-
ровании.
Площадь каждого участка (вертикальнойполоски’ - stripe) вычисляется
функцией COMPUTE_INTERVAL как произведение шириныполоски’ (width)
на значение функции в центреполоски’, далее площади суммируются глав-
ным процессом (используется равномерная сетка).
С целью уяснения принципов распределения вычислений рекомендуется
проанализировать текст
COMPUTE_INTERVAL (здесь jномер участка интег-
рирования,
myrankномер данного вычислительного узла, intervalsобщее
число интервалов численного интегрирования,
ntasksобщее число вычис-
лительных узлов, значение локальных сумм накапливается в
localsum):
  4. Лабораторная работа 4. Простые MPI-программы
     (численное интегрирование)

  Общие сведения. Среди задач численного анализа встречается немало за-
дач, распараллеливание которых очевидно. Например, численное интегриро-
вание сводится фактически к (многочисленному) вычислению подинтеграль-
ной функции (что естественно доверить отдельным процессам), при этом
главная ветвь управляет процессом вычислений (определяет стратегию рас-
пределения точек интегрирования по процессам и ‘собирает’ частичные сум-
мы). Подобным же ‘интуитивным распараллеливанием’ обладают задачи по-
иска и сортировки в линейном списке, численного нахождения корней функ-
ций, поиск экстремумов функции многих переменных, вычисление рядов и
др. Трудности распараллеливания возникают, например, в случае рекурсив-
ных алгоритмов и при последовательном просчете по формулам.

  Цель работы – приобретение практических знаний и навыков в практиче-
ском программировании несложных MPI-программ, анализе точности вычис-
ляемых значений.
  Необходимое оборудование – вычислительный кластер под управлением
UNIX-совместимой ОС, предустановленная поддержка MPI, рабочая консоль
программиста для управления прохождением пользовательских задач.
  Порядок проведения работы – студент подготавливает исходные тексты
MPI-программ, компилирует их в исполнимое приложение, запускает на
счет, анализирует (и по заданию преподавателя представляет в графическом
виде) выходные данные.

                                            π                            1    dx
  Часть 1 работы. Широкоизвестно, что            = arctg(1) − arctg(0) = ∫
                                                                                   2
                                                                                       . Заменяя
                                             4                           01+ x
                                                                     1
                                                                         dx   1 j= n 1
                                                                           2 n ∑ 1+ x 2
вычисление интеграла конечным суммированием, имеем ∫                        ≈            ,
                                                                     01+ x      j=1    j
где x j = ( j − 0,5) / n , n – число участков суммирования при численном интегри-
ровании.
  Площадь каждого участка (вертикальной ‘полоски’ - stripe) вычисляется
функцией COMPUTE_INTERVAL как произведение ширины ‘полоски’ (width)
на значение функции в центре ‘полоски’, далее площади суммируются глав-
ным процессом (используется равномерная сетка).
  С целью уяснения принципов распределения вычислений рекомендуется
проанализировать текст COMPUTE_INTERVAL (здесь j – номер участка интег-
рирования, myrank – номер данного вычислительного узла, intervals – общее
число интервалов численного интегрирования, ntasks – общее число вычис-
лительных узлов, значение локальных сумм накапливается в localsum):



                                        - 38 -