Skip to content

Савва Дария. Технология MPI. Решение систем линейных уравнений методом сопряженных градиентов. Вариант 6#327

Open
DariyaSavva wants to merge 40 commits intolearning-process:masterfrom
DariyaSavva:savva_d_conjugate_gradients
Open

Савва Дария. Технология MPI. Решение систем линейных уравнений методом сопряженных градиентов. Вариант 6#327
DariyaSavva wants to merge 40 commits intolearning-process:masterfrom
DariyaSavva:savva_d_conjugate_gradients

Conversation

@DariyaSavva
Copy link
Contributor

Описание

  • Задача: Решение систем линейных уравнений методом сопряженных градиентов.
  • Вариант: 6
  • Технология: MPI
  • Описание вашей реализации и отчёта.
    В работе реализовано решение системы линейных алгебраических уравнений с использованием метода сопряжённых градиентов (Conjugate Gradient) в двух вариантах: последовательном (SEQ) и параллельном (MPI).

Последовательная версия основана на классическом алгоритме CG и включает стандартные этапы: инициализацию начального приближения, вычисление невязки, направлений поиска, коэффициентов α и β, а также итерационное уточнение решения до достижения заданной точности или максимального числа итераций.

Параллельная реализация выполнена с использованием технологии MPI и основана на декомпозиции матрицы по строкам. Матрица системы распределяется между процессами, каждый из которых вычисляет свою часть произведения A⋅p. Результаты локальных вычислений объединяются на каждом процессе с помощью коллективной операции MPI_Allgatherv, после чего все процессы синхронно выполняют обновление векторов и скалярных коэффициентов алгоритма.

Основной выигрыш в производительности достигается за счёт параллелизации наиболее трудоёмкой операции — умножения матрицы на вектор. Векторные операции и скалярные вычисления выполняются локально на каждом процессе, что снижает коммуникационные издержки.

Чек-лист

  • Статус CI: Все CI-задачи (сборка, тесты, генерация отчёта) успешно проходят на моей ветке в моем форке
  • Директория и именование задачи: Я создал директорию с именем <фамилия>_<первая_буква_имени>_<короткое_название_задачи>
  • Полное описание задачи: Я предоставил полное описание задачи в теле pull request
  • clang-format: Мои изменения успешно проходят clang-format локально в моем форке (нет ошибок форматирования)
  • clang-tidy: Мои изменения успешно проходят clang-tidy локально в моем форке (нет предупреждений/ошибок)
  • Функциональные тесты: Все функциональные тесты успешно проходят локально на моей машине
  • [] Тесты производительности: Все тесты производительности успешно проходят локально на моей машине
  • Ветка: Я работаю в ветке, названной точно так же, как директория моей задачи (например, nesterov_a_vector_sum), а не в master
  • Правдивое содержание: Я подтверждаю, что все сведения, указанные в этом pull request, являются точными и достоверными

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant