Разделы презентаций


Основные подходы к распараллеливанию

Содержание

ПланКонвейерМатричная обработкаРаспараллеливание циклов

Слайды и текст этой презентации

Слайд 1Основные подходы к распараллеливанию
Судаков А.А.
“Параллельные и распределенные вычисления” Лекция 16

Основные подходы к распараллеливаниюСудаков А.А.“Параллельные и распределенные вычисления” Лекция 16

Слайд 2План
Конвейер
Матричная обработка
Распараллеливание циклов


ПланКонвейерМатричная обработкаРаспараллеливание циклов

Слайд 3Конвейер
Конвейерная обработка – метод распараллеливания существенно последовательных операций
Процессоры соединяются так,

чтобы результат работы одного процессора поступал на вход другого (линейная

топология)
Сложная операция разбивается на несколько последовательных стадий, каждая стадия выполняется своим процессором
КонвейерКонвейерная обработка – метод распараллеливания существенно последовательных операцийПроцессоры соединяются так, чтобы результат работы одного процессора поступал на

Слайд 4Использование конвейера
Параллелизм на уровне инструкций
Конвейерная обработка в процессорах
Параллелизм на уровне

процедур
Конвейерное объединение потоков
Параллелизм на уровне приложений
Передача выхода одной программы

на вход другой
Передача сообщений


Использование конвейераПараллелизм на уровне инструкцийКонвейерная обработка в процессорахПараллелизм на уровне процедурКонвейерное объединение потоковПараллелизм на уровне приложений Передача

Слайд 5Когда конвейер эффективный
Три случая
С помощью конвейера необходимо решить несколько последовательных

задач
С помощью конвейера необходимо решить одну задачу для большой последовательности

входных данных
Когда каждый процессор еще до завершения своей работы может отправить данные следующему процессору и запустить его работу
Когда конвейер эффективныйТри случаяС помощью конвейера необходимо решить несколько последовательных задачС помощью конвейера необходимо решить одну задачу

Слайд 6Пример: конвейер первого типа
Пример: Нахождение суммы нескольких значений
Есть p процессоров
У

каждого процессора есть свои данные di
Необходимо найти сумму

Пример: конвейер первого типаПример: Нахождение суммы нескольких значенийЕсть p процессоровУ каждого процессора есть свои данные diНеобходимо найти

Слайд 7Реализация
// i – номер поточного процессора
// d- дані поточного процесора
//

sum – проміжне значення, яке на
// останньому процесорі буде

містити
// результат розв’язання задачі
recv(i-1,&sum)
sum=+d
send(i+1,sum)
Реализация// i – номер поточного процессора// d- дані поточного процесора// sum – проміжне значення, яке на //

Слайд 8Время выполнения первой задачи
Каждый процессор получает результат предыдущего
Добавляет к нему

свое значение и отправляет результат дальше
Время вычисления первой суммы:
Суммарное время

работы всех процессоров
Время передачи данных от первого процессора до последнего
Это время называется временем заполнения конвейера (существенно последовательная операция)
Время выполнения последовательного алгоритма
Ускорение
Для решения одной задачи конвейер не эффективен!
Время выполнения первой задачиКаждый процессор получает результат предыдущегоДобавляет к нему свое значение и отправляет результат дальшеВремя вычисления

Слайд 9Время решения нескольких задач
Пусть задачу необходимо решить m раз для

m наборов данных на каждом процессоре
Каждую следующую операцию процессор будет

выполнять за время
Общее время решения задачи
Время решения m задач на 1 процессоре
Ускорение
Время решения нескольких задачПусть задачу необходимо решить m раз для m наборов данных на каждом процессореКаждую следующую

Слайд 10Время выполнения при большом количестве задач
Предел коэффициента ускорения при m->∞
При

очень большом количестве задач ускорение стремится к идеальному
При малом количестве

ограничивается законом Амдала

Время выполнения при большом количестве задачПредел коэффициента ускорения при  m->∞При очень большом количестве задач ускорение стремится

Слайд 11Иллюстрация

Иллюстрация

Слайд 12Графическая иллюстрация
Доля последовательных вычислений зависит от количества задач

Графическая иллюстрацияДоля последовательных вычислений зависит от количества задач

Слайд 13Вводы относительно конвейера первого типа
Эффективность конвейера всегда меньше единицы
Для получения

высоких коэффициентов ускорения необходимо, чтобы скорость обмена дынными была по

возможности меньше
Коэффициент ускорения асимптотически стремится к значению
Эффективность конвейера растет при увеличении времени, которое тратит процессор на обработку данных по сравнению с временем передачи
Даже для медленных каналов связи при большом количестве операций алгоритма конвейер может давать ускорение
Для эффективной работы конвейера его необходимо сильно загрузить
Вводы относительно конвейера первого типаЭффективность конвейера всегда меньше единицыДля получения высоких коэффициентов ускорения необходимо, чтобы скорость обмена

Слайд 14Конвейер второго типа
Пример: сортировка массива значений
На входе есть большой массив

данных
Каждый процессор получает информацию от предыдущего и передает наибольшее из

своих значений следующему процессору
В результате процессор с меньшим номером будет содержать элементы массива с меньшими значениями
Конвейер второго типаПример: сортировка массива значенийНа входе есть большой массив данныхКаждый процессор получает информацию от предыдущего и

Слайд 15Программа
recv(i-1,x)
for(j=0;j x) {
Send(i+1,x);
} else {
send(i+1, number);
}
}

Программаrecv(i-1,x)for(j=0;j x) {	Send(i+1,x);} else {	send(i+1, number);}}

Слайд 16Оценка времени
Каждый процессор выполняет порядка n операций сравнения параллельно с

остальными
Самый быстрый последовательный алгоритм требует порядка n(log2n) операций
Коэффициент ускорения
Эффективность достаточно

маленькая

Оценка времениКаждый процессор выполняет порядка n операций сравнения параллельно с остальнымиСамый быстрый последовательный алгоритм требует порядка n(log2n)

Слайд 17Конвейер третьего типа
Одновременная передача данных и обработка (Send-ahead)
Если полученные от

предыдущего процессора данные можно передать на следующий процессор, а потом

начать их обработку
Конвейер третьего типаОдновременная передача данных и обработка (Send-ahead)Если полученные от предыдущего процессора данные можно передать на следующий

Слайд 18Пример конвейера третьего типа
Обратный ход метода Гаусса
Матрица треугольной формы

Пример конвейера третьего типаОбратный ход метода ГауссаМатрица треугольной формы

Слайд 19Решение

Решение

Слайд 20Последовательная программа
// по всем неизвестным
for(i=1; i

неизвестным
for(j=1;j

Последовательная программа// по всем неизвестнымfor(i=1; i

Слайд 21Параллельная программа
Процессор 1 –вычисляет x1 и передает его дальше
Процессор 2

принимает x1 передает его дальше, вычисляет x2 и тоже передает

его дальше
Процессор 3 принимает x1 , принимает x2 , передает их дальше, вычисляет x3 и передает его дальше

Вычисление выполняется параллельно с передачей данных
разные процессоры работают одновременно
Параллельная программаПроцессор 1 –вычисляет x1 и передает его дальшеПроцессор 2 принимает x1 передает его дальше, вычисляет x2

Слайд 22Параллельная программа
for(j=1;j

Параллельная программаfor(j=1;j

Слайд 23Эффективность
Последовательный алгоритм O(n2) операций
Параллельный алгоритм – каждый процессор порядка O(n)

операций
Ускорение порядка O(n)
С увеличением порядка матрицы ускорение растет

ЭффективностьПоследовательный алгоритм O(n2) операцийПараллельный алгоритм – каждый процессор порядка O(n) операцийУскорение порядка O(n) С увеличением порядка матрицы

Слайд 24Выводы относительно конвейера
Самый простой и дешевый вариант распараллеливания
Возможность распараллеливания принципиально

последовательных операций
Возможность одновременного выполнения передачи данных и их обработки (асинхронные

операции)

Эффективность всегда меньше 1
Выводы относительно конвейераСамый простой и дешевый вариант распараллеливанияВозможность распараллеливания принципиально последовательных операцийВозможность одновременного выполнения передачи данных и

Слайд 25Матричная (векторная, параллельная) обработка
Каждый процессор получает часть своей задачи и

выполняет ее параллельно с другими процессорами
В конце выполнения процессоры синхронизируются

(барьер)
Матричная (векторная, параллельная) обработкаКаждый процессор получает часть своей задачи и выполняет ее параллельно с другими процессорамиВ конце

Слайд 26Ускорение
Ускорение при равномерной загрузке процессоров стремится к количеству процессоров
Эффективность стремится

к единице
Процессоры большую часть времени загружены

УскорениеУскорение при равномерной загрузке процессоров стремится к количеству процессоровЭффективность стремится к единице Процессоры большую часть времени загружены

Слайд 27Преимущества
Высокая эффективность
Обмен мало влияет на скорость выполнения

ПреимуществаВысокая эффективностьОбмен мало влияет на скорость выполнения

Слайд 28Недостатки
Синхронный режим работы
Во время синхронизации процессоры простаивают
Нет возможности выполнять обмен

одновременно с вычислениями
Требует большого количества одинаковых процессоров
Обычно дорогостоящее решение

НедостаткиСинхронный режим работыВо время синхронизации процессоры простаиваютНет возможности выполнять обмен одновременно с вычислениямиТребует большого количества одинаковых процессоровОбычно

Слайд 29Векторно-конвейерная схема
Вектор – массив элементов одинакового типа
Векторные операции – большое

количество одинаковых операций с разными данными
x[i]+y[i]=z[i]
Конвейер второго типа может быть

эффективным для таких операций
Векторно-конвейерная схемаВектор – массив элементов одинакового типаВекторные операции – большое количество одинаковых операций с разными данными	x[i]+y[i]=z[i]Конвейер второго

Слайд 30сложение двух чисел
Сложение чисел стандарт ANSI/IEEE
[A:] сравнение порядков и определение

меньшего числа
[B:] сдвиг мантиссы числа с меньшим порядком, чтобы порядки

стали одинаковыми
[C:] складываются мантиссы полученных чисел
[D:] результат нормализируется
[E:] проверка на возникновение исключительных ситуаций
[F:] Округление

сложение двух чиселСложение чисел стандарт ANSI/IEEE[A:] сравнение порядков и определение меньшего числа[B:] сдвиг мантиссы числа с меньшим

Слайд 31Пример сложения
x+y, где x=1234,00 y = -567,8

Пример сложенияx+y, где x=1234,00 y = -567,8

Слайд 32Оценка времени
Время выполнения одной стадии t
Время сложения двух чисел 6t
Сложение

двух векторов длины n выполнится за 6tn

Оценка времениВремя выполнения одной стадии tВремя сложения двух чисел 6tСложение двух векторов длины n выполнится за 6tn

Слайд 33Диаграмма состояний

Диаграмма состояний

Слайд 34Конвейерное выполнение
После выполнения первой стадии с первым числом сразу

же запускается первая стадия со вторым числом

Конвейерное выполнение После выполнения первой стадии с первым числом сразу же запускается первая стадия со вторым числом

Слайд 35Оценка времени
Время сложения двух векторов
Коэффициент ускорения

Оценка времениВремя сложения двух векторовКоэффициент ускорения

Слайд 36Параметры векторно-конвейерной системы
Размерность вектора, при котором скорость работы векторного процессора

становится большей, чем скалярного (2 в данном случае)
Максимально возможный коэффициент

ускорения (векторная скорость света) = 6
При размерности вектора 4096 ускорение равно 5.99268
Размерность вектора при которой производительность равна половине от максимальной (5 в данном случае)


Параметры векторно-конвейерной системыРазмерность вектора, при котором скорость работы векторного процессора становится большей, чем скалярного (2 в данном

Слайд 37Распараллеливание циклов
Циклы типа for() обычно хорошо распараллеливаются
Циклы типа while распараллеливаются

обычно плохо
Два подхода
Развертка циклов (unroll)
Векторизация циклов
Разбивка на блоки (blocking)

Распараллеливание цикловЦиклы типа for() обычно хорошо распараллеливаютсяЦиклы типа while распараллеливаются обычно плохоДва подходаРазвертка циклов (unroll)Векторизация цикловРазбивка на

Слайд 38Разбивка на блоки
for(i=0; i

выполняется своим процессором с помощью параллельной схемы

Разбивка на блокиfor(i=0; i

Слайд 39Пример разбивки на блоки
Цикл разбивается на p циклов
Каждый процессор выполняет

свой цикл
for(j=0;j

Пример разбивки на блокиЦикл разбивается на p цикловКаждый процессор выполняет свой циклfor(j=0;j

Слайд 40Эффективность
При отсутствии связи между данными внутри цикла эффективность стремится к

ЭффективностьПри отсутствии связи между данными внутри цикла эффективность стремится к 1

Слайд 41Развертка циклов
Часть операций цикла можно заменить последовательностью операций и выполнить

с помощью конвейера
for(i=0; i

при большом k
Развертка цикловЧасть операций цикла можно заменить последовательностью операций и выполнить с помощью конвейераfor(i=0; i

Слайд 42Векторизация циклов
Часть операций цикла можно заменить последовательностью операций и выполнить

с помощью векторных команд (mmx, sse)
for(i=0; i

рассматриваются как векторы размерности k
a[начиная с i]=b[начиная с i]+1;
}
Ускорение почти в k раз

Векторизация цикловЧасть операций цикла можно заменить последовательностью операций и выполнить с помощью векторных команд (mmx, sse)for(i=0; i

Слайд 43Работа с большими матрицами
В прикладных задачах часто возникает проблема работы

с матрицами большого размера (100000х100000 )
Для размещения такой матрицы чисел

типа double потребуется 76 ГБайт
В оперативную память одной машины такая матрица не влезет
Используются блочные методы
Работа с большими матрицамиВ прикладных задачах часто возникает проблема работы с матрицами большого размера (100000х100000 )Для размещения

Слайд 44Блочные методы
Матрица разбивается на части – блоки (rxq блоков)
Каждый

блок хранится в памяти одного узла массивно параллельной системы (кластера)


Говорят: «На матрицу накладывается процессорная сетка»
Каждому узлу сетки (блоку матрицы) соответствует процессор с координатами (i,j)
Для выполнения операций с матрицами процессоры должны обмениваться данными между собой (топология решетка)
Блочные методы Матрица разбивается на части – блоки (rxq блоков)Каждый блок хранится в памяти одного узла массивно

Слайд 45Математика блочных операций
Математически операции с блочными матрицами выполняются так же,

как и операции с обычными матрицами, но умножение чисел заменяется

умножением матриц, сложение…
Математика блочных операцийМатематически операции с блочными матрицами выполняются так же, как и операции с обычными матрицами, но

Слайд 46Распараллеливание блочных операций
Вычисление каждого блока результата может выполняться параллельно с

вычислением других блоков результата
Эффективность таких операций увеличивается при увеличении размерности

матриц
Количество операций обработки данных порядка O(m3)
Время передачи данных O(m2)

Распараллеливание блочных операцийВычисление каждого блока результата может выполняться параллельно с вычислением других блоков результатаЭффективность таких операций увеличивается

Слайд 47Геометрическое распараллеливание
Процессоры, которые интенсивно взаимодействуют между собой должны находится «ближе»


например располагаться на одном узле многопроцессорной машины

Геометрическое распараллеливаниеПроцессоры, которые интенсивно взаимодействуют между собой должны находится «ближе» например располагаться на одном узле многопроцессорной машины

Слайд 48Вопросы?

Вопросы?

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика