240 likes | 305 Views
Распараллеливание построения среднеквадратических приближений сплайнами восьмого порядка аппроксимации. Полуянов С.В. Введение. Пусть функция f задана на промежутке [ a , b ] с погрешностями.
E N D
Распараллеливание построения среднеквадратическихприближений сплайнами восьмого порядка аппроксимации Полуянов С.В.
Введение • Пусть функция 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 • Распараллеливание осуществлено с помощью прагмы#pragmaomp 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 наблюдается практически двукратный прирост производительности распараллеленной программы
Итог Был реализован и распараллелен алгоритм для построения среднеквадратического приближения, получен почти двукратный прирост производительности на системе с двуядерным процессором