- •Лабораторна робота №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 розмiром N x N на одиницю. Програма повинна складатися з трьох процесiв. Перший процес генерує початкову матрицю та поелементно передає її другому процесу. Другий процес здiйснює послiдовне збiльшення кожного елемента матрицi на одиницю та передає результат до третього процесу. Третiй процес виводить результат на консоль. Розмiрнiсть матрицi задати як параметр у командному рядку пiд час запуску програми.
Розробити розподiлену програму для поелементного складання двох матриць розмiром N x N. Перший та другий процеси генерують початковi матрицi та поелементно передають їх до третього процесу. Третiй процес реалiзує процедуру складення елементiв матриць та по мiрi отримання результату передає його до четвертого процесу. Четвертий процес виводить результат на консоль. Розмiрнiсть матрицi задати як параметр у командному рядку пiд час запуску програми.
Розробити розподiлену програму для обчислення поелементної рiзницi двох ненульових матриць розмiром N x N. Перший та другий процеси генерують початковi матрицi та поелементно передають їх до третього процесу. Третiй процес реалiзує процедуру обчислення рiзницi елементiв матриць та по мiрi отримання результату передає його до четвертого процесу. Четвертий процес виводить результат на консоль. Розмiрнiсть матрицi задати як параметр у командному рядку пiд час запуску програми.
Побудувати фiльтр, що складається з трьох процесiв. Перший процес генерує послiдовнiсть початкових даних у дiапазонi [-100, 100]. Можна використати рандомiзатор. Другий процес усi вiд'ємнi значення iнвертує у позитивнi, збiльшуючи їх у двiчi. Третiй процес виводить результат на консоль. Кiлькiсть даних, якi треба згенерувати та обробити, задати як параметр у командному рядку пiд час запуску програми.
Розробити розподiлену програму для обчислення характеристичних чисел векторiв. Програма повинна складатися з трьох процесiв. Перший процес генерує чотирьохкомпонентнi вектори (a1, a2, a3, a4). Другий процес виконує обрахунок характеристичного числа кожного вектору за такою формулою: y = a1 * a2 / (a3 + a4). Третiй процес виводить результат на консоль. Кiлькiсть даних, якi треба згенерувати та обробити, задати як параметр у командному рядку пiд час запуску програми.
Розробити розподiлену програму, що складається з чотирьох процесiв. Перший процес генерує числа з плаваючою точкою (float). Другий процес роздiляє цiлочисельну та дробову частки початкового числа та направляє цiлочисельну - до третього процесу, а дробову - до четвертого. Третiй i четвертий процеси обраховують суму чисел, що до них надiшли та виводять результат на консоль. Кiлькiсть даних, якi треба згенерувати та обробити, задати як параметр у командному рядку пiд час запуску програми.
Розробити розподiлену програму, що складається з чотирьох процесiв. Перший процес генерує чотирьохкомпонентнi вектори (a1, a2, a3, a4) та передає їх другому процесу. Другий процес розподiляє компоненти векторiв таким чином:
першу та другу компоненти вектора передає третьому процесу (a1, a2);
третю i четверту компоненти вектора передає четвертому процесу (a3, a4);
Третiй i четвертий процеси обраховують суми кожної пари елементiв, що до них надiйшли та виводять результат на консоль. Кiлькiсть даних, якi треба згенерувати та обробити, задати як параметр у командному рядку пiд час запуску програми.
Розробити розподiлену програму, що складається з трьох процесiв. Перший та другий процеси генерують двокомпонентнi вектори (a1, a2), (a3, a4) та направляють їх до третього процесу. Третiй процес об'єднує кожну пару отриманих двокомпонентних векторiв у чотирикомпонентний вектор (a1, a2, a3, a4) та виводить результат на консоль. Кiлькiсть даних, якi треба згенерувати та обробити, задати як параметр у командному рядку пiд час запуску програми.
Розробити розподiлену програму, що складається з п'яти процесiв. Перший процес генерує трьохкомпонентнi вектори (a1, a2, a3) та передає їх до другого процесу. Другий процес розподiляє компоненти векторiв таким чином:
першу компоненту вектора передає третьому процесу;
другу компоненту вектора передає четвертому процесу;
третю компоненту вектора передає п'ятому процесу.
Третiй, четвертий i п'ятий процеси пiдраховують суми значень компонентiв векторiв, що до них надiйшли та виводять результати у консоль. Кiлькiсть даних, якi треба згенерувати та обробити, задати як параметр у командному рядку пiд час запуску програми.
Розробити розподiлену програму, що складається з шести процесiв. Перший процес генерує трьохкомпонентнi вектори (a1, a2, a3) та передає їх до другого процесу. Другий процес розподiляє компоненти векторiв таким чином: першу компоненту вектора передає третьому процесу, а з другої i третьої компонент формує новий двохкомпонентний вектор i передає його до четвертого процесу. Четвертий процес роздає компоненти отриманого двокомпонентного вектора п'ятому та шостому процесам. Третiй, п'ятий та шостий процеси виводять отриманi данi у консоль. Кiлькiсть даних, якi треба згенерувати та обробити, задати як параметр у командному рядку пiд час запуску програми.
Розробити розподiлену програму, що складається з чотирьох процесiв. Першi три процеси генерують компоненти вектора a1, a2, a3 вiдповiдно та направляють їх до четвертого процесу. Четвертий процес об'єднує отриманi компоненти у вектор (a1, a2, a3) та виводить результат на консоль. Кiлькiсть даних, якi треба згенерувати та обробити, задати як параметр у командному рядку пiд час запуску програми.
Розробити конвеєр для генерацiї чотирьохкомпонентних векторiв. Перший процес генерує перший елемент вектору та передає результат другому процесу. Другий процес генерує другий елемент вектору та передає результат третьому процесу. I т. д. Останнiй, п'ятий процес одержує вiд четвертого побудований таким чином вектор та виводять результати у консоль. Кiлькiсть даних, якi треба згенерувати та обробити, задати як параметр у командному рядку пiд час запуску програми.
Розробити розподiлену програму, конвеєр для статистичної обробки текстових даних. Перший процес повинен прочитати з диску текстовий файл (або фрагмент тексту: 1 - 2 речення) та передати його на обробку до другого процесу. Другий процес пiдраховує кiлькiсть слiв у цьому фрагментi, виводить результат у консоль та передає фрагмент третьому процесу. Третiй процес пiдраховує кiлькiсть лiтер у цьому фрагментi та виводить результат у консоль. Iм'я файлу з текстовими даними задати як параметр у командному рядку пiд час запуску програми.
Самостiйна робота №1.
Тема: Програмування для обчислювальних систем з фiксованою кiлькiстю потокiв.
Мета: Опанувати методику створення багатопоточних додаткiв для систем з загальною пам'ятю.
Постановка задачi
Розробити паралельну програму наведеної структури для матричних обрахункiв використовуючи засувки для керування процесами доступу до загальних ресурсiв (у загальної пам'ятi).
Ця програма повинна забезпечувати ввод даних вiдповiдними процесами (пристроями вводу/виводу), їх розподiл на незалежнi фрагменти, органiзацiю та запуск паралельних обчислювальних процесiв, збирання результатiв обчислень та формування i виведення результатiв.
