Лабораторна робота №3 з дисципліни “Паралельні та розподілені обчислення”. Паралельне моделювання математичних операції в мережах Петрі. Мета роботи: Побудувати розширену мережу Петрі, яка оптимально, тобто з мінімальною кількістю вузлів та переходів реалізовує обчислення, задані варіантом. Зауваження Вершини вхідних даних містять цілі невід’ємні числа i можуть з'явитися лише один раз. У мережі мають бути помічені вершини “старт”, “фініш” та “помилка” (при потребі). Знак результату має встановлюватися за допомогою додаткової вершини. При необхідності, результат може знаходитися у декількох вершинах (наприклад ціла і дробові частини). Зміст звіту 1. Титульний аркуш; 2. Постановку та аналіз завдання; 3. Загальну структуру мережі Петрі на рівні функціональних блоків з описом призначення кожного з них; 4. Мережі Петрі, що реалізовують всі функціональні блоки (різні), з розгорнутим поясненням їх роботи; при цьому, для показовості опису, слід використовувати символьні позначення елементів мережі (вузлів та переходів). 5. Часові оцінки роботи мережі для різних вхідних даних (по зростанню). 6. Висновки щодо можливості застосування побудованої мережі, як засобу представлення алгоритму виконання обчислень.
Варіанти завдань № Завдання
51 Задано цілі додатні числа u1,u2,v1,v2.Знайти:
Якщо u=u1+iu2;v=v1+iv2 — комплексні числа, [a/b]- ціла частина від ділення.
52 Задано цілі додатні числа u1,u2,v1,v2.Знайти:
Якщо u=u1+iu2;v=v1+iv2 — комплексні числа, [a/b]- ціла частина від ділення.
53 Задано цілі додатні числа u1,u2,v1,v2.Знайти:
Якщо u=u1+iu2;v=v1+iv2 — комплексні числа, [a/b]- ціла частина від ділення.
32 Задано цілі додатні числа u1,u2,v1,v2.Знайти:
Якщо u=u1+iu2;v=v1+iv2 — комплексні числа, [a/b]- ціла частина від ділення.
26 Задано цілі додатні числа u1,u2,v1,v2.Знайти:
Якщо u=u1+iu2;v=v1+iv2 — комплексні числа, [a/b]- ціла частина від ділення.
27 Задано цілі додатні числа u1,u2,v1,v2.Знайти:
Якщо u=u1+iu2;v=v1+iv2 — комплексні числа, [a/b]- ціла частина від ділення.
37 Задано цілі додатні числа u1,u2,v1,v2.Знайти:
Якщо u=u1+iu2;v=v1+iv2 — комплексні числа, [a/b]- ціла частина від ділення.
Задано цілі додатні числа u1,u2,v1,v2.Знайти:
Якщо u=u1+iu2;v=v1+iv2 — комплексні числа, [a/b]- ціла частина від ділення.
Задано цілі додатні числа u1,u2,v1,v2.Знайти:
Якщо u=u1+iu2;v=v1+iv2 — комплексні числа, [a/b]- ціла частина від ділення.
Задано цілі додатні числа u1,u2,v1,v2.Знайти:
Якщо u=u1+iu2;v=v1+iv2 — комплексні числа, [a/b]- ціла частина від ділення.
Приклад виконання
Нижче наведено малюнок мережі Петрі в нерозгорнутому варіанті.
Рис.1 Мережа Петрі яка виконує поставлене завдання В даній мережі є: Всього 390 елементів враховуючи внутрішню структуру блоків. -154 зв’язки -31 перехід -5 допоміжних вершин -13 глобальних вершин -5 функціональних блоків. Перелік блоків що входять в склад схеми: Main1,Main2,Main3,Add_signU_signW,Sub_signU_signW. Розглянемо детально кожен з них з розкриттям їхньої функціональної бази: Блок Main1:
Рис.2 Блок виконання Main1=(u+w+v)/u*u Перелік блоків:Abs(U),WUsign,a+b+c,Ui*Vi,A div B,A mod B. Блок Main2.
Рис.3 Блок виконання main2=v*v*u З блоків Ui*Vi та WUsign. Блок Main3.
Рис.4 Блок виконання main3=[15*w*w*v/13*u] Складається з блоків Main2,WUsign,ABS(V),A div B_A mod B. Розглянемо будову кожного з складових блоків. Блок WUsign- Цей блок виконує знакове множення двох комплексних чисел:спершу обчислює відповідні добутки а потім на основі знаку виконує додавання чи віднімання. Цей блок містить у складі блоки звичайного множення двох чисел , додавання і віднімання – наводити іхню структуру немає потреби,оскільки це є елементарні блоки обчислень що входять до мереж Петрі.
Рис.5 Блок виконання WUsign=w*u Наступний блок a+b+c – додає 3 комплексні числа.
Рис.6 Блок виконання a+b+c Блок Ui*Vi- виконує звичайне множення комплексних чисел при цьому формується тільки знак дійсної частини результату. В складі блоку є елементарні додавачі, віднімачі,помножувачі.
Рис.7 Блок виконання u*v Блок ABS(U)- шукає модуль комплексного числа. Також має суматор і простий помножувач. c Рис.8 Блок виконання abs(c) Блок A div B.A mod B- шукає цілу частину від ділення A на B.
Рис.9 Блок виконання a div b,a mod b. Блок Add_signU_signW- цей блок виконує знакове додавання двох комплексних чисел: відповідні числа семуються а потів аналізуються іхні знаки і на основі аналізу відбувається вибірка правильного результату та встановлення його знаку.Тут використано такі вершини process- для завантаження даних до пыдмереж.Help1 –для запобігання передчасного хибного обрахунку знаку результату.Copy-для копіювання значень знаку оскільки на потрідно перевіряти знак але з одною вершиною ми це не зробим.Xor-умова пересилання результату.Fin-результат завершення роботи помереж.
Рис.10 Блок виконання U+W Блок Sub_signU_signW-знакове віднімання комплексних чисел.Назви проміжних вершин виконують те саме призначення що і у попередньому блоці.Складається тоже з простих суматорів та помножувачів.