Параллельные методы и алгоритмы

advertisement
Интернет Университет
Суперкомпьютерных технологий
Лекция 3
Методы построения параллельных
программ (продолжение)
Учебный курс
Введение в параллельные
алгоритмы
Якобовский Михаил Владимирович
проф., д.ф.-м.н.
Институт прикладной математики им.
М.В.Келдыша РАН, Москва
1
Содержание лекции

Методы построения параллельных алгоритмов и
их свойства:
– Статическая балансировка
• метод сдваивания
• геометрический параллелизм
• конвейерный параллелизм
– Динамическая балансировка
• коллективное решение
• диффузная балансировка загрузки
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
2
Метод сдваивания
Каскадная схема
Tp  n / 2 (n)   c log 2 n

S p n / 2


n  1
( n) 
a1
a2
a1+a2
1
E p  n / 2 ( n) 
log 2 n
log 2 n
a3
a4
a3+a4
a5
a6
a7
a5+a6
a1+a2+a3+a4
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) 
n  1
2 log 2 n
Москва, 2011 г.
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
3
6
Метод геометрического параллелизма
T1 (kn)   c kn
1
S p (kn)  p
p s
1 4
n c
Москва, 2011 г.
kn
Tp (kn)   c
 4k s
p
1
E p (kn) 
p s
1 4
n c
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
4
Метод коллективного решения (укладка паркета)
Число порций
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
s
(kn) 
1
s
1
r c
Москва, 2011 г.
pmax 
r c
s
r – размер порции
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
5
Метод конвейерного параллелизма
kn
T1 (kn)   c kn Tp (kn)   c
?
p
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
6
Метод конвейерного параллелизма
Время выполнения на p процессорах
?
kn
T1 (kn)   c kn Tp (kn)   c
?
p
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
7
Метод конвейерного параллелизма
T1 (kn)   c kn
S p (kn)  p
Москва, 2011 г.
1
s
1
c
kn
n
Tp (kn)   c
 k s
p
p
1
E p (kn) 
s
1
c
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
8
Метод конвейерного параллелизма
for(t=0;t<tmax;t+=dt)
{
fnew[0]=g(t);
for(i=1;i<n;i++)
fnew[i]= fnew[i-1]+f[i]
for(i=0;i<n;i++)
f[i]= fnew [i]
}
fnew[i]
f[i]
0
Москва, 2011 г.
1
2
3
4
5
6
7
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
9
Метод конвейерного параллелизма
процессор 0
Москва, 2011 г.
процессор 1
процессор 2
процессор 3
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
10
Метод конвейерного параллелизма
процессор 0
Москва, 2011 г.
процессор 1
процессор 2
процессор 3
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
11
Метод конвейерного параллелизма
процессор 0
Москва, 2011 г.
процессор 1
процессор 2
процессор 3
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
12
Метод конвейерного параллелизма
процессор 0
Москва, 2011 г.
процессор 1
процессор 2
процессор 3
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
13
Метод конвейерного параллелизма
процессор 0
Москва, 2011 г.
процессор 1
процессор 2
процессор 3
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
14
Метод конвейерного параллелизма
процессор 0
Москва, 2011 г.
процессор 1
процессор 2
процессор 3
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
15
Метод конвейерного параллелизма
процессор 0
Москва, 2011 г.
процессор 1
процессор 2
процессор 3
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
16
Метод конвейерного параллелизма
процессор 0
Москва, 2011 г.
процессор 1
процессор 2
процессор 3
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
17
Метод конвейерного параллелизма
процессор 0
Москва, 2011 г.
процессор 1
процессор 2
процессор 3
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
18
Метод конвейерного параллелизма
процессор 0
Москва, 2011 г.
процессор 1
процессор 2
процессор 3
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
19
Метод конвейерного параллелизма
процессор 0
Москва, 2011 г.
процессор 1
процессор 2
процессор 3
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
20
Метод конвейерного параллелизма
T1 (kn)   c kn
S p (kn)  p
Москва, 2011 г.
1
s
1
c
kn
n
Tp (kn)   c
 k s
p
p
1
E p (kn) 
s
1
c
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
21
Метод конвейерного параллелизма
процессор 0
процессор 1
T1 (kn)   c kn
1
S p (kn)  p
p s
1 2
n c
Москва, 2011 г.
процессор 2
процессор 3
kn
Tp (kn)   c
 2k s
p
1
E p (kn) 
p s
1 2
n c
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
22
Объём хранимых данных
процессор 0
процессор 1
T1 (kn)   c kn
1
S p (kn)  p
p s
1 2
n c
Москва, 2011 г.
процессор 2
процессор 3
kn
Tp (kn)   c
 2k s
p
1
E p (kn) 
p s
1 2
n c
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
23
Диффузная балансировка

Причины дисбаланса вычислительной нагрузки
– Разные процессоры
– Внешнее воздействие
– Разная вычислительная сложность заданий

Результат дисбаланса
– Эффективная производительность определяется
самым медленным процессором
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
24
Медленный процессор
Какой объем работ забрать у среднего
процессора и кому его передать?
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
25
Метод геометрического параллелизма
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
26
Метод геометрического параллелизма
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
27
Диффузная балансировка загрузки
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
28
Диффузная балансировка загрузки
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
29
Диффузная балансировка загрузки
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
30
Статическое распределение
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
31
Постановка задачи диффузной балансировки
Дано:
• Количество точек – N
• Количество процессоров – p
• Процессор i обработал ni точек за время ti
Требуется:
• Найти количества точек n’i , которое следует
обработать процессорам на следующем шаге
• Определить сколько точек каждый из
процессоров должен передать соседним
процессорам
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
32
Диффузная балансировка
n N
'
i
ni
ti
p 1

j 0
Москва, 2011 г.
nj
tj
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
33
Простые алгоритмы

Статическая и динамическая балансировка
загрузки процессоров
– Статическая балансировка
• метод сдваивания
• геометрический параллелизм
• конвейерный параллелизм
– Динамическая балансировка
• коллективное решение
• диффузная балансировка
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
34
Иные алгоритмы
Замедлить, чтобы выполнить быстрее
6934317835
3221643577
10155961412

Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
35
Определение суммы двух многоразрядных чисел
r=0;
for(i=0;i<=n;i++)
{
d=a[i]+b[i]+r;
c[i]=d%10;
r=d/10;
}
c[i]=r;
Москва, 2011 г.
6934317835
3221643577
10155961412

T1= 4nс
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
36
«Параллельный» алгоритм
Последовательное распространение разряда
переноса на четырёх процессорах
99
99999999
1
100000000
99
99

100
100
100
100
Москва, 2011 г.
99
1
100
00
00
00
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
37
« Параллельный » алгоритм
?
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
38
Спекулятивный алгоритм

Спекулятивное вычисление двух сумм
99999999
1
100000000

Москва, 2011 г.
99
99
99
99
1
99
100
99
100
99
100
100
100
00
00
00
+0
+1
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
39
Спекулятивный алгоритм
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;
Москва, 2011 г.
T’= 8n1с
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
40
Спекулятивный алгоритм

Спекулятивное вычисление двух сумм
T1  4n c
n
Tp  8  c
p
p
Sp 
2
E p  50%
Москва, 2011 г.
99
99
99
99
100
99
100
99
100
100
00
00
99
1
100
+0
+1
00
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
41
Общая схема вычислений
K = 1 000 000;
шаг_вывода = 10 000;
for(шаг=0;шаг<k;шаг++)
{
for(кирпич=rank*n/p;кирпич<(rank+1)*n/p;кирпич++)
Уложить (кирпич)
Обменяться данными о кирпичах, прилегающих к внутренним
границам()
if( шаг % шаг_вывода == 0 )
{
Вывести промежуточные результаты()
}
}
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
42
Заключение

Рассмотрены некоторые методы построения
параллельных алгоритмов

Рассмотрен алгоритм диффузной балансировки
загрузки процессоров

Представлен масштабируемый параллельный
алгоритм, основанный на неэффективном
последовательном алгоритме
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
43
Контакты
Якобовский М.В.
проф., д.ф.-м.н.,
зав. сектором
«Программного обеспечения вычислительных
систем и сетей»
Института прикладной математики им.
М.В.Келдыша Российской академии наук
mail: lira@imamod.ru
web: http://lira.imamod.ru
Москва, 2011 г.
Введение в параллельные алгоритмы: Методы построения параллельных программ
© Якобовский М.В.
44
Download