Skip to content

Денисов Артём. Технология SEQ|MPI. Кольцо. Вариант 7.#125

Open
TemikGOD wants to merge 1 commit intolearning-process:masterfrom
TemikGOD:denisov_a_ring
Open

Денисов Артём. Технология SEQ|MPI. Кольцо. Вариант 7.#125
TemikGOD wants to merge 1 commit intolearning-process:masterfrom
TemikGOD:denisov_a_ring

Conversation

@TemikGOD
Copy link

@TemikGOD TemikGOD commented Mar 1, 2026

Описание

  • Задача: Кольцо
  • Вариант: 7
  • Технология: SEQ|MPI

Краткое описание работы

В проекте реализован алгоритм передачи данных по виртуальной кольцевой топологии в двух вариантах: последовательном (SEQ) и параллельном на основе MPI. Последовательная версия выполняет простое копирование входного вектора, так как маршрутизация не требуется. Параллельная реализация моделирует кольцевую структуру процессов и передаёт данные от источника к получателю через цепочку соседних узлов, используя базовые операции MPI (MPI_Send, MPI_Recv, MPI_Bcast), без применения встроенных топологий (MPI_Cart_Create, MPI_Graph_Create).

Архитектура решения

  • Общий слой (common): определяет структуру RingMessage, содержащую поля source, destination и вектор данных, а также типы InType и OutType.
  • SEQ‑реализация: класс RingTopologySEQ, выполняющий валидацию входа и прямое копирование данных в выходной буфер.
  • MPI‑реализация: класс RingTopologyMPI, который вычисляет соседей в кольце, определяет роль процесса (отправитель, промежуточный узел, получатель), передаёт данные по кольцу и затем рассылает результат всем процессам.
  • Тесты: включают функциональные проверки корректности и производительные тесты с различным числом процессов и размерами входных данных.

Основные результаты

  • Функциональные тесты успешно подтверждают корректность передачи данных для разных размеров входного вектора.
  • Производительные эксперименты показывают, что время выполнения MPI‑версии растёт с увеличением числа процессов, поскольку количество переходов по кольцу увеличивается, а сама задача является коммуникационной, а не вычислительной.
  • Ускорения от распараллеливания не наблюдается: эффективность падает до 1–9% при 2–8 процессах, что соответствует характеру задачи и выбранной топологии.

Выводы

Реализованные SEQ и MPI‑версии корректно моделируют передачу данных по кольцу и проходят все тесты. Параллельная реализация вручную организует маршрутизацию без использования встроенных топологий MPI и обеспечивает доставку данных от любого процесса‑источника к любому процессу‑получателю. Из‑за высокой доли коммуникаций и линейного числа переходов по кольцу ускорение не достигается, что соответствует теоретическим ожиданиям для подобных задач.


Чек-лист

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

@TemikGOD TemikGOD requested a review from allnes as a code owner March 1, 2026 17:26
@TemikGOD TemikGOD changed the title Денисов Артём. Технология SEQ|MPI. Быстрая сортировка с простым слиянием. Вариант 14. Денисов Артём. Технология SEQ|MPI. Кольцо. Вариант 7. Mar 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants