В. Ю. Калугина, студент; Н. Н. Михайлова, ст
| Вид материала | Документы |
- Е. М. Михайлова Рецензенты: зав кафедрой гуманитарных и естественнонаучных дисциплин, 972.65kb.
- Е. М. Михайлова Рецензенты: зав кафедрой гуманитарных и естественнонаучных дисциплин, 599.47kb.
- Литература: Калугина Т. А. Новые информационные технологии в сфере образования: методологические, 14.35kb.
- Конспект лекций Соответствует государственному образовательному стандарту высшего профессионального, 899.55kb.
- Ивакин Григорий Анатольевич, Кучер Ия Валерьевна, Калугина Марина Николаевна, Ткачева, 103.27kb.
- Людмила Немец, Надежда Грищенко, Константин Немец, 128.27kb.
- Ивана Яниса Михайлова Борис Федорович Инфантьев. Краткая биография, 1272.13kb.
- Методические указания по дисциплине "Финансы и кредит", 596.59kb.
- Т. Г. Калугина Приложение, 253.79kb.
- Шеллинг Ф. В. Й. Ш44 Сочинения в 2 т.: Пер с нем. Т. 2/Сост., ред. А. В. Гулыга; Прим., 8765.63kb.
УДК 681.3.06
В.Ю. Калугина, студент; Н.Н. Михайлова, ст. преподаватель
Комсомольский-на-Амуре государственный технический университет
Параллельный алгоритм построения кубического сплайна
Работа посвящена распараллеливанию последовательного алгоритма построения интерполяционного кубического сплайна. Результатом является программное обеспечение, реализующее последовательный и параллельный алгоритмы построения интерполяционного кубического сплайна.
Приведем определение. Естественным интерполяционным кубическим сплайном называется функция
, удовлетворяющая следующим условиям:- функция
– дважды непрерывно дифференцируемая функция на отрезке
;
- на каждом из отрезков
функция
является полиномом третьей степени вида
,
;- функция
– интерполяционная функция, то есть:
,
;
4) вторая производная функции
в точках a и b обращается в ноль.Рассмотрим алгоритм построения естественного интерполяционного кубического сплайна. Сначала необходимо найти все коэффициенты сплайна:
,
и
,
. А затем, определив номер отрезка, можно вычислить значения сплайна в любой точке отрезка
.Коэффициенты сплайна находятся в следующем порядке.
1. Сначала по явным формулам находятся коэффициенты
,
.2. Коэффициенты
находятся из решения системы линейных уравнений размерности
с невырожденной трехдиагональной матрицей методом прогонки. Запишем эту систему линейных уравнений для случая равномерного шага
- Зная
и
, коэффициенты сплайна
и
можно вычислить
по явным формулам:
,
,
.Отметим, что эти вычисления можно проводить параллельно.
Обсудим возможность применения метода прогонки. Как известно, метод прогонки состоит из двух этапов. На первом, называемом прямой прогонкой, вычисляются коэффициенты
,
по следующим формулам:
,
,где i= 1,2, … n-1. На втором этапе, называемом обратной прогонкой, находятся неизвестные
в порядке убывания индексов:
, 
Для распараллеливание метода прогонки были организованы двухпоточные вычисления. Один поток вычисляет
, другой -
. Т.к. при вычислении
используется
, то в главной программе в процессе работы запускает поток , который параллельно вычисляет
. Затем, когда поступает сигнал о вычислении
, главная программа вычисляет
.При разработке параллельной программы появилась проблема. Она связана с тем, что на передачу сообщения о вычислении
расходуется времени больше, чем на само вычисление
. Для уменьшения времени работы параллельной программы мы предлагаем блочный подход. Заключается он в следующем. Сначала второй поток вычисляет большое количество, например тысячу, чисел
. Затем он передает сигнал об их вычислении, и главный поток вычисляет тысячу
, а второй поток в это время параллельно вычисляет следующую тысячу
. Количество вычислений внутри блока может меняться и задается пользователем.Для распараллеливания вычислений
и
организуем двухпоточные вычисления. Один поток вычисляет
, а второй -
. Т.к. вычисления могут происходить независимо друг от друга, то эти потоки могут выполняться параллельно.Программное обеспечение было разработано на языке Borland C++ Builder 6.0 в операционной системе Windows XP. Тестирование проводилось на двухядерном компьютере Acer. При использовании блоков без распараллеливания вычислений
и
удалось получить ускорение от 3 до 19%. Если же использовать блоки при параллельном вычислении
и
и параллельно вычислять
и
, то удается получить ускорение до 45% (в зависимости от соотношения длины блока к числу точек).
