У вас вопросы?
У нас ответы:) SamZan.net

Тема- MPIпрограма обчислення визначеного iнтеграла

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.12.2024

Лабораторна робота №7

Тема: MPI-програма обчислення визначеного iнтеграла.

Мета роботи: розробити за допомогою MPI програму для обчислення визначеного iнтеграла на многопроцессорной системi.

Теоретичнi вiдомостi

Виконаємо розробку MPI-версiї розглянутої ранiше програми обчислення визначеного iнтегралу. Задача полягає в розподiлi обчислення IN на необхiднiй кiлькостi процесорiв. Нехай ми маємо необмежене число процесорiв, тодi розiб’ємо вихiдну задачу на елементарнi:

Ij = f(xj + 0.5h)h,  j=1,N (7.1)

i назначимо j-ту задачу на один процесор, всього буде задiяно N процесорiв. Обчислення можна вести в наступний спосiб:

  1.  Процесор P0 запитує у користувача кiлькiсть iнтервалiв N.
  2.  Процесор P0 передає N рештi процесiв P1 . . .PN-1.
  3.  Процесори P1 . ..PN-1 приймають вiд P0 значення N.
  4.  Процесори P0...PN-1 обчислюють значення h та Ij, j = 1,N-1 за формулою 7.1.
  5.  Процесори P1 . ..PN-1 передають P0 значення Ij, j = 1,N - 1.
  6.  Процесор P0 приймає значення Ij вiд процесорів P1...PN-1 i обчислює суму IN.

Однак, так як кiлькiсть процесорiв обмежена, то кожен процесор буде обчислювати часткову суму за допомогою наступного фрагменту:

for(j  = k;   j  < N; j +=M)
{

Ik = Ik+  f (xj +0.5h)h
}

де k - номер процесору, M - кiлькiсть процесорiв, N - кiлькiсть iнтервалiв.

Лiстiнг 7.1. MPI-програма обчислення iнтеграла

#include <stdio . h>

#include <string . h>

#include <mpi .h>

#define  MSG_ID1 98

#define  MSG_ID2 99

int   main( int   argc ,   char  ∗∗argv )

{

int  me,   size ;

unsigned   intervals ;

int   i,   j;

double  h,   Ik,   x;

MPI_Status   status ;

MPI_Init  (&argc ,  &argv ) ;

MPI_Comm_rank  (MPI_COMM_WORLD,  &me) ;

MPI_Comm_size  (MPI_COMM_WORLD,  &size ) ;

/  Головний  процес  запитує у користувача

      кiлькiсть   iнтервалiв  /

 if   (me == 0)

{        printf ("Enter   intervals :");

scanf ( "%u" , &intervals ) ;

       }   /   if   (me == 0)  /

/  Головний  процес  розсилає допомiжним  кiлькiсть   iнтервалiв  /

if (me == 0)

for (i  = 1;   i  <  size;   i++)

MPI_Send (&intervals ,1 ,MPI_UNSIGNED,   i ,  MSG_ID1, MPI_COMM_WORLD) ;

else

{       /  Допомiжнi процеси отримують от

 головного  кiлькiсть  iнтервалiв  /

 MPI_Recv(&intervals ,   1, MPI_UNSIGNED,   0, MSG_ID1, MPI_COMM_WORLD,  &status ) ;

}   /   else   if(me == 0)  /

/  Пiдрахунок суми  свого  iнтервалу  /

 h = 1.0/intervals;     Ik = 0;

for (j  = me;   j  <  intervals;   j += size)

{       x= (j  + 0.5)     h;

Ik += 4/(1 + x    x);

}   /   for(j=me;j<intervals ; j += size)/

 Ik  = h;

MPI_Barrier(MPI_COMM_WORLD) ;

if (  me== 0)

{       /  Головний  процес  збирає  вiд

 допомiжних значення  їх  сум  /

       for (i  = 1;   i  <  size;   i++)

      {

MPI_Recv(&x,   1, MPI_DOUBLE,   i ,  MSG_ID2,MPI_COMM_WORLD

,& status ) ;

Ik += x;

}  /   for(i = 1;   i  <  size;   i++) /

 printf ( " value = %.10 l f \n" ,   Ik ) ;

}   /   if( me == 0)  /

 else 

{       /  Допомiжнi процеси  вiдсилають

 головному  значення  своїх  сум    /

MPI_Send (&Ik , 1, MPI_DOUBLE,   0,MSG_ID2,MPI_COMM_WORLD) ; }   /   else   if( me == 0)  /

 MPI_Finalize () ;

return   0;

}

У данiй програмi використовується функцiя MPI_Barrier. Ця функцiя блокує роботу процесiв, що викликали дану процедуру, доти, поки всi процеси зазначеної групи, що залишилися, також не виконають цю функцiю.

Завдання

  1.  Виконати програму з лiстiнгу 7.1.
  2.  Розробити програму для обчислення визначеного iнтегралу на iнтервалi [0; 1]. Підiнтегральна функцiя та необхiдна кiлькiсть процесiв програми наведенi в таблиці.

Підiнтегральнi функцiї

№ варiанту

Функцiя

Кiлькiсть процесiв

1

2

3

1

f(x) = 5 (x + 1)

8

2

f(x) = 1/(x + 1)

4

3

f(x) = x2/4

5

4

f(x) = 3 x/(x + 1)

3

5

f(x) = 7/(x3 + 1)

8

6

f(x) = sin(x + 1)

7

7

f(x) = cos(1/(x + 2))

2

8

f(x) = x3/(x2 + 1)

6

9

f(x) = sin(x)/(x + 1)

5

10

f(x) = x/(cos(x2) + 1)

8

11

f(x) = (x + 1)/(x + 2)

4

12

f(x) = sin(x)/(x2 + 5)

9

13

f(x) = x + cos(x)

7

14

f(x) = tg(x)

8

15

f(x) = sin(x) + cos(x)

3

16

f(x) = sin(x) tg(x)

4

 

Контрольнi питання

  1.  Яким чином обмiнюються iнформацiєю процеси в паралельному додатку?
  2.  Якi функцiї виконують iнiцiалiзацiю бiблiотеки MPI? її закриття? одержання інформацiї про паралельну програму?
  3.  Якi функцiї використовуються для передачi повiдомлень мiж процесами?
  4.  Яка функцiя блокує процеси?




1. ПРОБЛЕМА ЭГОАнглия Лондон 22 Октябрь 1979 [Фрагмент лекции]Сегодня я хочу вам рассказать вам о проблеме эго по
2. И lbinndreev 3hmbHQLw Аскарова Р
3. Понятие национальной безопасности Конспект лекций
4. Вены и микрососуды подслизистого слоя стенки некоторых трубчатых внутренних органов
5. Учебное пособие- История моего города
6. Тема. Основи віршування Поняття про віршовану й прозову мови спільне й відмінне між ними
7. I Раздел ldquo;Введение II
8. Так при бактериальных инфекциях возбудители которых продуцируют экзотоксин дифтерия столбняк ботулиз
9. Организация и управление сельскохозяйственным производством
10. Технология производства.
11. Характеристика супов по группам 15 2
12. Западному Ф.О. Предлагаем вам секретный крепеж для автомобилей концерна McGrd ' продукция премиум класса
13. реферат дисертації на здобуття наукового ступеня кандидата технічних наук Вінниц
14. исторические водные и биологические ресурсы
15. 912 Направление Характеристика Направления Характери.html
16. тема Российской Федерации Одним из объективных факторов обусловливающих необходимость проведения госу
17. Формування української політічної еліти
18. БИЗНЕСОМ В РОССИИ
19. обобщающий показатель характеризующий в денежном выражении весь капитал предприятия компании как физиче
20. Серен. Прозвища- Лорд справедливости lord justiceПервый защитник The first defenderПовелитель неба Lord of the skyД.html