Параллельные методы решения систем уравнений

Параллельные методы решения систем линейных уравнений

Смотреть на youtube || на ИНТУИТ в качестве: низком | среднем | высоком

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

1) Можно ли экстерном получить второе высшее образование «Программная инженерия» ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?

Параллельные методы решения систем уравнений

Кафедра : Э лектронных вычислительных машин

Специальность : Компьютерные системы и сети

Тема выпускной работы :

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

Руководитель : Ладыженский Юрий Валентинович, доцент, к.т.н.


» Параллельные метод ы решения систем линейных алгебраических уравнений на вычислительном кластере «

На сегодняшний день производительность вычислительных систем во многом увеличивается не столько за счет увеличения частоты работы устройств, сколько за счет привлечения параллельной обработки 1. Данный процесс затрагивает как создание аппаратных средств (процессоры с несколькими АЛУ, коммуникационное оборудование для многопроцессорных систем и т.д.), так и разработку эффективных алгоритмов для различных параллельных платформ. Современные параллельные системы весьма дороги и используются для решения задач, требующих больших вычислительных ресурсов: предсказания погоды и климата, построения полупроводниковых приборов, исследования генома человека и т.д.

Как бы то ни было, существует возможность создания достаточно дешевой и относительно эффективной параллельной системы на базе обычных компьютеров, соединенных при помощи коммуникационного оборудования и, таким образом, образующих один вычислительный ресурс. Такие системы называются кластерами и относятся к классу параллельных систем с распределенной памятью [1,3]. Узким местом кластеров является то, что для взаимодействия отдельных узлов привлекается наиболее распространенное и дешевое коммуникационное оборудование (Fast Ethernet), которое использует общую среду передачи данных и обладает не очень большой пропускной способностью (в сравнении со скоростью обработки данных современными процессорами). Поэтому круг задач, решаемых на подобных системах, ограничивается задачами с небольшим числом обменов по сравнению с количеством вычислений. Неоспоримым преимуществом подобных систем является их относительная дешевизна и фактическое наличие больших компьютерных классов во многих учебных заведениях. Для программирования подобных систем применяются системы передачи сообщений, в которых отдельные компьютеры взаимодействуют посредством передачи и приема данных.

На сегодняшний день наиболее популярным стандартом является MPI ( message passing interface — интерфейс передачи сообщений) 1. Конкретные реализации MPI стандарта создаются производителями программного обеспечения и поставляются вместе с оборудованием. Большинство реализаций стандарта MPI называются MPICH . Этот стандарт описывает имена, вызовы и результат работы процедур. Для каждой конкретной параллельной системы с передачей сообщений MPI имеет свою оптимизированную реализацию, а правильно написанная программа переносима между различными MPI системами на уровне исходных кодов. Для написания MPI программ используются современные языки программирования, такие как C/C++ и Fortran.

Исследования в области MPI программирования ведутся в двух направлениях: создание эффективных параллельных алгоритмов и создание эффективных реализаций MPI стандарта для кластерных систем. Параллельные алгоритмы разрабатываются с учетом низкой скорости передачи данных, в связи с этим предпочтение отдается методам с наименьшим числом обменов. Текущая реализация MPI для кластерных систем осуществляет обмены посредством протокола TCP / IP [4], что приводит к невозможности эффективного использования широковещательных обменов, которые в текущей реализации осуществляются посредством парных обменов. Поэтому сегодня ведутся работы по созданию MPI реализации с реальным использованием широковещательных пересылок. Еще одна возможность увеличения производительности MPI программ – совмещение обменов и вычислений, однако для используемой в работе реализации данная техника не приводит к существенным улучшениям.

Данная работа посвящена созданию эффективных параллельных алгоритмов метода сопряженных градиентов для симметрических положительно определенных пятидиагональных систем линейных алгебраических уравнений. Системы подобного рода появляются при конечноразностной аппроксимации дифференциальных уравнений в частных производных. На сегодняшний день разработано большое число эффективных последовательных алгоритмов данного типа [1]. Однако большинство из них неприемлемо для параллельной реализации. Это связано с их рекурсивным характером, а, следовательно, малым параллелизмом.

Целью данной работы является исследование существующих последовательных и параллельных алгоритмов метода сопряженных градиентов, выделение из них, а также создание собственных эффективных алгоритмов метода сопряженных градиентов, пригодных для применения на кластерных системах.

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

Результаты исследования показали, что при реализации задачи на кластерах больших размеров целесообразно использовать методы с минимальным числом обменов, а на кластерах малых размеров — методы, обладающие лучшей сходимостью.

Кластер — это связанный набор полноценных компьютеров, используемый в качестве единого вычислительного ресурса [1,2].

В качестве вычислительных узлов кластера используются доступные на рынке одно-, двух- или четырехпроцессорные компьютеры. Каждый узел такой системы работает под управлением своей копии операционной системы, в качестве которой чаще всего используются стандартные операционные системы: Windows, Linux, Solaris и т.п. Состав и мощность узлов кластера может меняться, давая возможность создавать неоднородные системы [1,2].

В качестве коммуникационного протокола в таких системах используются стандартные протоколы ЛВС, характеризуемые низкой стоимостью и низкой скоростью передачи данных. Основные характеристики коммуникационных сетей: латентность – время начальной задержки при посылке сообщения и пропускная способность сети, определяющая скорость передачи информации по каналам связи [1,2]. Наличие латентности определяет тот факт, что максимальная скорость передачи данных по сети не может быть достигнута на сообщениях с небольшой длиной. Чаще всего используется сеть Fast Ethernet, основное достоинство которой – низкая стоимость оборудования. Однако большие накладные расходы на передачу сообщений в рамках Fast Ethernet приводят к серьезным ограничениям на спектр задач, которые можно эффективно решать на таком кластере. Если от кластера требуется большая универсальность, то нужно переходить на более производительные коммуникационные сети, например, SCI, Myrinet и т.п.

В качестве средств организации параллельного программирования в кластерах используются различные системы передачи сообщений, посредством которых осуществляется взаимодействие узлов кластера. Наиболее распространенным на сегодняшний день стандартом программирования для систем с передачей сообщений является MPI . Конкретная MPI реализация создается производителями параллельных систем и поставляется вместе с оборудованием.

Кластер кафедры ЭВМ , на котором проводились исследования (рис 1.1)

Рис1. Структура кластера

Структура кластера состоит из :

· 1 главный узел ( head node ) ‏

· 11 вычислительных узлов ( compute nodes ) ‏

· c етевой интерфейс Gigabit Ethernet , 1 Гбит/ c

· кластерное ПО – Microsot Windows Compute Cluster Server 2003

· Языки программирования – С, С++, Fortran

· Параллельное программирование – MPI

Технические характеристики кластера

Характеристики главного и вычислительных узлов

1. Процессор: Intel Pentium Core2 64bit, 1.86 ГГц

2. Оперативная память: 1 Гб

3. Жесткий диск: 80 Гб

4. Сетевой интерфейс: Gigabit Ethernet , 1 Гбит/с

5. Операционная система : Microsoft Windows Server 2003 Enterprise x64 Edition SP2

2.Интерфейс передачи данных (message passing interface – MPI)

Для организации информационного взаимодействия между процессорами в самом минимальном варианте достаточно операций приема и передачи данных (при этом, конечно, должна существовать техническая возможность коммуникации между процессорами – каналы или линии связи). В MPI существует целое множество операций передачи данных. Они обеспечивают разные способы пересылки данных. Именно данные возможности являются наиболее сильной стороной MPI (об этом, в частности, свидетельствует и само название MPI).

Подобный способ организации параллельных вычислений получил наименование модели «одна программа множество процессов» (single program multiple processes or SPMP1)).

разработкой параллельных программ с применением MPI 4.

· MPI позволяет в значительной степени снизить остроту проблемы переносимости параллельных программ между разными компьютерными системами – параллельная программа, разработанная на алгоритмическом языке C или FORTRAN с использованием библиотеки MPI, как правило, будет работать на разных вычислительных платформах;

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

· MPI уменьшает, в определенном плане, сложность разработки параллельных программ, т. к., с одной стороны, а с другой стороны, уже имеется большое количество библиотек параллельных методов, созданных с использованием MPI.

3.Классификация параллельных методов решения СЛАУ

Метод Гаусса–Зейделя . Пусть решаемая система представлена в виде 1

Итерационная схема Гаусса–Зейделя следует из этого представления системы:

Приведем метод Гаусса–Зейделя к стандартному виду:

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

Представим метод Гаусса–Зейделя в координатной форме для системы общего вида:

Координатная форма метода Гаусса–Зейделя отличается от координатной формы метода Якоби лишь тем, что первая сумма в правой части итерационной формулы содержит компоненты вектора решения не на k-й, а на (k+1)-й итерации.

Параллельный алгоритм метода Гаусса–Зейделя

Отличие метода Гаусса–Зейделя от метода простой итерации заключается в том, что новые значения вектора вычисляются не только на основании значений предыдущей итерации, но и с использованием значений уже вычисленных на данной итерации .

Текст последовательной программы для вычисления новых значений компонент вектора представлен ниже.

void GaussZeidel (double *A, double *X, int size)

/* задана матрица А, начальное приближение вектора Х,

размерность матрицы size, вычисляем новое значение вектора Х */

Sum += A[ind(i,j,size)] * X[j];

Sum += A[ind(i,j,size)] * X[j];

X[i]=(A[ind(i,size,size)] – Sum) / A[ind(i,i,size)];

Рис. 2. Процедура вычисления значений вектора по методу Гаусса-Зейделя

Следующая система уравнений описывает метод Гаусса-Зейделя .

Вычисления каждой координаты вектора зависят от значений, вычисленных на предыдущей итерации, и значений координат вектора вычисленных на данной итерации. Поэтому нельзя реализовывать параллельный алгоритм, аналогичный методу простой итерации: каждый процесс не может начинать вычисления пока, не закончит вычисления предыдущий процесс.

Можно предложить следующий модифицированный метод Гаусса–Зейделя для параллельной реализации. Разделим вычисления координат вектора по процессам аналогично методу простой итерации. Будем в каждом процессе вычислять свое количество координат вектора по методу Гаусса Зейделя, используя только вычисленные значения вектора данного процесса. Различие в параллельной реализации по сравнению с методом простой итерации заключается только в процедуре вычисления значений вектора (вместо процедуры Iter_Jacoby используем процедуру Gauss-Seidel ).

void GaussZeidel(int size, int MATR_SIZE, int first)

/* задана матрица А, размерность матрицы MATR_SIZE, количество

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

значения вектора Х с номера first, используя значения вектора Х */

Sum += A[ind(i,j,MATR_SIZE)] * X[j];

for (j = i+1+first; j

Sum += A[ind(i,j,MATR_SIZE)] * X[j];

Рис. 1. Процедура вычисления значений вектора по методу Гаусса–Зейделя(параллельная версия)

• Разработка программной системы для параллельного решения СЛАУ на кластере

• Сравнение эффективности различных параллельных методов решения СЛАУ на кластере

1. Программирование для многопроцессорных систем в стандарте MPI: Пособие / Г. И. Ш паковский, Н. В. Серикова. – Мн.: БГУ, 2002. – 323с.

2. Теория и практика параллельных вычислений: учебное пособие/ В.П.Гергель.- М.: Интернет- Университет Информационных технологий; Бином. Лаборатория знаний, 2007.-423с.

3. Компьютерные сети. Принципы, технологии, протоколы / В. Г. Олифер, Н. А. Олифер. – СПб: Питер, 2001. – 672с.

4. Параллельное программирование с использованием Open MP.-М.: Бином. Лаборатория знаний Интуит., 2008.- 118с.

5. Group W, Lusk E, Skjellum A. Using MPI. Portable Parallel Programming with the Message-Passing Interface. — MIT Press, 1994. (http://www.mcs.anl.gov/mpi/index.html)

6. Параллельные информационные технологии: учебное пособие/ А.Б. Барский- M .: Интернет- Университет Информационных технологий; Бином. Лаборатория знаний, 2007.-504с.

7. Корнеев В.Д. Параллельное программирование в MPI. — Москва-Ижевск: Институт компьютерных исследований, 2003. — 304 с.

8 . Миллер Р., Боксер Л. Последовательные и параллельные алгоритмы: Общий подход. — М.: БИНОМ. Лаборатория знаний, 2006. — 406 с.

Как решать систему уравнений

О чем эта статья:

8 класс, 9 класс, ЕГЭ/ОГЭ

Основные понятия

Алгебра в 8 и 9 классе становится сложнее. Но если изучать темы последовательно и регулярно практиковаться в тетрадке и онлайн — ходить на уроки математики будет не так страшно.

Уравнение — это математическое равенство, в котором неизвестна одна или несколько величин. Значение неизвестных нужно найти так, чтобы при их подстановке в исходное уравнение получилось верное числовое равенство.

Например, возьмем 3 + 4 = 7. При вычислении левой части получается верное числовое равенство, то есть 7 = 7.

Уравнением можно назвать, например, равенство 3 + x = 7 с неизвестной переменной x, значение которой нужно найти. Результат должен быть таким, чтобы знак равенства был оправдан, и левая часть равнялась правой.

Система уравнений — это несколько уравнений, для которых надо найти значения неизвестных, каждое из которых соответствует данным уравнениям.

Так как существует множество уравнений, составленных с их использованием систем уравнений также много. Поэтому для удобства изучения существуют отдельные группы по схожим характеристикам. Рассмотрим способы решения систем уравнений.

Линейное уравнение с двумя переменными

Уравнение вида ax + by + c = 0 называется линейным уравнением с двумя переменными x и y, где a, b, c — числа.

Решением этого уравнения называют любую пару чисел (x; y), которая соответствует этому уравнению и обращает его в верное числовое равенство.

Теорема, которую нужно запомнить: если в линейном уравнение есть хотя бы один не нулевой коэффициент при переменной — его графиком будет прямая линия.

Вот алгоритм построения графика ax + by + c = 0, где a ≠ 0, b ≠ 0:

Дать переменной 𝑥 конкретное значение x = x₁, и найти значение y = y₁ при ax₁ + by + c = 0.

Дать x другое значение x = x₂, и найти соответствующее значение y = y₂ при ax₂ + by + c = 0.

Построить на координатной плоскости xy точки: (x₁; y₁); (x₂; y₂).

Провести прямую через эти две точки и вуаля — график готов.

Нужно быстро привести знания в порядок перед экзаменом? Записывайтесь на курсы ЕГЭ по математике в Skysmart!

Система двух линейных уравнений с двумя переменными

Для ax + by + c = 0 можно сколько угодно раз брать произвольные значение для x и находить значения для y. Решений в таком случае может быть бесчисленное множество.

Система линейных уравнений (ЛУ) с двумя переменными образуется в случае, когда x и y связаны не одним, а двумя уравнениями. Такая система может иметь одно решение или не иметь решений совсем. Выглядит это вот так:

Из первого линейного уравнения a₁x + b₁y + c₁ = 0 можно получить линейную функцию, при условии если b₁ ≠ 0: y = k₁x + m₁. График — прямая линия.

Из второго ЛУ a₂x + b₂y + c₂ = 0 можно получить линейную функцию, если b₂ ≠ 0: y = k₂x + m₂. Графиком снова будет прямая линия.

Можно записать систему иначе:

Множеством решений первого ЛУ является множество точек, лежащих на определенной прямой, аналогично и для второго ЛУ. Если эти прямые пересекаются — у системы есть единственное решение. Это возможно при условии, если k₁ ≠ k₂.

Две прямые могут быть параллельны, а значит, они никогда не пересекутся и система не будет иметь решений. Это возможно при следующих условиях: k₁ = k₂ и m₁ ≠ m₂.

Две прямые могут совпасть, и тогда каждая точка будет решением, а у системы будет бесчисленное множество решений. Это возможно при следующих условиях: k₁ = k₂ и m₁ = m₂.

Метод подстановки

Разберем решение систем уравнений методом подстановки. Вот алгоритм при переменных x и y:

Выразить одну переменную через другую из более простого уравнения системы.

Подставить то, что получилось на место этой переменной в другое уравнение системы.

Решить полученное уравнение, найти одну из переменных.

Подставить поочередно каждый из найденных корней в уравнение, которое получили на первом шаге, и найти второе неизвестное значение.

Записать ответ. Ответ принято записывать в виде пар значений (x; y).

Потренируемся решать системы линейных уравнений методом подстановки.

Пример 1

Решите систему уравнений:

x − y = 4
x + 2y = 10

Выразим x из первого уравнения:

x − y = 4
x = 4 + y

Подставим получившееся выражение во второе уравнение вместо x:

x + 2y = 10
4 + y + 2y = 10

Решим второе уравнение относительно переменной y:

4 + y + 2y = 10
4 + 3y = 10
3y = 10 − 4
3y = 6
y = 6 : 3
y = 2

Полученное значение подставим в первое уравнение вместо y и решим уравнение:

x − y = 4
x − 2 = 4
x = 4 + 2
x = 6

Ответ: (6; 2).

Пример 2

Решите систему линейных уравнений:

x + 5y = 7
3x = 4 + 2y

Сначала выразим переменную x из первого уравнения:

x + 5y = 7
x = 7 − 5y

Выражение 7 − 5y подставим вместо переменной x во второе уравнение:

3x = 4 + 2y
3 (7 − 5y) = 4 + 2y

Решим второе линейное уравнение в системе:

3 (7 − 5y) = 4 + 2y
21 − 15y = 4 + 2y
21 − 15y − 2y = 4
21 − 17y = 4
17y = 21 − 4
17y = 17
y = 17 : 17
y = 1

Подставим значение y в первое уравнение и найдем значение x:

x + 5y = 7
x + 5 = 7
x = 7 − 5
x = 2

Ответ: (2; 1).

Пример 3

Решите систему линейных уравнений:

x − 2y = 3
5x + y = 4

Из первого уравнения выразим x:

x − 2y = 3
x = 3 + 2y

Подставим 3 + 2y во второе уравнение системы и решим его:

5x + y = 4
5 (3 + 2y) + y = 4
15 + 10y + y = 4
15 + 11y = 4
11y = 4 − 15
11y = −11
y = −11 : 11
y = −1

Подставим получившееся значение в первое уравнение и решим его:

x − 2y = 3
x − 2 (−1) = 3
x + 2 = 3
x = 3 − 2
x = 1

Ответ: (1; −1).

Метод сложения

Теперь решим систему уравнений способом сложения. Алгоритм с переменными x и y:

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

Складываем почленно левые и правые части уравнений системы.

Решаем получившееся уравнение с одной переменной.

Находим соответствующие значения второй переменной.

Запишем ответ в в виде пар значений (x; y).

Система линейных уравнений с тремя переменными

Системы ЛУ с тремя переменными решают так же, как и с двумя. В них присутствуют три неизвестных с коэффициентами и свободный член. Выглядит так:

Решений в таком случае может быть бесчисленное множество. Придавая двум переменным различные значения, можно найти третье значение. Ответ принято записывать в виде тройки значений (x; y; z).

Если x, y, z связаны между собой тремя уравнениями, то образуется система трех ЛУ с тремя переменными. Для решения такой системы можно применять метод подстановки и метод сложения.

Решение задач

Разберем примеры решения систем уравнений.

Задание 1. Как привести уравнение к к стандартному виду ах + by + c = 0?

5x − 8y = 4x − 9y + 3

5x − 8y = 4x − 9y + 3

5x − 8y − 4x + 9y = 3

Задание 2. Как решать систему уравнений способом подстановки

Выразить у из первого уравнения:

Подставить полученное выражение во второе уравнение:

Найти соответствующие значения у:

Задание 3. Как решать систему уравнений методом сложения

  1. Решение систем линейных уравнений начинается с внимательного просмотра задачи. Заметим, что можно исключить у. Для этого умножим первое уравнение на минус два и сложим со вторым:
  1. Решаем полученное квадратное уравнение любым способом. Находим его корни:
  1. Найти у, подставив найденное значение в любое уравнение:
  1. Ответ: (1; 1), (1; -1).

Задание 4. Решить систему уравнений

Решим второе уравнение и найдем х = 2, х = 5. Подставим значение переменной х в первое уравнение и найдем соответствующее значение у.

Задание 5. Как решить систему уравнений с двумя неизвестными

При у = -2 первое уравнение не имеет решений, при у = 2 получается:


источники:

http://masters.donntu.org/2009/fvti/al-masri/diss/index.htm

http://skysmart.ru/articles/mathematic/reshenie-sistem-uravnenij