Хелпикс

Главная

Контакты

Случайная статья





Семинар 7.. Тема: Применение технологии MPI для параллельной реализации вычисления суммы ряда. Раздел 1.. Раздел 2.



Семинар 7.

Тема: Применение технологии MPI для параллельной реализации вычисления суммы ряда

План:

1. Что мы освоили на предыдущих семинарах касательно технологии MPI. Подводим итоги.

2. Используем наши знания для параллельной реализации вычисления суммы ряда

 

Раздел 1.

Итак – еще раз повторим функции MPI, которые мы знаем.

Функции общего назначения

MPI_Init – инициализация работы с MPI

MPI_Finalize – завершение работы с MPI

MPI_Comm_rank – определение номера процесса

MPI_Comm_size – определение размера группы (количества процессов в группе)

Функции для обмена между отдельными процессами

MPI_Send – блокирующая отправка данных процессу с заданным номером

       MPI_Recv – блокирующий прием данных от процесса с заданным номером

       MPI_Isend – неблокирующая отправка процессу с заданным номером

MPI_Irecv – неблокирующий прием от процесса с заданным номером

MPI_Test – проверка завершенности неблокирующего приема\отправки

       MPI_Wait – ожидание завершения неблокирующего приема\отправки

Функции коллективного взаимодействия между параллельными процессами

MPI_Bcast – рассылка данных от одного процесса всем процессам в группе

MPI_Reduce (MPI_Allreduce) – глобальные операции над данными из разных процессов

Кроме того, мы знаем два варианта параллельной реализации циклов- «блочное» и «циклическое», см материалы предыдущего семинара и\или стр.13 и 14 Пособия по MPI.

 

Раздел 2.

Применим наши знания для параллельной реализации расчета суммы ряда

 

 

· Сумма этого ряда равна (если вспомнить математический анализ)

π2/6+ π4/90.

· Естественно, вместо бесконечного числа членов ряда будем суммировать конечное число – n=10000000.

· Каждый процесс будет суммировать свои члены ряда – вычислять частичную сумму с.

· Для сложения всех частичных сумм из разных процессов применим процедуру MPI_Reduce с записью результата в с1.

· Будем измерять время счета с использованием функции MPI_Wtime

Пояснение: как работает процедура MPI_Wtime

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

 

double time1=MPI_Wtime();

double time2= MPI_Wtime();

 

Разница между time1 и time2 дает время (в секундах) выполнения фрагмента между двумя вызовами MPI_Wtime.

Что надо сделать:

 

1. Довести до работающего состояния программу расчета суммы ряда. Проверить соответствие расчетной суммы ряды и аналитического значения.

2. Выполнить серию запусков с возрастающим количеством процессов. Найти для данной задачи оптимальное количество процессов, при котором время вычисления – минимальное.

3. Заменить в программе «блочную» схему параллельного выполнения цикла на «циклическую» и выполнить для этого случая пункт 2.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.