Введение в параллельные алгоритмы

advertisement
Интернет Университет
Суперкомпьютерных технологий
Учебный курс
Введение в параллельные алгоритмы
Лекция 2
Методы построения параллельных программ
Якобовский М.В., д.ф.-м.н.
Институт математического
моделирования РАН, Москва
Предварительные замечания
… если для нас представляют интерес реально
работающие системы, то требуется
убедиться, (и убедить всех сомневающихся) в
корректности наших построений
… системе часто придется работать в
невоспроизводимых обстоятельствах, и мы едва
ли можем ожидать сколько-нибудь серьезной
помощи от тестов
Dijkstra E.W.
1966
Москва, 2009 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
2 из 26
Содержание лекции

Методы построения параллельных алгоритмов и
их свойства:
– Статическая балансировка
• метод сдваивания
• геометрический параллелизм
• конвейерный параллелизм
– Динамическая балансировка
• коллективное решение

Пример задачи, для параллельного решения
которой необходимо создание качественно
нового алгоритма
Москва, 2009 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
3 из 26
Хороший параллельный алгоритм
большим

Обладает запасом внутреннего параллелизма
– Есть возможность одновременного выполнения
операций
Допускает возможность равномерного
распределения вычислительных операций между
процессорами
большим числом
 Обладает низким уровнем накладных расходов

Москва, 2009 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
4 из 26
Накладные расходы

Операции, отсутствующие в наилучшем
последовательном алгоритме:
–
–
–
–
Синхронизация
Обмен данными
Дублирование операций
Новые операции
Москва, 2009 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
5 из 26
Обмен данными

Потери времени на передачу данных между процессами
Процессор 1
Москва, 2009 г.
Процессор 2
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
6 из 26
Синхронизация

Потери времени на ожидание долго выполняющихся процессов
Процессор 1
Москва, 2009 г.
Процессор 2
Процессор 3
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
7 из 26
Дублирование операций
S=0;
For(i=0;i<n1;i++)
S+=a[i];
Send(S)
S=0;
For(i=n1;i<n;i++)
S+=a[i];
Send(S)
Recv(S1)
Recv(S2)
S=S1+S2
Москва, 2009 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
8 из 26
Вычисление всех факториалов до 8! включительно
Шаг
1
2
3
Процессор 1
Процессор 2
12
123
12345
3 4
1234
123456
F=1;
for(i=2;i <= n;i++)
F*=i;
Процессор 3
Процессор 4
5 6
7 8
567
5678
1234567 12345678
Tp  n / 2 (n)   c log 2 n
S
n 1
7
 4 p
log 2 n n 8 3
p 4
T1 (n)   c (n  1)
Москва, 2009 г.
E p  4 (n  8) 
7
12
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
9 из 26
Вычисление всех факториалов до 8! включительно
Шаг
1
2
3
Процессор 1
Процессор 2
Процессор 3
Процессор 4
12
123
12345
3 4
5 6
7 8
1234
567
5678
123456 1234567 12345678
n 1
7
7
Tp n / 2 (n)   c log 2 n S 
  4  p E p  4 (n  8) 
log 2 n n 8 3
12
p 4
Шаг
1
2
3
Москва, 2009 г.
Процессор 1
1
2
4
2!
3!
5!
Процессор 2
8
3
5
3 4
4!
6!
Процессор 3
9
11
6
56
567
7!
Процессор 4
10
12
7
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
7 8
5678
8!
10 из 26
Метод сдванивания
Каскадная схема
Tp  n / 2 (n)   c log 2 n

S p n / 2


n  1
( n) 
a1
1
E p  n / 2 ( n) 
log 2 n
log 2 n
a2
a3
a1+a2
a4
a3+a4
a5
a6
a5+a6
a1+a2+a3+a4
a7
a8
a7+a8
a5+a6+a7+a8
a1+a2+a3+a4+a5+a6+a7+a8
Модифицированная каскадная схема
В.П.Гергель Основы параллельных вычислений, лекция 4, слайд 23
T
S
n
p
log2 n
n
p
log2 n
(n)  2 c log 2 n
( n) 
Москва, 2009 г.
n  1
2 log 2 n
2
1
1
E n ( n) 
p
2
log2 n
X1 X2 X3 X4
X5 X6 X7 X8
X9 X1 0 X1 1 X1
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
2
X1 3 X1 4 X1 5 X1
6
11 из 26
Стена Фокса
n – ширина стены
к – высота стены
Москва, 2009 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
12 из 26
Метод геометрического параллелизма
T1 (kn)   c kn
1
S p (kn)  p
p s
1 4
n c
Москва, 2009 г.
kn
Tp (kn)   c
 4k s
p
1
E p (kn) 
p s
1 4
n c
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
13 из 26
Метод коллективного решения (укладка паркета)
N
Tp   c   s 
p
c
s
master
pmax
Москва, 2009 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
c

s
14 из 26
Метод коллективного решения (укладка паркета)
Число порций
T1 (kn)   c kn
Обработка порции
kn
Tp (kn)  r c   s 
rp
Обмен данными
2
 r c 
1
1

S r c (kn)  
 pmax
p
1
  s  1  r c
s
1
pmax
s
E
p
r c
(kn) 
s
Москва, 2009 г.
1
s
1
r c
pmax 
r c
s
r – размер порции
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
15 из 26
Вычисление определенного интеграла

Send(ai); Send(ai+1); Recv(s);
B
I   f x dx  
A
i
ai 1
 f x dx
ai
T p   s  max  i
i
1
Москва, 2009 г.
2
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
16 из 26
Метод конвейерного параллелизма
T1 (kn)   c kn
S p (kn)  p
Москва, 2009 г.
1
s
1
c
kn
n
Tp (kn)   c
 k s
p
p
1
E p (kn) 
s
1
c
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
17 из 26

Статическая и динамическая балансировка
загрузки процессоров
– Статическая балансировка
• метод сдваивания
• геометрический параллелизм
• конвейерный параллелизм
– Динамическая балансировка
• коллективное решение
Москва, 2009 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
18 из 26
Определение суммы двух многоразрядных чисел
r=0;
for(i=0;i<=n;i++)
{
d=a[i]+b[i]+r;
c[i]=d%10;
r=d/10;
}
c[i]=r;
Москва, 2009 г.
6934317835
3221643577
10155961412

T1= 4nс
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
19 из 26
«Параллельный» алгоритм

Последовательное распространение разряда
переноса на четырёх процессорах
99
99999999
1
100000000
99
99

100
100
100
100
Москва, 2009 г.
99
1
100
00
00
00
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
20 из 26
Спекулятивный алгоритм

Спекулятивное вычисление двух сумм
99999999
1
100000000

Москва, 2009 г.
99
99
99
99
1
99
100
99
100
99
100
100
100
00
00
00
+0
+1
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
21 из 26
Спекулятивный алгоритм
r1=0;
r2=1;
for(i=0;i<=n1;i++)
{
d1=a[i]+b[i]+r1;
c1[i]=d1%10;
r1=d1/10;
d2=a[i]+b[i]+r2;
c2[i]=d2%10;
r2=d2/10;
}
Recv(&r)
if(r)c=c1;
else c=c2;
Москва, 2009 г.
T’= 8n1с
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
22 из 26
Спекулятивный алгоритм

Спекулятивное вычисление двух сумм
T1  4n c
n
Tp  8  c
p
p
Sp 
2
E p  50%
Москва, 2009 г.
99
99
99
99
100
99
100
99
100
100
00
00
99
1
100
+0
+1
00
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
23 из 26
Заключение
Рассмотрены методы построения параллельных
алгоритмов
 Рассмотрена проблема балансировки загрузки
процессоров
 Представлен масштабируемый параллельный
метод сложения многоразрядных чисел,
основанный на неэффективном
последовательном алгоритме

Москва, 2009 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
24 из 26
Вопросы для обсуждения
В чем заключается проблема балансировки
загрузки?
 В чем заключаются методы геометрического
параллелизма, конвейерного параллелизма и
коллективного решения?
 Чем определяются максимальные ускорения,
достигаемые при применении этих методов?
 В чем отличие методов статической и
динамической балансировки загрузки?

Москва, 2009 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
25 из 26
Контакты
Якобовский М.В.
д.ф.-м.н.,
зав. сектором
«Программного обеспечения многопроцессорных
систем и вычислительных сетей»
Института математического моделирования
Российской академии наук
mail: lira@imamod.ru
web: http://lira.imamod.ru
Москва, 2009 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
26 из 26
Download