- •Лабораторна робота №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йної роботи
Дано дві матриці A[n, n] і B[n, n], їх треба проініціалізувати значенням 1.0, скласти i результат покласти у матрицю C[n, n]. Тобто виконати операцiю: C[i, j] = A[i, j] + B[i, j], де 0 < i < n, 0 < j < n . Напишить паралельну програму для рішення цієї задачи. Обчислить смуги результату паралельно, використовуючи n робочих потоків.
Для рішення задачи квадратури, напишить паралельну ітеративну програму з фиксованим числом інтервалів. Проінтегруйте функцію з графіком f(x) = sin(x) * exp(x). Ваша програма повинна використовувати параметри командного рядка для інтервала значень х (числа відрізків).
Для рішення задачи квадратури, напишить паралельну рекурсивну програму, що використовує адаптивну квадратуру. Проинтегруйте функцію з графіком f(x) = sin(x) * exp(x). Ваша програма повинна використовувати параметри командного рядка для значення epsilon.
Напишить паралельну рекурсивну програму для реалізації алгоритму швиткого сортування массиву з N чисел. Будьте уважними, щоб забезпечити незалежність паралельных викликів.
Матриця T є транспонованою матрицею M, якщо для усіх значень i і j виконується рівняння T[i, j] = M[j, i]. Напишить паралельну програму, яка з використанням розподілюваних змінних транспонує матрицю М розміром n х n. Використовуйте P робочих потоків. Для спрощення припустимо, що число n кратно Р.
Матриця T є транспонованою матрицею M, якщо для усіх значень i і j виконується рівняння T[i, j] = M[j, i]. Напишить паралельну програму, яка з використанням розподілюваних змінних транспонує матрицю М розміром n х n. Використовуйте P робочих потоків. Для спрощення припустимо, що число n не кратно Р.
Напишить просту программу, яка виконує пошук заданого шаблону у файлах і використовує два аргумента: ланцюжок символів і им'я файлу. Усі рядки файла зі знайденим ланцюжком символів програма повинна виводити у файл. Змінити програму так, щоб вона виконувала пошук у двох файлах паралельно. Обидва процеса повинні виводити дані у файл stdout.
Напишить паралельну програму для пошуку максимального элемента у массиві цілих чисел A[n]. Під час пошуку масив розподіляється на частини і кожна частина обробляється окремим потоком.
Напишить паралельну програму для копіюваня масива A[n] у масив B[n]. Для синхронізації роботи використовуйте один буфер. Перший поток повинен читати дані з масиву A[n] у буфер. Другий поток повинен читати дані з буферу та записувани їх у масив B[n].
Дано два масиви A1 i A2 довжиною N. Реалiзувати паралельну процедуру поелементного складання цих масивiв P = A1 + A2. Для цього задiяти N/4 потоки.
Дано масив A довжиною N. Реалiзувати паралельну процедуру його бульбашкового сортування. Для цього задiяти N/6 потокiв.
Дано масив A довжиною N. Реалiзувати паралельну процедуру пiдрахунку середнього його елементiв. Для цього задiяти N/8 потокiв.
Дано масив A довжиною N. Реалiзувати паралельну процедуру обчислення медiани його елементiв. Для цього задiяти N/5 потокiв.
Дано масив A довжиною N. Реалiзувати паралельну процедуру iнверсiї його елементiв. Для цього задiяти N/7 потокiв.
Напишить паралельну програму, яка генерує послiдовнiсть Фiбоначчi довжиною N. Сгенерованi числа зберiгаються у загальному масивi. Використайте два потоки, якi почергово отримують доступ до цього масиву. Пiсля закiнчення процесу генерацiї, третiй потiк повинен вивести результат на екран.
Дана матриця, яка складається з M стовпцiв та N рядкiв (M > N). Розробити паралельну програму, яка використовуючи M паралельних потокiв шукає максимальне значення матрицi. Результатом роботи програми повинно бути знайдене число та його адреса (номери стовпця та рядка).
Дана матриця, яка складається з M стовпцiв та N рядкiв (M > N). Розробити паралельну програму, яка використовуючи N паралельних потокiв шукає мiнiмальне значення матрицi. Результатом роботи програми повинно бути знайдене число та його адреса (номери стовпця та рядка).
Написати паралельну програму обернення матрицi розмiрнiстю N x N використовуючи 2 * N - 3 паралельнi потоки.
Написати паралельну програму обернення матрицi розмiрнiстю N x N використовуючи 2 паралельних потоки, а також потiк для введення даних iз зовнiшнього файлу, та потiк для виведення результату.
Мiшаний граф G з n вершинами заданий матрицею сумiжностi вершин. Написати паралельну програму, яка пiдраховує кiлькiсть орiєнтованих ребер у ньому. Задiяти для цього 2 * n - 3 паралельнi потоки.
Мiшаний граф G з n вершинами заданий матрицею сумiжностi вершин. Написати паралельну програму, яка пiдраховує кiлькiсть орiєнтованих ребер у ньому. Задiяти для цього n - 1 паралельний потiк.
Граф G з n вершинами заданий матрицею сумiжностi вершин. Написати паралельну програму, яка перевiряє, чи э вiн повним. Задiяти для цього 2 * n - 3 паралельнi потоки.
Граф G з n вершинами заданий матрицею сумiжностi вершин. Написати паралельну програму, яка перевiряє, чи э вiн повним. Задiяти для цього n - 1 паралельний потiк.
Написати паралельну програму, яка пiдраховує довжину траєкторiї, пройденої матерiальною точкою за час T. Закон руху точки у полярних координатах є таким: R = a * sin(w * T + phi). Використати парну кiлькiсть паралельних потокiв.
Написати паралельну програму, яка пiдраховує довжину траєкторiї, пройденої матерiальною точкою за час T. Закон руху точки у полярних координатах э таким: R = a * sin(w * T + phi). Використати непарну кiлькiсть паралельних потокiв.
Самостiйна робота №3.
Тема: Програмування для обчислювальних систем з локальною пам'ятю ("Рандеву").
Мета: Опанувати методику створення багатопоточних додаткiв.
Постановка задачi
Розробити паралельну програму наведеної структури для матричних обрахункiв використовуючи принцип "Рандеву".
Ця програма повинна забезпечувати ввод даних вiдповiдними процесами (пристроями вводу/виводу), їх розподiл на незалежнi фрагменти, органiзацiю та запуск паралельних обчислювальних процесiв, збирання результатiв обчислень та формування i виведення результатiв.
Пiд час розробки програми використати обмiнники для передачi даних мiж паралельними процесами з локальною пам'ятю.
