- •Распараллеливание некоторых численных методов
- •План
- •Сумма последовательности значений
- •Походы к распараллеливанию суммирования
- •Разбиение цикла на блоки
- •Оценка количества операций
- •Эффективность
- •Конвейер
- •Графическая иллюстрация
- •Умножение матриц
- •Алгоритм Фокса
- •Алгоритм Фокса (продолжение)
- •Оценка времени Алгоритма Фокса
- •Характеристики
- •Решение систем линейных уравнений
- •Методы последовательного исключения неизвестных
- •Последовательная
- •Распараллеливание прямого хода
- •Реализация
- •Другие алгоритмы передачи
- •Оценка времени передачи
- •Иллюстрация
- •Сравнение разных методов передачи
- •Итеративные методы
- •Последовательный вариант
- •Распараллеливание
- •Параллельная реализация
- •Оценка времени
- •Иллюстрация
- •Сравнение различных матричных методов
- •Решение дифференциальных уравнений в частных
- •Дискретизация задачи
- •Пример – уравнение Лапласа
- •Решение уравнения
- •Распараллеливание
- •Реализация
- •Оценка эффективности
- •Вопросы
Распараллеливание некоторых численных методов
Судаков А.А.
“Параллельные и распределенные вычисления” Лекция 17
План
Нахождение суммы значений
Умножение матриц
Решение систем линейных уравнений
Сумма последовательности значений
Нахождение суммы большого количества слагаемых
Численное интегрирование
Суммирование рядов
Умножение векторов
Последовательный вариант
// f() – підпрограма обчислення fi sum=0;
for(i=0; i<n; i++){ sum+=f(i);
}
Походы к распараллеливанию суммирования
Конвейеризация последовательности операций
Векторизация
Разбиение цикла на блоки
Разбиение цикла на блоки
Суммирование
ассоциативно
Цикл разбивается на блоки
Каждый процессор выполняет свой блок цикла параллельно с остальными
Результаты работы всех процессоров складываются
//p – кількість процесорів
//k – номер поточного процессора від 0 до p-1
//f() – підпрограма обчислення fi
sum=0;
for(i=k; i<n; i+=p){ sum+=f(i);
}
reduce(0,sum);
Оценка количества операций
Время выполнения последовательного алгоритма
Nf – количество операций вычисления функции
Время выполнения параллельного суммирования
Время передачи данных
Коэффициент ускорения
n N f 1 t
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
Эффективность
распараллеливания
суммированияКоэффициент эффективности
Ускорение при распараллеливании будет когда
При большом количестве процессоров
При увеличении количества процессоров эффективность падает
При увеличении количества процессорных операций эффективность растет
Конвейер
Количество пересылок равно p-1
Эффективность ниже, чем при число параллельной обработке
Существует возможность выполнения асинхронных операций
Процессор, который закончил работу может сразу же приступить к выполнению дальнейшей работы
Процессор 1
Начал выполнять Дальнейшую работу
Процессор 2 |
|
Процессор 3 |
Получил результат |
|
Получил результат |
Процессора 1, |
|
Процессора 2, |
выполнил суммирование |
|
выполнил суммирование |
Передал дальше |
|
Передал дальше |
|
|
|
Графическая иллюстрация
Конвейер дает худшие результаты по ускорению, но не требует синхронизации между всеми процессорами и можно уменьшит время простоя даже для гетерогенной системы
Умножение матриц
Блочное представление дает возможность вычислять блок результата параллельно с остальными блоками результата
Рассмотрим пример для квадратной сетки размерности k, блоков размерности m и матрицы размерности n, количество процессоров p