Будь умным!


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

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

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


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

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

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

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

Лабораторная работа №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. ВВЕДЕНИЕ Одной из важнейших проблем стоящих перед автомобильным транспортом является повышением эксплуа
2. Контрольная работа по дисциплине ПСИХОЛОГИЯ Вариант 9 Выполнила- Степановская Юлия И
3. Деловой человек во второй половине 19 века
4. Курсовая работа- Этапы планирования инновационного проекта
5. Тема 14 ПРАВОВІ ВІДНОСИНИ 2 години Запоріжжя ~ 2010
6.  ЯНУСЭФФЕКТ Организм в своем структурном аспекте ~ не совокупность элементарных частей а в своем фун
7. Разработка программ с использованием динамической памяти
8. КОНТРОЛЬНАЯ РАБОТА ПО ТРУДОВОМУ ПРАВУ
9. то говорила мне на своем турецком
10. Красноярский государственный медицинский университет имени профессора В
11. Исследование урока физической культур
12. ТИПЫ ЗАДАЧ И СПОСОБЫ ИХ РЕШЕНИЯ В начальной школе вы решали задачи по действиям и с помощью простых урав.
13. Правовое положение лица, владеющего имуществом в течение срока приобретательной давности
14. Основные тенденции и особенности идеологических процессов в современном белорусском обществе
15. Доклад Теория речевых актов
16. Лабораторная работа 1 График функции Для начала работы я установил предварительные настройки
17. 1Поняття та сутність конкурентоспроможності продукту4 1
18. Основна частина доходів формується за рахунок оплати банківських послуг у вигляді процентів комісій інш
19. Священник Хартмут Каниа.html
20. Теплоснабжение предприятий АПК и социальной сферы Тепловой режим с-х помещений Воздушный режим с-