Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы по ТРС.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
201.18 Кб
Скачать

Вимоги до звiту

 

Iндивiдуальнi завдання для самостiйної роботи

  1. Дано дві матриці 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 робочих потоків.

 

  1. Для рішення задачи квадратури, напишить паралельну ітеративну програму з фиксованим числом інтервалів. Проінтегруйте функцію з графіком f(x) = sin(x) * exp(x). Ваша програма повинна використовувати параметри командного рядка для інтервала значень х (числа відрізків).

 

  1. Для рішення задачи квадратури, напишить паралельну рекурсивну програму, що використовує адаптивну квадратуру. Проинтегруйте функцію з графіком f(x) = sin(x) * exp(x). Ваша програма повинна використовувати параметри командного рядка для значення epsilon.

 

  1. Напишить паралельну рекурсивну програму для реалізації алгоритму швиткого сортування массиву з N чисел. Будьте уважними, щоб забезпечити незалежність паралельных викликів.

 

  1. Матриця T є транспонованою матрицею M, якщо для усіх значень i і j виконується рівняння T[i, j] = M[j, i]. Напишить паралельну програму, яка з використанням розподілюваних змінних транспонує матрицю М розміром n х n. Використовуйте P робочих потоків. Для спрощення припустимо, що число n кратно Р.

 

  1. Матриця T є транспонованою матрицею M, якщо для усіх значень i і j виконується рівняння T[i, j] = M[j, i]. Напишить паралельну програму, яка з використанням розподілюваних змінних транспонує матрицю М розміром n х n. Використовуйте P робочих потоків. Для спрощення припустимо, що число n не кратно Р.

 

  1. Напишить просту программу, яка виконує пошук заданого шаблону у файлах і використовує два аргумента: ланцюжок символів і им'я файлу. Усі рядки файла зі знайденим ланцюжком символів програма повинна виводити у файл. Змінити програму так, щоб вона виконувала пошук у двох файлах паралельно. Обидва процеса повинні виводити дані у файл stdout.

 

  1. Напишить паралельну програму для пошуку максимального элемента у массиві цілих чисел A[n]. Під час пошуку масив розподіляється на частини і кожна частина обробляється окремим потоком.

 

  1. Напишить паралельну програму для копіюваня масива A[n] у масив B[n]. Для синхронізації роботи використовуйте один буфер. Перший поток повинен читати дані з масиву A[n] у буфер. Другий поток повинен читати дані з буферу та записувани їх у масив B[n].

 

  1. Дано два масиви A1 i A2 довжиною N. Реалiзувати паралельну процедуру поелементного складання цих масивiв P = A1 + A2. Для цього задiяти N/4 потоки.

 

  1. Дано масив A довжиною N. Реалiзувати паралельну процедуру його бульбашкового сортування. Для цього задiяти N/6 потокiв.

 

  1. Дано масив A довжиною N. Реалiзувати паралельну процедуру пiдрахунку середнього його елементiв. Для цього задiяти N/8 потокiв.

 

  1. Дано масив A довжиною N. Реалiзувати паралельну процедуру обчислення медiани його елементiв. Для цього задiяти N/5 потокiв.

 

  1. Дано масив A довжиною N. Реалiзувати паралельну процедуру iнверсiї його елементiв. Для цього задiяти N/7 потокiв.

 

  1. Напишить паралельну програму, яка генерує послiдовнiсть Фiбоначчi довжиною N. Сгенерованi числа зберiгаються у загальному масивi. Використайте два потоки, якi почергово отримують доступ до цього масиву. Пiсля закiнчення процесу генерацiї, третiй потiк повинен вивести результат на екран.

 

  1. Дана матриця, яка складається з M стовпцiв та N рядкiв (M > N). Розробити паралельну програму, яка використовуючи M паралельних потокiв шукає максимальне значення матрицi. Результатом роботи програми повинно бути знайдене число та його адреса (номери стовпця та рядка).

 

  1. Дана матриця, яка складається з M стовпцiв та N рядкiв (M > N). Розробити паралельну програму, яка використовуючи N паралельних потокiв шукає мiнiмальне значення матрицi. Результатом роботи програми повинно бути знайдене число та його адреса (номери стовпця та рядка).

 

  1. Написати паралельну програму обернення матрицi розмiрнiстю N x N використовуючи 2 * N - 3 паралельнi потоки.

 

  1. Написати паралельну програму обернення матрицi розмiрнiстю N x N використовуючи 2 паралельних потоки, а також потiк для введення даних iз зовнiшнього файлу, та потiк для виведення результату.

 

  1. Мiшаний граф G з n вершинами заданий матрицею сумiжностi вершин. Написати паралельну програму, яка пiдраховує кiлькiсть орiєнтованих ребер у ньому. Задiяти для цього 2 * n - 3 паралельнi потоки.

 

  1. Мiшаний граф G з n вершинами заданий матрицею сумiжностi вершин. Написати паралельну програму, яка пiдраховує кiлькiсть орiєнтованих ребер у ньому. Задiяти для цього n - 1 паралельний потiк.

 

  1. Граф G з n вершинами заданий матрицею сумiжностi вершин. Написати паралельну програму, яка перевiряє, чи э вiн повним. Задiяти для цього 2 * n - 3 паралельнi потоки.

 

  1. Граф G з n вершинами заданий матрицею сумiжностi вершин. Написати паралельну програму, яка перевiряє, чи э вiн повним. Задiяти для цього n - 1 паралельний потiк.

 

  1. Написати паралельну програму, яка пiдраховує довжину траєкторiї, пройденої матерiальною точкою за час T. Закон руху точки у полярних координатах є таким: R = a * sin(w * T + phi). Використати парну кiлькiсть паралельних потокiв.

 

  1. Написати паралельну програму, яка п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ж паралельними процесами з локальною пам'ятю.