Интернет Университет Суперкомпьютерных технологий Лекция 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