Skip to content

Денисов Артём. Технология SEQ|MPI. Нахождение минимальных значений по строкам матрицы. Вариант 17.#123

Open
TemikGOD wants to merge 5 commits intolearning-process:masterfrom
TemikGOD:denisov_a_min_val_row_matrix
Open

Денисов Артём. Технология SEQ|MPI. Нахождение минимальных значений по строкам матрицы. Вариант 17.#123
TemikGOD wants to merge 5 commits intolearning-process:masterfrom
TemikGOD:denisov_a_min_val_row_matrix

Conversation

@TemikGOD
Copy link

@TemikGOD TemikGOD commented Mar 1, 2026

Описание

  • Задача: Нахождение минимальных значений по строкам матрицы
  • Вариант: 17
  • Технология: SEQ|MPI

Описание реализации

В проекте реализован алгоритм поиска минимального элемента в каждой строке матрицы в двух вариантах: последовательном (SEQ) и параллельном на основе MPI. Последовательная версия выполняет прямой проход по строкам и использует стандартные средства STL для вычисления минимума. Параллельная реализация распределяет строки между MPI‑процессами, передаёт данные через базовые операции MPI (MPI_Bcast, MPI_Isend, MPI_Recv) и собирает результаты на процессе‑координаторе.

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

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

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

  • Последовательная версия демонстрирует стабильное время выполнения, соответствующее линейной сложности.
  • Параллельная версия показывает низкую масштабируемость: накладные расходы MPI превышают стоимость вычислений, что приводит к снижению эффективности при увеличении числа процессов.
  • Speedup остаётся меньше 1 для всех протестированных конфигураций MPI, что указывает на отсутствие выигрыша от распараллеливания для данной задачи.

Выводы

MPI‑подход оказывается неэффективным для задач с низкой вычислительной плотностью, таких как поиск минимума в строках матрицы. Последовательная реализация остаётся предпочтительной для малых и средних размеров данных. Возможные направления улучшения включают использование коллективных операций (MPI_Scatterv, MPI_Gatherv), изменение схемы распределения данных и увеличение размеров матриц в экспериментах.


Чек-лист

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

@TemikGOD
Copy link
Author

TemikGOD commented Mar 1, 2026

Я не понимаю в чем проблема, в моём репозитории эта задача все проверки прошла, в том числе ту, на которой упала здесь.
image

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