little changes

This commit is contained in:
2025-11-19 16:35:31 +02:00
parent 49729e334c
commit 64b6855daf

View File

@@ -11,16 +11,9 @@
== Хід роботи
#v(-spacing)
/* TODO: work
3. Розрахувати прискорення та ефективність для розробленого паралельного алгоритму.
// 4. Написати програмний засіб обробки зображення, якій накладає фільтр згідно з отриманим завданням.
// 5. Зібрати статистику витрат часу на обробку зображенні в одному та декількох потоках (1, 2, 4, 6, 8, 10, 12, 14, 16).
6. Побудувати графік залежності часу обробки зображення та створених потоків.
7. Порівняти отримані практичні результати з теоретичними.
*/
Для виконання роботи було обрано тему "Шум Перліна". Шум Перліна -- це алгоритм
генерації процедурного шуму, розроблений Кеном Перліномб який
генерації процедурного шуму, розроблений Кеном Перліном, який
створює природно виглядаючі випадкові текстури та рельєфи. На відміну від
звичайного випадкового шуму, шум Перліна генерує плавні, безперервні градієнти
шляхом інтерполяції між випадковими векторами градієнтів на регулярній сітці,
@@ -33,7 +26,9 @@ $ T_p = T_1/p $
Використаємо стандартну формулу розрахунку прискорення, підставивши значення часу виконання на декількох процесорах з минулого рівняння.
$ S_p = T_1/T_p = T_1/(T_1/p) = p $
Для конкретних розрахунків візьмемо час виконання на одному потоці з реальної роботи програми (середнє значення з 10 запусків):
Для конкретних розрахунків візьмемо час виконання на одному
потоці з реальної роботи програми з шумом
розміру 8129 на 8129 пікселів (було взято середнє значення з 10 запусків):
$ T_1 = 6.48301 (sec) $
#let t1 = decimal("6.48301")
@@ -66,14 +61,19 @@ $ T_1 = 6.48301 (sec) $
#figure(table(
columns: 4,
table.header([$p$], [$T_p$], [$S_p$], [$E_p$]),
table.header([$p$], [$T_p$ (сер. за 10 запусків)], [$S_p$ (разів)], [$E_p$]),
..(1, ..range(2, 16 + 1, step: 2))
.zip(practical)
.map(v => {
let (p, prac) = v
let speedup = t1 / prac
let effcy = speedup / p
([$#p$], [$#prac$], [$#(calc.round(speedup, digits: 5))$], [$#(calc.round(effcy, digits: 5))$])
(
[$#p$],
[$#prac$],
[$#(calc.round(speedup, digits: 5))$],
[$#(calc.round(effcy, digits: 5)) approx #(calc.round(effcy * 100, digits: 2))%$],
)
})
.flatten(),
))
@@ -89,8 +89,8 @@ $ T_1 = 6.48301 (sec) $
Також, було зображенно порівняння замірів на графіку (@plot[рис.]). Можна побачити, що
після того, як значення $p$ досягає чотирьох одиниць, дані практичного і теоретичного
розрахунків розходяться. Скоріш за все, це пов'язано з тим, що цей комп'ютер має
лише чотири фізичних ядра.
розрахунків розходяться. Скоріш за все, це пов'язано з тим, що комп'ютер, на якому було виконану
лабораторну роботу має лише чотири фізичних ядра.
Іншими словами, він може виконувати лише чотири завдання справді паралельно.
Якщо кількість використаних потоків збільшується,
відбувається розділення ресурсів одного фізичного ядра
@@ -106,7 +106,7 @@ $ T_1 = 6.48301 (sec) $
#figure(
image("./noise.png", width: 50%),
caption: [Згенерований шум перліна],
caption: [Приклад згенерованого шуму перліна],
) <noise>
/* 1 THREAD{{{
@@ -353,4 +353,8 @@ Vendor ID: AuthenticAMD
== Висновки
#v(-spacing)
// TODO: conclusions
Було проведено роботу з способами організації паралельних
багатопоточних додатків на прикладі розробки програмного засобу,
що генерує статичний шум Перліна. Було проведено бенчмаркінг
програмного засобу на декількох різних конфігураціях та порівняно
резульати теоретичних розрахунків з отриманими на практиці значеннями.