little changes
This commit is contained in:
+19
-15
@@ -11,16 +11,9 @@
|
|||||||
|
|
||||||
== Хід роботи
|
== Хід роботи
|
||||||
#v(-spacing)
|
#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 $
|
$ S_p = T_1/T_p = T_1/(T_1/p) = p $
|
||||||
|
|
||||||
Для конкретних розрахунків візьмемо час виконання на одному потоці з реальної роботи програми (середнє значення з 10 запусків):
|
Для конкретних розрахунків візьмемо час виконання на одному
|
||||||
|
потоці з реальної роботи програми з шумом
|
||||||
|
розміру 8129 на 8129 пікселів (було взято середнє значення з 10 запусків):
|
||||||
$ T_1 = 6.48301 (sec) $
|
$ T_1 = 6.48301 (sec) $
|
||||||
|
|
||||||
#let t1 = decimal("6.48301")
|
#let t1 = decimal("6.48301")
|
||||||
@@ -66,14 +61,19 @@ $ T_1 = 6.48301 (sec) $
|
|||||||
|
|
||||||
#figure(table(
|
#figure(table(
|
||||||
columns: 4,
|
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))
|
..(1, ..range(2, 16 + 1, step: 2))
|
||||||
.zip(practical)
|
.zip(practical)
|
||||||
.map(v => {
|
.map(v => {
|
||||||
let (p, prac) = v
|
let (p, prac) = v
|
||||||
let speedup = t1 / prac
|
let speedup = t1 / prac
|
||||||
let effcy = speedup / p
|
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(),
|
.flatten(),
|
||||||
))
|
))
|
||||||
@@ -89,8 +89,8 @@ $ T_1 = 6.48301 (sec) $
|
|||||||
|
|
||||||
Також, було зображенно порівняння замірів на графіку (@plot[рис.]). Можна побачити, що
|
Також, було зображенно порівняння замірів на графіку (@plot[рис.]). Можна побачити, що
|
||||||
після того, як значення $p$ досягає чотирьох одиниць, дані практичного і теоретичного
|
після того, як значення $p$ досягає чотирьох одиниць, дані практичного і теоретичного
|
||||||
розрахунків розходяться. Скоріш за все, це пов'язано з тим, що цей комп'ютер має
|
розрахунків розходяться. Скоріш за все, це пов'язано з тим, що комп'ютер, на якому було виконану
|
||||||
лише чотири фізичних ядра.
|
лабораторну роботу має лише чотири фізичних ядра.
|
||||||
Іншими словами, він може виконувати лише чотири завдання справді паралельно.
|
Іншими словами, він може виконувати лише чотири завдання справді паралельно.
|
||||||
Якщо кількість використаних потоків збільшується,
|
Якщо кількість використаних потоків збільшується,
|
||||||
відбувається розділення ресурсів одного фізичного ядра
|
відбувається розділення ресурсів одного фізичного ядра
|
||||||
@@ -106,7 +106,7 @@ $ T_1 = 6.48301 (sec) $
|
|||||||
|
|
||||||
#figure(
|
#figure(
|
||||||
image("./noise.png", width: 50%),
|
image("./noise.png", width: 50%),
|
||||||
caption: [Згенерований шум перліна],
|
caption: [Приклад згенерованого шуму перліна],
|
||||||
) <noise>
|
) <noise>
|
||||||
|
|
||||||
/* 1 THREAD{{{
|
/* 1 THREAD{{{
|
||||||
@@ -353,4 +353,8 @@ Vendor ID: AuthenticAMD
|
|||||||
|
|
||||||
== Висновки
|
== Висновки
|
||||||
#v(-spacing)
|
#v(-spacing)
|
||||||
// TODO: conclusions
|
Було проведено роботу з способами організації паралельних
|
||||||
|
багатопоточних додатків на прикладі розробки програмного засобу,
|
||||||
|
що генерує статичний шум Перліна. Було проведено бенчмаркінг
|
||||||
|
програмного засобу на декількох різних конфігураціях та порівняно
|
||||||
|
резульати теоретичних розрахунків з отриманими на практиці значеннями.
|
||||||
|
|||||||
Reference in New Issue
Block a user