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

Лабораторная работа 7 по дисциплине ldquo;Параллельные и распределённые вычисленияrdquo; Выпол

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

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

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

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

от 25%

Подписываем

договор

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

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

Национальный Технический Университет Украины

“Киевский Политехнический Институт”

Факультет Информатики и Вычислительной Техники

Кафедра вычислительной техники

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

по дисциплине “Параллельные и распределённые вычисления”

Выполнил студент 3-го курса

Группы ИВ-83

Гулевский Д. В.

Киев, 2011г.


Задание на лабораторную работу

Изучить механизм  посылки сообщений  на примере механизма рандеву при программировании в ПВС с ЛП.

Структура ПВС

математическая задача:

 


Выполнение лабораторной работы:

Этап 1. Разработка параллельного математического алгоритма.

Этап 2. Алгоритмы процессов.

Задача T1

  1. Ввод MZ, MB, a;
  2. Передать MZ6Н, MB6Н, a в Т2;
  3. Получить MC от Т2;
  4. Счет
  5. Передать MАН в Т2;

Задача T2

  1. Получить MZ6Н, MB6Н, a от Т1;
  2. Передать MZН, MBН, a в Т6;
  3. Получить MС от Т2;
  4. Передать MZ, MB, a в Т3;
  5. Передать МС в Т6;
  6. Передать МС  в Т1; 
  7. Счет
  8. Получить MАН от Т1;
  9. Получить MАН от Т1;
  10. Передать MА в Т3;

Задача T6

  1. Получить MZН, MBН, a от Т2;
  2. Получить MC от Т2;
  3. Счет
  4. Передать MАН в Т2;

Задача T5, Т7

1. Получить MZН, MBН, a от Т3;

2. Получить MC от Т3;

     3. Счет

4.  Передать MАН в Т3;

Задача T3

  1. Получить MС от Т4;
  2. Передать МС в Т5;
  3. Передать МС  в Т7;
  4. Передать МС  в Т2; 
  5. Получить MZ, MB, a от Т2;
  6. Передать MZН, MBН, a в Т5;
  7. Передать MZН, MBН, a в Т7;
  8. Передать MZН, MBН, a в Т4;
  9. Счет
  10. Получить MА от Т2;
  11. Получить MАН от Т5;
  12. Получить MАН от Т7;
  13. Передать MА в Т4;

Задача T4

  1. Ввод MC;
  2. Передать MC в Т3;
  3. Получить MZН, MBН, a от Т3;
  4. Счет

5.  Получить MА от Т3;

6.  Вывод МА.


Этап 3. Структурная схема взаимодействия задач


Этап 4. Разработка программы

GNAT GPL 2010 (20100603)

Copyright 1992-2010, Free Software Foundation, Inc.

Compiling: lab7.adb (source file time stamp: 2011-05-12 00:38:52)

    1.     -- **********************

    2.     -- Lab #7, Ada, Randevous

    3.      -- MA = MB+ Alpha(MC*MZ);

    4.      -- st. IO-83

    5.      -- Gulevsky Denis

    6.      -- 10/05/2011

    7.      -- **********************

    8.  WITH Ada.Text_IO;

    9.     USE  Ada.Text_IO;

   10.     WITH Ada.Integer_Text_IO;

   11.     USE  Ada.Integer_Text_IO;

   12.     with Ada.Synchronous_Task_Control;

   13.     use  Ada.Synchronous_Task_Control;

   14.     

   15.     Procedure Lab7 is

   16.         N: integer:=7;

   17.         P: integer:=7;

   18.         H: integer:=N/P;

   19.    

   20.         Type Vector is array(Positive range<>) of Integer;

   21.             subtype VectorN is Vector(1..N);

   22.         Type T_Matrix is array (Positive range <>) of VectorN;

   23.             subtype MatrixHN is T_Matrix(1..H);

   24.             subtype Matrix4HN is T_Matrix(1..4*H);

   25.             subtype Matrix3HN is T_Matrix(1..3*H);

   26.             subtype MatrixNN is T_Matrix(1..N);

   27.    subtype Matrix6HN is T_Matrix(1..6*H);

   28.

   29.           

   30.         function MatrixInput(a: in Integer) return MatrixNN is

   31.                       ret: MatrixNN;

   32.         begin

   33.              For i in 1..N loop

   34.                 For j in 1..N loop

   35.                     ret(i)(j) := a;

   36.                 end loop;

   37.             end loop;

   38.             return ret;

   39.         end MatrixInput;

   40.     

   41.         function calc(MZ: in MatrixHN; MC: in MatrixNN; MB: in MatrixHN; Alpha: in integer) return MatrixHN is

   42.             MA: MatrixHN;

   43.         begin

   44.             For i in 1..H loop

   45.                 For j in 1..N loop

   46.                     MA(i)(j) := MB(i)(j);

   47.                     For q in 1..N loop

   48.                         MA(i)(j) := MA(i)(j) + Alpha*MZ(i)(q)*MC(q)(j);

   49.                     end loop;

   50.                 end loop;

   51.             end loop;

   52.            

   53.             return MA;

   54.         end calc;

   55.       

   56.         procedure Start is

   57.             Task Task1 is

   58.                 Entry Input12(MC: in MatrixNN);

   59.             End Task1;

   60.    

   61.    Task Task6 is

   62.                 Entry Input62(MC: in MatrixNN);

   63.     Entry Input61(MZ: in MatrixHN; MB: in MatrixHN ; alpha: in integer);

   64.             End Task6;

   65.    

   66.             Task Task2 is

   67.                 Entry Input21(MZ: in Matrix6HN; MB: in Matrix6HN ; alpha: in integer);

   68.     Entry Result21(MA:in MatrixHN);

   69.     Entry Result26(MA:in MatrixHN);

   70.     Entry Input22(MC : in MatrixNN);

   71.             End Task2;

   72.    

   73.             Task Task3 is

   74.                 Entry Input31(MZ: in Matrix4HN; MB: in Matrix4HN ; alpha: in integer);

   75.     Entry Result32(MA:in Matrix3HN);

   76.     Entry Result35(MA:in MatrixHN);

   77.     Entry Result37(MA:in MatrixHN);

   78.     Entry Input32(MC : in MatrixNN);

   79.             End Task3;  

   80.    

   81.    Task Task5 is

   82.                 Entry Input52(MC: in MatrixNN);

   83.     Entry Input51(MZ: in MatrixHN; MB: in MatrixHN ; alpha: in integer);

   84.             End Task5;   

   85.  

   86.    Task Task7 is

   87.                 Entry Input72(MC: in MatrixNN);

   88.     Entry Input71(MZ: in MatrixHN; MB: in MatrixHN ; alpha: in integer);

   89.             End Task7;

   90.    

   91.    Task Task4 is

   92.                 Entry Input41(MZ: in MatrixHN; MB: in MatrixHN ; alpha: in integer);

   93.                 Entry Result43(MA:in Matrix6HN);

   94.             End Task4;

   95.

   96.

   97.   --------------------------------------------------------------

   98.             Task body Task1 is

   99.                 MC1, MZ1, MB1: MatrixNN;

  100.     MA1: MatrixHN;

  101.                 a1: Integer;

  102.             begin

  103.                 Put_line("[Task 1] Started");

  104.     --1)Ввод MZ, MB, Alpha;

  105.                 MZ1 := MatrixInput(1);

  106.     MB1 := MatrixInput(1);

  107.     a1 := 1;

  108.     --2)Передать MZ_6H, MB_6H, Alpha в Т2.

  109.                 Task2.Input21(MZ1(H+1..7*H), MB1(H+1..7*H), a1);

  110.     --3)Получить МС

  111.                 Accept Input12(MC: in MatrixNN) do

  112.                     MC1 := MC;

  113.                 end Input12;

  114.     

  115.                 --4)Счет MA_H        

  116.                 MA1 := calc(MZ1(1..H), MC1, MB1(1..H), a1);

  117.     --5) Передать MA_Н в Т2

  118.                 Task2.Result21(MA1);

  119.                 Put_line("[Task 1] Finished");

  120.             End Task1;

  121.   --------------------------------------------------------------

  122.             Task body Task2 is

  123.     MC1 : MatrixNN;

  124.                 MZ1, MB1: Matrix6HN;

  125.     MA1: Matrix3HN;

  126.  

  127.                 a1: Integer;

  128.             begin

  129.                 Put_line("[Task 2] Started");

  130.     --1) Получить MZ_6H, MB_6H, Alphа.

  131.                 Accept Input21(MZ: in Matrix6HN; MB: in Matrix6HN ; alpha: in integer) do

  132.                     MZ1 := MZ;

  133.      a1:= alpha;

  134.      MB1:= MB;

  135.                 end Input21;

  136.     --2) Передать MZ_H, MB_H Alpha В Т6.

  137.                 Task6.Input61(MZ1(H+1..2*H), MB1(H+1..2*H), a1);

  138.     --3) Получить МС.

  139.     Accept Input22(MC: in MatrixNN) do

  140.                     MC1 := MC;

  141.                 end Input22;

  142.        --4) Передать MZ_4H, MB_4H Alpha В Т3.

  143.     Task3.Input31(MZ1(2*H+1..6*H), MB1(2*H+1..6*H), a1);

  144.     --5) Передать МС в Т1.

  145.     Task1.Input12(MC1);

  146.     --6) Передать МС в Т1.

  147.     Task6.Input62(MC1);

  148.     --7) Cчет.   

  149.                 MA1(1+H..2*H) := calc(MZ1(1..H), MC1, MB1(1..H), a1);

  150.     --8) Получить МА_Н от Т1.

  151.                 Accept Result21(MA: in MatrixHN) do

  152.                     MA1(1..H) := MA;

  153.                 end Result21;

  154.     --9) Получить МА_Н от Т6.

  155.     Accept Result26(MA: in MatrixHN) do

  156.                     MA1(2*H+1..3*H) := MA;

  157.                 end Result26;

  158.     --10) Передать МА_3Н в Т3.

  159.     Task3.Result32(MA1);

  160.                 Put_line("[Task 2] Finished");

  161.             End Task2;  

  162.  --------------------------------------------------------------

  163.             Task body Task6 is

  164.                 MC1: MatrixNN;

  165.     MA1, MZ1, MB1: MatrixHN;

  166.                 a1: Integer;

  167.             begin

  168.                 Put_line("[Task 6] Started");

  169.     --1) Получить MZ_H, MB_H, Alphа.  

  170.        Accept Input61(MZ: in MatrixHN; MB: in MatrixHN ; alpha: in integer) do

  171.                     MZ1 := MZ;

  172.      a1:= alpha;

  173.      MB1:= MB;

  174.                 end Input61;

  175.     --2) Получить МС

  176.                 Accept Input62(MC: in MatrixNN) do

  177.                     MC1 := MC;

  178.                 end Input62;

  179.                 --3)Счет MA_H        

  180.                 MA1 := calc(MZ1(1..H), MC1, MB1(1..H), a1);

  181.     --4) Передать MA_Н в Т2

  182.                 Task2.Result26(MA1);

  183.                 Put_line("[Task 6] Finished");

  184.             End Task6;   

  185.  --------------------------------------------------------------

  186.             Task body Task5 is

  187.                 MC1: MatrixNN;

  188.     MA1, MZ1, MB1: MatrixHN;

  189.                 a1: Integer;

  190.             begin

  191.                 Put_line("[Task 5] Started");

  192.     --1) Получить МС

  193.                 Accept Input52(MC: in MatrixNN) do

  194.                     MC1 := MC;

  195.                 end Input52;

  196.     --2) Получить MZ_H, MB_H, Alphа.  

  197.        Accept Input51(MZ: in MatrixHN; MB: in MatrixHN ; alpha: in integer) do

  198.                     MZ1 := MZ;

  199.      a1:= alpha;

  200.      MB1:= MB;

  201.                 end Input51;

  202.                 --3)Счет MA_H        

  203.                 MA1 := calc(MZ1(1..H), MC1, MB1(1..H), a1);

  204.     --4) Передать MA_Н в Т2

  205.                 Task3.Result35(MA1);

  206.                 Put_line("[Task 5] Finished");

  207.             End Task5;

  208.  --------------------------------------------------------------

  209.             Task body Task7 is

  210.                 MC1: MatrixNN;

  211.     MA1, MZ1, MB1: MatrixHN;

  212.                 a1: Integer;

  213.             begin

  214.                 Put_line("[Task 7] Started");

  215.     --1) Получить МС

  216.                 Accept Input72(MC: in MatrixNN) do

  217.                     MC1 := MC;

  218.                 end Input72;

  219.         Put_line("blyanahui7");

  220.     --2) Получить MZ_H, MB_H, Alphа.  

  221.        Accept Input71(MZ: in MatrixHN; MB: in MatrixHN ; alpha: in integer) do

  222.                     MZ1 := MZ;

  223.      a1:= alpha;

  224.      MB1:= MB;

  225.                 end Input71;

  226.                 --3)Счет MA_H        

  227.                 MA1 := calc(MZ1(1..H), MC1, MB1(1..H), a1);

  228.     --4) Передать MA_Н в Т2

  229.                 Task3.Result37(MA1);

  230.                 Put_line("[Task 7] Finished");

  231.             End Task7;   

  232.   --------------------------------------------------------------

  233.             Task body Task3 is

  234.     MC1 : MatrixNN;

  235.                 MZ1, MB1: Matrix4HN;

  236.     MA1: Matrix6HN;

  237.                 a1: Integer;

  238.             begin

  239.                 Put_line("[Task 3] Started");

  240.     --1) Получить МС.

  241.     Accept Input32(MC: in MatrixNN) do

  242.                     MC1 := MC;

  243.                 end Input32;

  244.     --2) Передать МС в Т1.

  245.     Task5.Input52(MC1);

  246.     --3) Передать МС в Т1.

  247.     Task7.Input72(MC1);

  248.     Put_line("blyanahui31");

  249.     --4) Передать МС в Т1.

  250.     Task2.Input22(MC1);  

  251.     Put_line("blyanahui3");    

  252.     --5) Получить MZ_4H, MB_4H, Alphа.

  253.                 Accept Input31(MZ: in Matrix4HN; MB: in Matrix4HN ; alpha: in integer) do

  254.                     MZ1 := MZ;

  255.      a1:= alpha;

  256.      MB1:= MB;

  257.                 end Input31;

  258.     --6) Передать MZ_H, MB_H Alpha В Т6.

  259.                 Task7.Input71(MZ1(H+1..2*H), MB1(H+1..2*H), a1);

  260.     --7) Передать MZ_H, MB_H Alpha В Т3.

  261.     Task5.Input51(MZ1(2*H+1..3*H), MB1(2*H+1..3*H), a1);

  262.     --8) Передать MZ_4H, MB_4H Alpha В Т3.

  263.     Task4.Input41(MZ1(3*H+1..4*H), MB1(3*H+1..4*H), a1);

  264.     --9) Счет.

  265.                 MA1(1+3*H..4*H) := calc(MZ1(1..H), MC1, MB1(1..H), a1);

  266.     --10) Получить МА_3Н от Т2.

  267.     Accept Result32(MA: in Matrix3HN) do

  268.                     MA1(1..3*H) := MA;

  269.                 end Result32;

  270.     --11) Получить МА_Н от Т5.

  271.                 Accept Result35(MA: in MatrixHN) do

  272.                     MA1(1+4*H..5*H) := MA;

  273.                 end Result35;

  274.     --12) Получить МА_Н от Т7.

  275.     Accept Result37(MA: in MatrixHN) do

  276.                     MA1(1+5*H..6*H) := MA;

  277.                 end Result37;

  278.     --13) Передать МА_6Н в Т3.

  279.     Task4.Result43(MA1);

  280.                 Put_line("[Task 3] Finished");

  281.             End Task3;   

  282.   --------------------------------------------------------------

  283.             Task body Task4 is

  284.                 MC1, MA1: MatrixNN;

  285.        MZ1, MB1: MatrixHN;

  286.                 a1: Integer;

  287.             begin

  288.                 Put_line("[Task 4] Started");

  289.     --1)Ввод MZ, MB, Alpha;

  290.                 MC1 := MatrixInput(1);

  291.     MA1 := MatrixInput(0);

  292.     --2)Передать MZ_6H, MB_6H, Alpha в Т2.

  293.                 Task3.Input32(MC1);

  294.     --3)Получить МС

  295.                 Accept Input41(MZ: in MatrixHN; MB: in MatrixHN ; alpha: in integer) do

  296.                     MZ1 := MZ;

  297.      a1:= alpha;

  298.      MB1:= MB;

  299.                 end Input41;

  300.                 --4)Счет MA_H        

  301.                 MA1(1+6*H..7*H) := calc(MZ1(1..H), MC1, MB1(1..H), a1);

  302.     --5) Получить MA_6Н

  303.     Accept Result43(MA: in Matrix6HN) do

  304.                     MA1(1..6*H) := MA;

  305.                 end Result43;

  306.                 --6) Выволд на экран    

  307.     For i in 1..N loop

  308.      For j in 1..N loop

  309.       Put(MA1(i)(j));

  310.      end loop;

  311.      New_Line;

  312.     end loop;

  313.                 Put_line("[Task 4] Finished");

  314.             End Task4;

  315.  

  316.   Begin

  317.    null;

  318.         end Start;

  319.  --------------------------------------------------------------

  320.     Begin

  321.   Put_Line("[Main task] started");

  322.   Start;

  323.   put_line("[Main task] finished");

  324.  end Lab7;

  325.  




1. Ляля Насуханова (1939-2000 гг
2. технологической революции освоения высоких технологий и распространения ЭВМ народное хозяйство уже не мож
3. Вариант 9 1 Какая теория связывает стоимость с предельной полезностью- а марксистская б классическая
4. тема- сущность критерии типы Выполнила- студентка 1 курса Специальности- Учет и аудит 1-3гр.html
5. тематизатором схоластичної філософії був- а А
6. правовых сделок Согласно п
7. От средневековья - к новому времени
8. Как гены человека наносят на карту
9. СанктПетербургская государственная химикофармацевтическая академия Министерства здравоохранения Росси
10. Системы автоматического управления
11. Моральне виховання підростаючого покоління
12. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ для самостоятельной работы студентов Учеб
13. История Башкортостана
14. двойственная природа света
15. Бухгалтерский баланс и его роль в управлении предприятием на примере ООО Стандарт
16. История массажа
17. Тема- Синдром повреждения конечностей
18. Этнополитические процессы в Российской Федерации
19. Выполнение основных операций ЕТО Ежедневное техническое обслуживание проводится с целью поддержания ра
20. . Методологическая характеристика проблемы автоматизации подбора и найма персонала [4] Глава 2.