Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторана робота №6 Технологія розподілених систем та паралельних обчислень
Завдання:
1. Ознайомитися з наведеним у методичних вказівках прикладом та теорією, розглянутою на Лекції 14.
2. Розробити програму розрахунку функції за індивідуальним завданням (див. табл. 6.1). Для розрахунку кожного блоку функції організувати окремий потік за допомогою базового класу Thread у відповідності з наведеною у завданні схемою. У кожному потоку організувати обчислення суми вирахуваних значень функцій для i=0,1, результат обчислень сума усіх блоків.
3. Забезпечити можливість запуску потоків у послідовному та паралельному вариантах.
4. Створити форму для виведення результатів обчислень та організації діалогу з користувачем.
5. Перевірити роботу програми при різних значеннях кількості ітерацій (див. табл. 6.2) та навести результати у звіті.
Таблиця 6.1 Варіанти індивідуальних завдань
№ п/п |
Потоки |
Схема |
||||
P1 |
P2 |
P3 |
P4 |
P5 |
||
1 |
sin(i) |
cos(i) |
cos(i)+ sin(i) |
i |
cos(i)1 |
Р1 Р2 Р3 Р4 Р5 |
2 |
cos(i) |
sin(i) |
i-sin(i) |
cos2(i) |
cos2(i)+1/i |
Р1 Р2 Р3 Р4 Р5 |
3 |
cos(i)/ sin2(i) |
sin(i)cos(i) |
i+cos(i) |
sin(2i)/2i |
cos(atan(i)) |
Р1 Р2 Р3 Р4 Р5 |
4 |
sin(i)+ cos(i) |
cos(i) |
sin(i)+i |
cos(i)/i |
sin(i) |
Р1 Р2 Р4 Р5 Р3 |
5 |
cos(i) |
isin(i) |
sin(i) |
cos(3i) |
cos2(i)+i |
Р3 Р1 Р2 Р4 Р5 |
6 |
sin(i)/2 |
cos(i)/2 |
arcctg(i) |
sin(i)/i |
i+1/i |
Р1 Р2 Р3 Р4 Р5 |
7 |
cos(i) |
sin(i) |
sin(i)+cos(i) |
sin2(i) |
cos2(i) |
Р2 Р3 Р5 Р1 Р4 |
8 |
i+i |
sin(cos(i)) |
sin(i)+i |
sin(i)cos(i) |
cos(i) |
Р2 Р3 Р4 Р5 Р1 |
9 |
sin(i) |
cos(i+ sin(i)) |
sin2(i)+ cos2(i) |
i+ cos2(i+i) |
i+i |
Р3 Р4 Р5 Р1 Р2 |
10 |
cos(i) |
sin(i+ cos(i)) |
cos(sin(i)) |
sin2(i)* cos2(i) |
sin2(i) |
Р3 Р4 Р5 Р1 Р2 |
11 |
sin(i)/2i |
cos(2*i) |
sin(i2) |
sin(i)/i |
i+sin(i)+ cos(i) |
Р3 Р4 Р5 Р2 Р1 |
12 |
i*cos(i)- 2i |
sin2( cos(i)) |
cos(i+2) |
sin(i) |
i+1/i+1/(2*i) |
Р1 Р2 Р5 Р4 Р3 |
13 |
i/2+i/3 |
cos(i) |
sin(i+3) |
cos(i)/2 |
cos2(i2) |
Р3 Р1 Р2 Р4 Р5 |
14 |
cos(i)/3 |
sin(i2)/2 |
cos2(2*i) |
4*sin(i) +3*cos(i) |
(5*i)/ sin(i) |
Р4 Р2 Р5 Р1 Р3 |
15 |
(1)i |
cos(i+ sin2(i) |
sin(i+ cos(i) |
sin(i+1) |
sin(i) |
Р3 Р5 Р4 Р1 Р2 |
16 |
cos(i)/4 |
sin2(cos(i)) |
i+i |
sin(i) |
cos(i) |
Р1 Р5 Р3 Р4 Р1 |
17 |
cos(sin(i)) |
sin2(i) |
cos2(2*i) |
cos(i) |
(3*i)/sin(i) |
Р2 Р1 Р4 Р5 Р3 |
18 |
cos(2*i) |
sin(i) |
cos2(i) |
cos(2*i) |
i+ cos(i+i) |
Р5 Р2 Р3 Р1 Р4 |
19 |
i/3+i/5 |
sin(i)/i |
cos(i)/2 |
sin2(i)+ cos2(i) |
sin(i) |
Р3 Р1 Р5 Р4 Р2 |
20 |
cos(i) |
cos(i) |
sin2(i) |
sin(i)+ 2*i |
abs(sin(i)) |
Р1 Р2 Р5 Р4 Р3 |
21 |
1/i+3/i |
cos(i)/5 |
(2*i)/sin(i) |
i+i |
i+ cos2(i+i) |
Р4 Р2 Р3 Р1 Р5 |
22 |
cos(sin(i)) |
i/3+i/2 |
cos(sin(cos(i))) |
cos(i) |
(2*i)/sin(i) |
Р1 Р2 Р5 Р4 Р3 |
23 |
sin2(i)+ cos2(i) |
abs(cos (i)) |
i+i/7 |
sin(i)/i |
sin(i/4) |
Р2 Р1 Р4 Р5 Р3 |
24 |
cos(i) |
sin2(i) |
sin(cos(sin(i))) |
sin(i/2)/2*i |
cos(i)/4 |
Р3 Р5 Р2 Р4 Р1 |
25 |
sin(i) |
sin2(i) |
sin(i)i |
cos(i) |
i+2*i+ 3*i |
Р5 Р2 Р3 Р4 Р1 |
26 |
sin(i) |
cos(i5) |
cos( sin(i)) |
sin2(i) |
cos(i) |
Р2 Р5 Р4 Р3 Р1 |
27 |
cos(i) |
cos2(i) |
sin2(i) |
cos(2*i) |
sin(i) |
Р4 Р3 Р5 Р1 Р2 |
28 |
sin(i) |
sin(cos(sin(i))) |
sin(i) |
cos( sin(i)) |
cos(i)/2 |
Р2 Р4 Р5 Р1 Р3 |
29 |
i/4+i/6 |
cos(sin(i)) |
cos(i)/2 |
i+cos2(i) |
sin(i) |
Р3 Р4 Р1 Р5 Р2 |
30 |
sin(i) |
sin(i+cos(i)) |
cos(i)/3 |
cos(i) |
sin(cos(sin(i))) |
Р4 Р2 Р3 Р1 Р5 |
31 |
sin(i)+ cos(i) |
tan(i)+ cos(i) |
|
|
|
Р1 Р2 |
Таблиця 6.2 Результати роботи програми при різній кількості ітерацій kIter
kIter |
Багатопотокове виконання T1 |
Послідовне виконання T2 |
|T1T2|/T2 |
500 |
|||
750 |
|||
1 000 |
|||
2 000 |
|||
3 000 |
|||
4 000 |
|||
5 000 |
|||
6 000 |
|||
8 000 |
|||
10 000 |
|||
15 000 |
ПРИКЛАД РОЗРОБКИ БАГАТОПОТОКОВОЇ ПРОГРАМИ (ВАРІАНТ №31)
При розвязанні задачі послідовним способом схема рішення має наступний вигляд:
P1
P2
P3
де Р1 перший блок;
Р2 другий блок;
Р3 = Р1 + Р2 обчислення суми блоків.
При розвязанні задачі паралельним способом, враховуючи, що блоки Р1 та Р2 незалежні, схема має наступний вигляд:
P1
P2
P3
У наведеній нижче програмі блоки Р1 та Р2 реалізовані у вигляді окремих потоків.
Реалізація.
1. Відкрийте Visual Studio 2010. У меню File виберіть New | Project. Відкриється діалогове вікно New Project (див. рис. 6.1). У групі Installed Templates виберіть мову Visual C# та шаблон Windows Forms Application. У полі Location введіть ім'я папки, де буде зберігатися проект. Наприклад, введіть назву папки D:\work\. У полі Name форми вкажіть її ім'я. Натисніть кнопку ОК.
Рис. 6.1. Вікно Add New Project під час створення проекту
2. На формі розмістіть текстове поле з іменем kIterTB для введення значення кількості ітерацій, елемент richTextBox для відображення результатів обчислень та три кнопки “Паралельно”, “Послідовно”, “Вихід”, як показано на рис. 6.2.
Рис. 6.2. Форма Windows-проекту
3. Двічі клацнувши мишкою на кнопці “Паралельно”, створіть для неї обробник події Click. Додайте до нього код, що містить виклик функцій у вигляді окремих потоків (див. Лістінг 6.1).
Лістінг 6.1. Обробник події Click для кнопки “Паралельно”
4. Двічі клацнувши мишкою на кнопці “Послідовно”, створіть для неї обробник події Click. Додайте до нього код, що містить послідовний виклик функцій (див. Лістінг 6.2).
Лістінг 6.2. Обробник події Click для кнопки “Послідовно”Лістінг
5. Двічі клацнувши мишкою на текстовому полі kIterTB, створіть для неї обробник події TextChanged. Додайте до нього код, що містить послідовний виклик функцій (див. Лістінг 6.3).
Лістінг 6.3. Обробник події TextChanged для текстового поля kIterTB
6. Натисніть кнопку F5, щоб запустити проект. Переконайтеся, що програма успішно працює.