Основні підходи до розпаралелювання

Download Report

Transcript Основні підходи до розпаралелювання

Основні підходи до
розпаралелювання
Лекція 8 “Паралельні обчислення”
Судаков О.О.
План








Харектеристики ефективності
Фактори обмеження продуктивності
Централізована і децентралізована схема
Принцип здвоєння
Конвеєр
Розпаралелювання циклів
Геометричне розпаралелювання
Розв’язання систем лінійних рівнянь
Як розпаралелювати задачу






Розпаралелити – визначити який процесор в який
момент часу виконує які операції
Єдина ціль розпаралелювання – зменшення часу
розрахунків
Не всі задачі однаково ефективно
розпаралелюються
Ефективність розпаралелювання залежить від
алгоритму задачі, обчислювальної системи,
кількості даних
Не існує універсального способу знайти як
найефективніше розпаралелити задачу
Якщо є схема розпаралелювання – її можна
проаналізувати
Декомпозиція, Зв'язок, Синхронізація

Декомпозиція – розбивання задачі на
складові частини





Декомпозиція даних
Декомпозиція функцій
Комбінована декомпозиція
Зв'язок – взаємодія між складовими
частинами задачі
Синхронізація – забезпечення того, що в
деякий момент всі процесори знаходяться
в строго визначеному стані
Характеристики алгоритмів і
обчислювальних систем





T1
Час обчислення на одному процесорі
Час обчислення на p процесорах
Tp
Кількість операцій послідовного алгоритму
N1
Кількість операцій паралельного
алгоритму Np
Час виконання однієї арифметичної
T
операції
t
1
N
Характеристики эффективности
распараллеливания





Коефіцієнт прискорення
 В скільки разів час виконання паралельного
алгоритму менше
Ідеальне прискорення
 Ідеальне прискорення = кількість процесорів
Коефіцієнт ефективності
 Відношення отриманого прискорення до
ідеального
 Який процент процесорів працює
Коефіцієнт надлишковості
 Паралельний алгоритм може потребувати
додаткових операцій
Якість розпаралелювання
 Добуток всіх коефіцієнтів
ks 
T1
Tp
p
ke 
kп
p
ko 
N1
Np
Q  ke ks ko
Характеристики системи обміну
інформацією

Час передачі одиниці інформації

Час початкової затримки




Латентність
Час встановлення зв'язку
to
tc
Відношення між часом обробки і часом
передачі одиниці інформації
o 
to
t
Відношення між часом обробки одиниці
інформації і часом встановлення зв'язку
c 
tc
t
Характеристики маштабуємості

Характерна розмірність задачі

Кількість вхідних даних

Кількість операцій алгоритму

Нотація великого O

n
Як веде себе кількість N(n) при
наближенні об'єму вхідних даних
до безкінечності
N(n)
O(n)
Приклади маштабуємості
№
1
2
3
4
5
6
7
8
Алгоритм
Пошук у відсортованому масиві
даних довжини n
Швидке сортування масиву даних
довжини n
Фур’є
перетворення
Швидке
масиву даних довжини n
Додавання двох масивів даних
довжиною n
Додавання двох матриць, що
мають n елементів
Множення матриці розміром
n n на вектор довжини n
квадратних
двох
Множення
матриць, що мають n елементів
Розв’язання системи n лінійних
рівнянь методом виключення
Гаусса
Масштабованість
O(log2 n)
O(n log2 n)
O(n log2 n)
O (n )
O (n )
O(n 2 )
O(n 3 )
O(n 3 )
Максимальне прискорення і
оптимальна кількість процесорів


Можна показати, що
максимально можливе
прискорення при незмінній
кількості операцій рівне кількості
процесорів
Якщо кількість процесорів рівне
T1/T∞ то час виконання
паралельного алгоритму не буде
більше ніж у 2 рази
перевищувати оптимальний час
виконання при оптимальному
розпаралелюванні
T1
Tp 
p
popt
T1
~
T
Фактори обмеження і збільшення
продуктивності




Гіпотеза Мінського – принципова
непаралельність алгоритму
Закон Амдала – наявність принципово
послідовних частин
Гетерогенність – дисбаланс навантаження
Надлінійне прискорення – апаратне і
алгоритмічне
Гіпотеза Мінського





Нехай програма має р
послідовних частин
Нехай перехід на ту чи іншу
частини виконується шляхом
бінарного розвітвлення
Всього виконається частин
Якщо всю програму виконувати
на р процесорах, то прискорення
буде не більше, ніж
Для деяких ефективних
послідовних алгоритмів гіпотеза
справедлива
log2 p 
log2 p
Закон Амдала (Amdahl, 1967)





Наявність послідовних частин приводить
до суттєвого зниження продуктивності
Нехай є система з р процесорів
Нехай є алгоритм, яких складається з
частин, які виконуються паралельно і
частин, які виконуються послідовно
Нехай доля послідовних частин рівна α
Тоді доля паралельних частин рівна (1- α)
Ілюстрація закону Амдала
Оцінка часу виконання




Час виконання послідовного
алгоритму
Час виконання послідовної
частини паралельного алгоритму
Час виконання паралельної
частини алгоритму на р
процесорах
Час виконання всього
паралельного алгоритму
T1
T1
(1   )T1
p
Tp 
(1   )T1
 T1
p
Коефіцієнт прискорення і ефективність

Прискорення
kï 

Ефективність
kå 

Час виконання на
паракомп'ютері

Оптимальна кількість
процесорів
T1
1

T p (1   )

p
T1
1

pTp ( p  1)  1
T  max T p  T1
p
popt ~
T1 1

T 
Графіки залежностей
Доля послідовних
обчислень
0%
1%
5%
10%
20%
30
25
50
40
Коефіцієнт прискорення, Кп
Коефіцієнт прискорення, Кп
35
256 процесорів
32 процесора
16 процесорів
20
15
10
5
30
20
10
0
5
10
15
20
25
Кількістьпроцесорів, p
30
35
0,0
0,2
0,4
0,6
0,8
Доля послідовних обчислень
1,0
Централізована схема




Головний процесор роздає
робочим задачу
Робочі виконують і повертають
результат головному процесору
Головний процесор – вузьке
місце – суттєво послідовна
частина алгоритму
Головний процесор в один
момент часу може обробити
тільки дані з одного робітника
Головний процесор
(master)
Робочий
процесор
Робочий
процесор
Децентралізована схема




Декілька головних процесорів
На першому етапі створення черги завдань
Далі головні процесори беруть задачі з черги і
працюють по централізованій схемі
Меньше вузьких місць, більше нкладні витрати
Обміну даними

Обмін даними - найвпливовіша частина
паралельного алгоритму


Топологія – характер з’єднань між процесорами



Обмін = зменшення ефективності
Фізична, віртуальна, логічна
Спільна пам’ять – накладні витрати на
синхронізацію
Розподілена пам’ять – накладні витрати на
передачу даних
Деякі типи топології-для кожної задачі і
системи - своя
Лінійка (ферма)
решітка
Бінарне дерево
2D тор
зірка
куб
Повний граф
Кільце
Параметри топології при кількості
вузлів p
Топологія
Діаметр
Повний граф
1
Зірка
Повне бінарне дерево
Лінійка
Кільце
2D-Решітка
2
2 log2  p  1 / 2
p 1
 p / 2
2D-Тор
p / 2
log2 p
Гіперкуб

2

2 p 1

Ширина
бісекції
p2 / 4
1
1
1
2
p
2 p
p/2
Зв’язність Ціна
p 1
p( p  1) / 2
1
1
1
2
2
p 1
p 1
p 1
p


4
2 p p
2p
log2 p
 p log2 p  / 2
Принцип здвоєння – гіперкуб і бінарне дерево

Гіперкуб - кожний процесор зв'язаний
рівно з n сусідами
i <=> i+2k для ітерації k=0…

Бінарне дерево – кожен зв’язаний з двома
i <=> 2*i+1
i <=> 2*i+2
Кожні 2 процесора можуть взаємодіяти між собою паралельно
Broadcast, Gather, Scatter
Процесор 1 має дані, які потрібно
передати решті
Топологія гіперкуб – принцип
здвоювання





(12)
[тепер процесори 1 і 2 містять дані]
(13), (24)
[тепер процесори 1, 2, 3, 4 містять дані]
(15), (26), (37), (48)
[тепер всі процесори містять дані]
4
2
3
1
6
8
5
7
Перваги і недоліки принципу здвоєння




Переваги гіперкубу
 Найменша кількість операцій обміну серед усіх log(P)
Недоліки гіперкубу
 Під час обміну всі процесори простоюють
 Нема можливості виконувати обмін одночасно з
розрахунками
Переваги бінарного дерева
 Кількістьоперацій обміну обміну log(P)+1
 Процесори, які виконали передачу можуть виконувати іншу
роботу
 Одна з найефективніших топологій за сукупнустю факторів
Недоілки гіперкубу
 Процесори, які чекають на дані простоють
Конвеєр



Конвеєрна обробка – метод розпаралелення
суттєво послідовних операцій
Процесори з'єднуються так, щоб результат роботи
одного процесора потрапляв на вхід іншого (лінійна
топологія)
Складна операція розбивається на декілька
послідовних стадій, кожна стадія виконується своїм
процесором
Коли конвеєр ефективний

1.
2.
3.
Три випадки
За допомогою конвеєра необхідно
вирішити декілька послідовних задач
За допомогою конвеєра необхідно
вирішити одну задачу для великої
послідовності вхідних даних
Коли кожен процесор ще до завершення
своєї роботи може відправити дані
наступному процесору та запустити його
роботу
Приклад : конвеєр першого типу

Приклад : Знаходження суми,
добутку, … чисел




Є p процесорів
У кожного процесора є свої дані di
необхідно знайти суму, добуток, XOR..
Алгоритм



Процесор 1 передає дані процесору 2
Процесор 2 додає свої дані і передає
процесору 3…
Процесор1 починає конвеєр добутку…
d
i
i
Аналіз ефективності конвеєра



Час вирішення 1-ї задачі
Час вирішення всіх наступних
задач
Час вирішення m задач
T
Час вирішення m задач на 1
процесорі для тих же даних
Прискорення
При m->inf
Закон Амдала!
p




( p 1)to  pt
to  t
 ( p 1)to  pt  (m 1)(to  t )
T1  mpt
ks ~
pmt
( p  1)to  pt  (m  1)(t  to )
ks ~
pt
t  to
Конвеєр другого типу




Приклад : сортування масива значень
На вході є великий масив даних
Кожен процесор отримує інформацію від
попереднього та передає найбільше зі своїх
значень наступному процесору
В результаті процесор з меншим номером буде
містити елементи масиву з меншими
значеннями
Конвеєр третього типу


Одночасна передача даних та обробка (Sendahead)
Якщо отримані від попереднього процесора дані
можна передати на наступний процесор, а потім
почати їх обробку
Приклад – зворотній хід методу Гауса
a n1 x1  a n 2 x2  a n 3 x3  ...  a nn x3  bn
.....
.....
a 31 x1  a 32 x2  a 33 x3  b3
a 21 x1  a 22 x2  b2
a11 x1  b1
З останнього рівняння
З предостаннього
x1 
b1
a11
b2  a 21 x2
x2 
a 22
n 1
Для будь-якого рівняння
xn 
bn   a ni xi
i 1
a nn
Паралельна програма






Процесор 1 –розраховує x1 та передає його далі
Процесор 2 приймає x1 передає його далі,
розраховує x2 і теж передає його далі
Процесор 3 приймає x1 , приймає x2 , передає і
далі, розраховує x3 і передає його далі
…
Розрахунок виконується паралельно з передачою
даних
Різні процесори працюють одночасно
Ефективність

Алгоритм O(n2) процесорних операцій

Передача даних порядку O(n) операцій

Зі збільшенням порядку матриці
прискорення росте
Висновки стосовно конвеєра





Найпростіший та дешевий варіант
розпаралелення
Можливість розпаралелення принципово
послідовних операцій
Можливість одночасного виконання
передачі даних та їх обробки (асинхронні
операції)
Найменше простоювання процесорів
Ефективність завжди меньше 1
Розпаралелення циклів-розбиття на
блоки for(i=0; i<n; i+=1){sum+=f(i);}




Сумування
асоціативне
Цикл разбивається на
блоки
Кожен процесор
виконує свій блок
циклу паралельно з
іншими
Результати роботы
всох процесорів
складаються
// p – кількість процесорів
// k – номер поточного
Процесора від 0 до p-1
// f() – підпрограма
sum=0;
for(i=k; i<n; i+=p){
sum+=f(i);
}
reduce(0,sum);
Оцінка кількості операцій

Час виконання послідовного
алгоритма




nN f  1t
Nf – кількість операцій
розрахунку функції
Час виконання паралельного
сумування
Час передачі даних
Коефіцієнт прискорення
nN f  1t / p
(tc  to ) log2 p
nN f  1t
nN f  1t / p  (tc  to ) log2 p
Ефективність розпаралелення
сумування





Коефіцієнт ефективності
Прискорення при розпаралеленні
буде коли
При великій кількості процесорів
При збільшенні кількості
процесорів ефективність падає
При збільненні кількості
процесорних операцій
ефективність росте
ke 
ks

p
1
1
p  tc  to  log 2 p
tn  N f  1
kï  1
1 tc  to log2 p

1
p
tnN f  1
tc  to nN f  1

t
log2 p
Геометричне розпаралелювання
(блочні методи )





Матриця розбивається на
частини – блоки (rxq блоків)
Кожен блок зберігається в
пам'яті одного вузла масивно
паралельної системи
(кластера)
Говорять: «На матрицю
накладається процесорна
сітка»
Кожному вузлу сітки (блоку
матриці) відповідає процесор
з координатами (i,j)
Для виконання операцій з
матрицями процесори
повинні обмінюватись
даними між собою
Матрица
Обмінюються лише сусідні процесори
і лише даними на “межі”
Коли “площа” межі мала
– ефективність висока
Перемноження матриць
 A11


 Ak1

A12
...
Ak 2
... A1k   B11
 

... Akk   Bk1
B12
...
Bk 2
... B1k  C11 C12
 
...



... Bkk  Ck1 Ck 2
... C1k 


... Ckk 
Кожен блок матриці C обчислюється за формулою
k
Cij   Ail Blj
Матрица
l 1


Блочне представлення дає можливість
розраховувати блок результату
паралельно з іншими блоками результату
Розглянемо приклад для квадратної сітки
розмірності k, блоків розмірності m та
матриці розмірності n, кількість процесорів
p
Алгоритм Фокса



Кожен процесор pij розраховує свій блок матриці Cij
На кожному процесорі виділяється місце для збереження
своії 4-х блоків
 Cij – блок результату
 Aij – блок матриці A, який зберігається на потосному
процесорп
 A1ij – блок матриці A, який отриманий з іншого процесора

B1ij – блок матриці B, який отриманий з іншого процесора
(блоки правої матриці весь час переміщуються)
Викрнується ініціалізація
 C – обнуляється
 A – складає блок матриці A даного процесора
 B1 – складає блок матриці B даного процесора
Алгоритм Фокса (продовження)

На кожній ітерації алгоритма, номер
l (l=1,k)




Один процесор кожного рядку
відправляє свій блок матриці A на всі
процесори свого рядка, номер стовбчика
j для рядка i=(i-l+1)mod(k)+1. Процесори
приймаютб ці дані в матрицю A1
Виконується звичайне матричне
помноження C=C+A1*B1
матриця B1 передається сусіду зверху
Повторюється для наступного l
Передача блоків
матриці A
Передача блоків
матриці B
Оцінка часу Алгоритма Фокса

Час однієї ітерації дорівнює



Час расилання блоку матриці A1
Час відправки блоків матриці B1
Час помноження матриць A1 и B1
t  t m log p  tm  tm  t  t m
Час k ітерацій в k разів більше
Коефіцієнт прискорення
2
c


o
3
2


o
tm3 k 3

3
2
p  tm  tm   t c  t o m
tm p
tc / m  to  log2 p  1  t m  1

2
c
T
kï  1 ~
T p k t c  t o m 2 log2

2

Характеристики

n=100
n=1000
n=10000
ідеальне прискорення
Коефіцієнт прискорення, Кп
30

25
20
15

10
5
0
5
10
15
20
Кількість процесорів, p
25
30
Алгоритм складає як
конвеєрні так і паралельні
операції
Достатньо ефективний
при великих розмірностях
матриці
Існують інші алгоритми з
великою кількістю
синхроних або асинхроних
операцій
Розвязання систем лінійних рівнянь




Є система лінійних рівнянь
Матриця A розмірності nxn
Матриці B и x розмірності nxm
Матриця x - невідома
Ax  B
Методи послідовного виключення
невідомих

Метод Гаусса



Над матрицями A і B виконуються елементарні
перетворення, щоб звести матрицю A до трикутного
вигляду
Після чого рішення знаходиться за допомогою оберного
вигляду метода Гаусса
Виключення невідомих



В кожному рядку вибирається ведучий елемент –
найбільший по модулю
Поточний рядок розраховується з усіх розташованих
нажче, норморованих на ведучий елемент
При цьому на місці ведучого елемента у всіх нижче
розташованих радках будуть нулі
Розпаралелення прямого ходу
Процесор1
Ведучий елемент






Рядки розподіляються по процесорам
рівномірно, кожен процесор має n/p рядків, i-й
процесор має рядки з номерами i+kp (k=1,n/p)
Передачу краще виконати конвеєрно по
принципу привільованої передачі
Перший процесор знаходить ведучий елемент,
розраховує результат ділення свого рядка на
ведучий елемент
Результат ділення та номер ведучого
елемента пересилається на наступний
процесор
Перший процесор продовжує виключення
своїх рядків
Другий процесор приймає дані від першого ,
виконує виключення і теж передає дані далі
Процесор1
Передача наступному
Процесор2
Процесор1
Виключення та передача
Процесор2
Інші алгоритми передачі
звичайне кільце
Модифіковане кільце
Подвійне кільце
Модифіковане подвійне
кільце
Оцінка часу передачі


Послідовний алгоритм – порядку n3 операцій
Паралельний алгоритм



Порядку n3/p послідовних операцій
Порядку n2 послідовних пересилок даних
Порядку n встановлення зв’язку
T1
tn3
p
kï 
~

2
3
T p ntc  n t  n t / p p c / n 2  p o / n  1
Ілюстрація

n=100
n=1000
n=10000
n=50000
ідеальне прискорення
Коефіцієнт прискорення, Кп
30
25

20
15
10
5
0
5
10
15
20
Кількість процесорів, p
25
30
Ефективність росте
при збільшенні
порядку матриці
Один з
найефективніших
методів
Порівняння різних методів передачі
p
n
209
340
532
809
2
4
8
16
Централізована
передача
kï
kå
1.90
0.95
3.51
0.88
5.59
0.7
7.7
0.48
Принцип
здвоєння
kï
1.92
3.56
6.19
8.97
kå
0.96
0.89
0.77
0.56
Привілейована
передача
kï
kå
1.98
0.99
3.72
0.93
6.62
0.83
10.91
0.68
Ітеративні методи


Метод Якобі виражає значення невідомого
через значення інших невідомих
Ітеративно знаходяться всі значення
xik 1
n


 bi   aij x kj 1 


j 1, j i

;

aii
i  1, n;
k  0,1,...
Послідовний варіант
//xnew – наступне наближення
//xold – попереднє наближення
//eps – умова завершення ітераційного процесу
for(;;){
for(i=0;i<n;i++){
xnew[i]=0;
for(j=0; j<i; j++){
xnew[i]+=a[i][j]*xold[j];
}
for(j=i+1; j<n-1; j++){
xnew[i]+=a[i][j]*xold[j]
}
xnew[i]=(b[i]-xnew[i])/a[i][i];
}
if(abs(abs(xnew)-abs(xold))< eps) break;
xold=xnew;
}
Розпралелення

Кожен елемент нового наближення може
бути розрахований паралельно з іншими
елементами цього ж наближення



Кожен процесор має n/p=q рядків матриці A
Кожен процесор розраховує свою частину
наближення
Кожен процесор передає всім іншим свою
частину наближення
Паралельна реалізація
for(;;){
for(i=c*n/p;i<(c+1)*n/p;i++){
xnew[i]=0;
for(j=0; j<i; j++){
xnew[i]+=a[i][j]*xold[j];
}
for(j=i+1; j<n-1; j++){
xnew[i]+=a[i][j]*xold[j]
}
xnew[i]=(b[i]-xnew[i])a[i][i];
allgather(xnew);
}
if(abs(abs(xnew)-abs(xold))< eps) break;
xold=xnew;
}
Оцінка часу

Час паралельних розрахунків складається
з часу роботы процесора та часу
виконання передачі
kï 
T1
1

T p q 2q  p  1 o   c log 2 p

n
2n 2  n
Ілюстрація

n=100
n=1000
10000
ідеальне прискорення
Коефіцієнт прискорення, Кп
30

25
20
15
10
5
0
0
5
10
15
20
Кількість процесорів, p
25
30
Розпаралелюються
досить ефективно
Потребує
синхронізації, що
снижує ефективність
Порівняння різних матричних методів
власні значення
метод виключення
множення
ітеративний
ідеальне прискорення
Коефіцієнт прискорення, Кп
30
25
20
15
10
5
0
0
5
10
15
20
Кількість процесорів, p
25
30
Розвязання диференційних рівнянь в
частних похідних

Виникають в різноманітних физичних
задачах





Розрахунок прогнозу погоди
Розрахунок теплових властивостей
Електрика
Розрахунок міцності конструкцій
Аеродинаміка
Приклад – рівняння Лапласа
F(x,y)





Виникає в електротехнічних
задачах
Рівняння Лапласа
Граничні умови
Знайти потенціал
електричного поля в области
з циліндричною симетрією
На границі области
потенціал рівен f(x,y)
U(x,y)
 2u  2u
 2 0
2
x
y
u( x, y)   f x, y 
Дискретизація задачі
h




На область накладається
сітка з кроком h
Похідні замінюються
різними апроксимаціями
Аналогічно другі похідні
Рівняння
i
h
j
u u(i  h, j )  u(i, j )

x
h
 2 u ui  1, j   2ui, j   ui  1, j 

x 2
h2
 2 u ui, j  1  2ui, j   ui, j  1

y 2
h2
 4ui, j   ui  1, j   ui  1, j   ui, j  1  ui, j  1  0
Розвязання рівнянь

(I,j+1)
(I-1,j)
Метод Якобі

(I,j)
(I+1,j)
(I,j-1)
Виражаємо значення у вузлі
сітки через 4 сусідні значенняui, j   1 ui  1, j  ui  1, j   ui, j  1  ui, j  1
4


Вибираємо початкове
наближення у вузлі
u 0 i, j 
Інтеративно повторюємо до
сходження
u k 1 i, j  
1
uk i  1, j   uk i  1, j   uk i, j  1  uk i, j  1
4
Розпаралелення

На сітку накладається
процесорна сітка


Кожному вузлу процесорної сітки
відповідає n/p вузлів сітки
дискретизації
Для кожного вузла процесорної
сітки ітерації можна проводити
паралельно

Після ітерації необхідний обмін на
границі сітки
Вузел
Процесорної
сітки
2
4
3
Вузел сітки
дискретизації
Оцінка ефективності



Для сітки n2 час виконання послідовного
алгоритма 4tn2
Для p2 процесорів час складається з
процесорної роботи та обміну
Прискорення росте зі збільшенням кількості
даних задачі та падає зі збільшенням
кількості процесорів
T1
4tn2
kï 

Tp 4tn2
 4to  tc  log2 p
2
p