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

advertisement
Распараллеливание построения
среднеквадратических
приближений сплайнами
восьмого порядка аппроксимации
Полуянов С.В.
Введение
• Пусть функция f задана на промежутке [a, b]
с погрешностями.
• Будем строить среднеквадратическое
приближение третьей высоты, что позволит
сгладить функцию и её производные вплоть
до третьей.
Введение
• Приближение ищется из условия
• На промежутке [a, b] построим
равномерную сетку узлов с шагом h:
• Тогда приближение задаётся по формуле:
• Коэффициенты находятся из условия
Введение
• Для нахождения коэффициентов
необходимо решить систему MC=F, где
Построение базисных сплайнов
• Приближение на промежутке
строится по формуле:
• Предположим, что носитель базисных
сплайнов
.
• Базисные сплайны найдём из условия
для
.
Построение базисных сплайнов
Получаем систему уравнений.
Построение базисных сплайнов
Решая систему, находим формулы базисных сплайнов.
Графики базисных сплайнов
Построение системы линейных
алгебраических уравнений
• Строим среднеквадратическое приближение
по формуле
• Для нахождения коэффициентов приходим к
системе MC=F.
• M – матрица грамма, симметрична и
положительно определена.
Построение матрицы
• Матрица M состоит из 16 блоков
• Каждый блок трёхдиагонален и имеет следующий вид:
Построение матрицы
• Элементы блока вычисляются по формулам:
• Положив h=1/N, вычислим элементы матрицы.
Построение матрицы
• Схематично матрица M имеет следующий вид:
Матрица M[100x100], чёрным цветом обозначены ненулевые элементы
Вычисление правой части
• Правая часть имеет вид
• Каждый из векторов
• Его элементы определяются по формулам:
Вычисление правой части
• Для нахождения элементов F вычислим соответствующие
интегралы, используя составную формулу Симпсона
численного интегрирования. Разбивая отрезок
интегрирования [a,b] на N равных частей, обозначим h=1/N и
вычислим интегралы по формуле:
где
• Погрешность интегрирования определяется по формуле:
Решение системы линейных
алгебраических уравнений
• Для решения системы MC=F будем использовать
одношаговый циклический процесс, также известный,
как итерационный метод Зейделя. Суть его заключается
в том, что в j-ом уравнении в правую часть переносятся
все члены, содержащие c[j], j>i:
Решение системы линейных
алгебраических уравнений
• Обозначим за D - матрицу, у которой на главной диагонали
стоят соответствующие элементы матрицы M, а все остальные
нули; матрицы U и L содержат верхнюю и нижнюю треугольные
части M:
Решение системы линейных
алгебраических уравнений
• После выбора начального приближения, процесс строится по
формуле:
• Формулу можно привести к каноническому виду
последовательных приближений
:
• Из этой записи видно, что метод Зейделя является
модификацией метода Якоби, в котором каждая итерация
имеет вид C=BC+G. Отличие заключается в том, что новые
значения используются сразу по мере получения, в отличие от
простого итерационного процесса, в котором они используются
только на следующей итерации.
Решение системы линейных
алгебраических уравнений
• Итак, i-я компонента (k+1)-го приближения строится по
формуле:
• Известно, что метод Зейделя сходится, если исходная
матрица M является симметричной и положительно
определённой.
Реализация и распараллеливание
• Реализовано в C++ с использованием OpenMP
• Распараллеливание осуществлено с помощью
прагмы #pragma omp parallel for
• Распараллелен цикл вычисления неграничных
элементов блоков вектора F
• Распараллеливание вычисления каждого интеграла
излишне
• Вследствие вычислительной схемы итерационного
процесса Зейделя распараллеливание внешнего
цикла невозможно, распараллеливание внутренней
операции суммирования ухудшало
производительность
Реализация и распараллеливание
• Тесты показали, что при увеличении дробления
области интегрирования вплоть до 100000-500000
точность возрастает вплоть до 6-9 знака после
запятой
• При дальнейшем разбиении точность уменьшается
• Условием окончания итерационного процесса
является различие элементов текущей и
предыдущей итерации менее, чем на заданную
точность eps, либо превышение наперёд заданного
максимального числа шагов maxN
• При заданной точности eps порядка 10^-8 норма
вектора невязки имеет порядок 10^-12 – 10^-17
Реализация и распараллеливание
• Время вычисления правой части существенно
превышает время решения системы линейных
алгебраических уравнений
• При минимальном размере матрицы 12х12 есть в
каждом блоке F[i] лишь один неграничный элемент,
поэтому распараллеливание не повышает
производительность
• Однако уже при следующем возможном размере 16х16
наблюдается рост производительности
• При достаточном размере матрицы на системе с
двуядерным процессором Core 2 Duo наблюдается
практически двукратный прирост производительности
распараллеленной программы
Реализация и распараллеливание
Размер матрицы Число потоков Время вычисления
правой части, сек
Время решения СЛАУ,
сек
12х12
16х16
64х64
400х400
1
3.04
0.05
2
3.06
0.05
1
4.85
0.06
2
3.22
0.06
1
24.38
0.93
2
13.07
0.93
1
160.69
26.14
2
82.47
25.98
Итог
Был реализован и распараллелен алгоритм для построения
среднеквадратического приближения, получен почти двукратный
прирост производительности на системе с двуядерным процессором
Download