Files
tvo/pz2/ТВО_КНТ_22_1_Орлов_ПЗ2.typ
T
2026-01-15 11:26:45 +02:00

71 lines
6.0 KiB
Typst
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#import "@local/nure:0.1.0": *
#show: pz-lb.with(
..yaml("doc.yaml"),
worknumber: 2,
title: "Pішення найпростіших математичних завдань за допомогою алгоритмів паралельних обчислень",
)
#v(-spacing)
== Мета роботи
#v(-spacing)
Метою роботи є оволодіння основними навичками аналізу трудомісткості
паралельних обчислень на прикладі паралельного алгоритму множення матриць,
визначення основних характеристик трудомісткості та їх залежності від схеми
обчислень та кількості процесорів. Отримання досвіду оцінки трудомісткості
паралельних обчислень за допомогою основних теорем.
== Хід роботи
#v(-spacing)
Темою на розгляд у даній роботі є множення матриць.
Елементи результуючої матриці розраховуютсья за наступною формулою: $c_(i j) = sum_(k=1)^n a_(i k)*b(k j)$
Візьмемо дві матриці розмірністю $n times n$.
Для розрахунку одного елементу результуючої матриці знадобиться $n + (n - 1) = 2n - 1$ операцій ($n$ множень, $n-1$ додавань).
Враховуючи $n^2$ елементів у вихідних матрицях, для розрахунку результату на одному процесорі (враховуючи, що одна операція займає одну одиницю часу)
знадобиться рівно $(2n - 1) * n^2$ одиниць часу. Іншими словами, час розрахунку на одному процесорі можна описати так:
$ T_1 = (2n - 1) * n^2 $
// NOTE: завдання 2
Спершу, розрахуємо всі основні показники для $p = n^2$. Враховуючи, що кількість процесорів дорівнює кількості елементів,
можемо зазначити, що час на виконання у багатопоточному режимі буде дорівнювати часу обробки одного елемента $T_p = 2n - 1$.
$ S_p = T_1/T_(n^2) = ((2n-1) dot n^2)/(2n-1) = n^2 $
$ E_p = S_p/p = n^2/n^2 = 1 $
$ C_p = T_p dot p = (2n-1) dot n^2 $
Відмітимо, що ефективність $E_p$ дорівнює одиниці, що означає 100% використання всіх процесорів під час роботи алгоритму.
Також, ціна дорівнює часу виконання на одному процесорі, що дає нам привід назвати цей розподіл роботи вартісно-оптимальним. // NOTE: E_p = S_p/p = T_1/C_p
// NOTE: завдання 3
Наступним кроком, визначимо кількість процесорів і розподіл робіт, що забезпечує підвищення прискорення $S_p$ відносно попереднього варіанту.
// S_p = T_1 / T_p
Враховуючи, що ми не можемо впливати на кількість обробки елементів одним процесором,
ми зменшимо кількість обробки $p$ процесорами, взявши $p = n^3$.
Ця міра дозволить нам зменшити час обробки всіх елементів до наступного:
$ T_p = T_"mult" + T_"sum" = 1 + log_2 n $
Де $T_"mult" = 1$ тому що ми розділили час множення елементів $n$ на кількість процесорів $n$, та $T_"sum" = log_2 n$, використовуючи каскадний алгоритм додавання, згідно з теор. 1 та 2.
Розрахуємо основні показники для даного розподілу.
$ S_p = T_1/T_(n^3) = ((2n-1) dot n^2)/(1+log_2 n) $
$ E_p = S_p/p = ((2n-1) dot n^2)/(1+log_2 n)/n^3 = (2n-1)/(n(1+log_2 n)) = (2n-1)/(n+log_2 n^n) $
$ C_p = T_p dot p = (1+log_2 n) dot n^3 $
// NOTE: завдання 4
Далі, визначимо розподіл робіт, при якому кількість процесорів може бути меншою, ніж в попередній задачі.
Для цього, візьмемо $p=n$. Використовуючи логіку з попередніх задач, визначимо паралельний час виконання: $T_p = n dot (2n - 1)$
Розрахуємо основні показники для даного розподілу.
$ S_p = T_1/T_(n) = ((2n-1) dot n^2)/(n dot (2n-1)) = n $
$ E_p = S_p/p = n/n = 1 $
$ C_p = T_p dot p = ((2n-1) dot n) dot n = (2n - 1) dot n^2 $
Можемо побачити абсолютно ідентичну ситуацію з усіма показниками (окрім прискорення)
з розподілом робіт, де $p=n^2$. Це означає, що цей алгоритм використовує процесори 100% часу
роботи алгоритма, а також є вартісно-оптимальним.
== Висновки
Було проведено аналіз розпаралелювання алгоритму добутку двох матриць, розмірністю $n times n$. Було застосовано декілька конфігурацій з різною кількістю процесорів.
Для кожної конфігурації було розраховано основні параметри.
Було отримано досвід оцінки трудомісткості
паралельних обчислень за допомогою основних теорем.