- •Лабораторна робота №2.
- •Приклад документованого тексту програми.
- •Виклик утiлiти Javadoc з командного рядка.
- •Завдання:
- •Лабораторна робота №3.
- •Теоретичнi вiдомостi.
- •Завдання
- •Iндивiдуальнi завдання до захисту роботи
- •Лабораторна робота №4.
- •Теоретичнi вiдомостi.
- •Завдання
- •Iндивiдуальнi завдання до захисту роботи
- •Рекурсивна версiя засувки
- •Завдання
- •Iндивiдуальнi завдання до захисту роботи
- •Використання семафорiв для сигналiзацiї
- •Рахуючий семафор
- •Обмежуючий семафор
- •Потоки стандартного вводу / виводу
- •Стандартний поток виводу System.Out
- •Стандартний поток вводу System.In
- •Стандартний поток помилок System.Err
- •Потоки вводу / виводу пакету java.Io
- •Файловий ввод / вивід
- •Рядковий ввод / вивід
- •Завдання:
- •Опанувати методику створення розподiлених програм з використанням часової синхронiзацiї паральних потокiв.
- •Приклад використання класу CountDownLatch
- •Опанувати методику створення розподiлених програм з використанням часової синхронiзацiї паральних потокiв.
- •Приклад вiдстеження моменту закiнчення роботи декiлькох потокiв
- •Завдання:
- •Опанувати методику створення розподiлених програм з використанням обмiнникiв.
- •Завдання:
- •Iндивiдуальнi завдання до захисту роботи
- •Мережі і сокети
- •Приклад: віддалене читання файлу
- •Сервер читання файлів мовою Java
- •Клієнт читання файлів мовою Java
- •Порядок компіляції та запуску програм
- •Завдання:
- •Контрольні питання:
- •Iндивiдуальнi завдання до захисту роботи
- •Опанувати методику створення розподiлених програм з використанням конвейеру команд.
- •Опанувати методику побудови моделi обчислень у виглядi графа "операцiї-операнди".
- •Приклад паралельного алгоритму для обчислення площi прямокутника
- •Завдання:
- •Iндивiдуальнi завдання до захисту роботи
- •Опанувати методику створення розподiлених програм з використанням портфеля задач.
- •Приклад використання портфеля задач за допомогою ExecutorService.
- •Завдання:
- •Iндивiдуальнi завдання до захисту роботи
- •Опанувати методику створення розподiлених програм з використанням бар'єрної синхронiзацiї.
- •Приклад використання бар'ера
- •Завдання:
- •Iндивiдуальнi завдання до захисту роботи
- •Опанувати методику синхронiзацiї паральних процесiв з використанням блокуючої черги.
- •Приклад реалiзацiї блокуючої черги
- •Приклад використання блокуючої черги
- •Завдання:
- •Iндивiдуальнi завдання до захисту роботи
- •Вимоги до звiту
- •Iндивiдуальнi завдання для самостiйної роботи
- •Вимоги до звiту
- •Iндивiдуальнi завдання для самостiйної роботи
- •Вимоги до звiту
- •Iндивiдуальнi завдання для самостiйної роботи
- •Додатковi завдання для пiдвищення балiв з курсу “Паралельне програмування”
Завдання:
Розглянути, вiдкомпiлювати та запустити на виконання наведенi приклади.
З'ясувати принципи взємодiї та синхронiзацiї потокiв при використаннi портфеля задач.
З'ясувати особливостi програмування та застосування портфеля задач.
Iндивiдуальнi завдання до захисту роботи
Написати паралельну програму для генерацiї послiдовностi чисел, якi менше за 10000 та дiляться на 3, 5, 7, 9. Використати два процеси та чотири задачi.
Обчислити визначений iнтеграл для функцiї y = x2 / 4 у дiапазонi [2, 10]. Використати два процеси та чотири задачi.
Обчислити довжину шляху, пройденого матерiальною точкою за 48 секунд, яка рухається за таким законом: y = 16 * sin(2 * t) x = 4 * t Використати три процеси та дев'ять задач.
Дано кардiоїда вписана у квадрат. Обрахувати спiввiдношення площин кардiоїди та квадрата методом Монте-Карло. Використати чотири процеси та шiстнадцять задач.
Дано коло вписане у квадрат. Обрахувати спiввiдношення площин кола та квадрата методом Монте-Карло. Використати два процеси та вiсiм задач.
Дано квадрат вписаний у коло. Обрахувати спiввiдношення площин кола та квадрата методом Монте-Карло. Використати чотири процеси та шiстнадцять задач.
Дано трикутник вписаний у коло. Обрахувати спiввiдношення площин кола та трикутника методом Монте-Карло. Використати три процеси та шiстнадцять задач.
Дано коло вписане у трикутник. Обрахувати спiввiдношення площин кола та трикутника методом Монте-Карло. Використати три процеси та шiстнадцять задач.
Дано зiрка вписана у коло. Обрахувати спiввiдношення площин кола та зiрки методом Монте-Карло. Використати три процеси та дев'ять задач.
Дано сфера вписана у куб. Обрахувати спiввiдношення об'ємiв сфери та куба методом Монте-Карло. Використати три процеси та дев'ять задач.
Дано куб вписаний у сферу. Обрахувати спiввiдношення об'ємiв сфери та куба методом Монте-Карло. Використати чотири процеси та шiстнадцять задач.
Дано сфера вписана у тетраедр. Обрахувати спiввiдношення об'ємiв сфери та тетраедра методом Монте-Карло. Використати три процеси та дев'ять задач.
Дано тетраедр вписаний у сферу. Обрахувати спiввiдношення об'ємiв сфери та тетраедра методом Монте-Карло. Використати чотири процеси та шiстнадцять задач.
Примiтка.
Тетраедр описати як об'ємну фiгуру,
що обмежена такими площiнами
,
де a - довжина
сторони тетраедра.
Лабораторна робота №14.
Тема: Розподiлене програмування на мовi Java з використанням бар'єрної синхронiзацiї.
Мета:
Опанувати методику створення розподiлених програм з використанням бар'єрної синхронiзацiї.
Теоретичнi вiдомостi.
Барьеры
Бар'ер це засiб синхронiзацiї, який використовується для того, щоб деяка кiлькiсть потокiв очикувала один одного у деякому мiсцi програми, яке зветься бар'ером або точкою синхронiзацiї. Пiсля того, як усi потоки досягли точки синхронiзацiї, вони розблокуються i зможуть продовжувати виконання.
На практицi бар'ери використовуються для збору результатiв виконання деякої розпаралеленої задачi. У якостi прикладу можна розглянути задачу множення матриць. При розпаралелюваннi цiєї задачi кожному потоку буде доручено множення визначених рядкiв на визначенi ствпцi. В точцi синхронiзацiї отриманi результати збираються вiд усiх потокiв, i будується кiнцева матриця.
Розглянемо приклад використання класу CyclicBarrier, який є реалiзацiєю бар'єра. Вiн є складовою пакета java.util.concurrent.
