Skip to content

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

Merged
allnes merged 57 commits intolearning-process:masterfrom
vassyusha:romanova_v_min_by_matrix_rows_processes
Dec 10, 2025
Merged

Романова Василиса. Технология SEQ-MPI. Нахождение минимальных значений по строкам матрицы. Вариант 17#58
allnes merged 57 commits intolearning-process:masterfrom
vassyusha:romanova_v_min_by_matrix_rows_processes

Conversation

@vassyusha
Copy link
Copy Markdown
Contributor

@vassyusha vassyusha commented Nov 18, 2025

Описание

  • Задача: Нахождение минимальных значений по строкам матрицы
  • Вариант: 17
  • Технология: SEQ, MPI
  • Описание.
    • SEQ:
      Программа последовательно идет по строкам матрицы. В начале каждой итерации временная переменная min_val инициализируется первым значением из строки. Каждый раз, когда в строке встречается элемент со значением, меньшим, чем текущее значение переменной min_val, ей присваивается значение соответствующего элемента.
    • MPI:
      Параллельная реализация алгоритма основана на распределении строк матрицы между несколькими процессами. Распределение строк осуществляется процессом с рангом 0, который вычисляет количество строк для обработки каждым процессом. Если общее количество строк не кратно числу процессов, оставшиеся строки назначаются процессу с наибольшим рангом. Полученные данные рассылаются всем процессам с помощью функции MPI_Bcast.
      На основе этой информации каждый процесс независимо определяет начальный и конечный индексы обрабатываемых строк, после чего приступает к поиску минимумов.
      После завершения вычислений всеми процессами происходит сбор результатов на процессе с рангом 0 с применением функции MPI_Gatherv и синхронизация итоговых данных между всеми потоками при помощи MPI_Bcast.

Чек-лист

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

Comment thread tasks/romanova_v_min_by_matrix_rows_processes/mpi/src/ops_mpi.cpp
Comment thread tasks/romanova_v_min_by_matrix_rows_processes/mpi/src/ops_mpi.cpp
Comment thread tasks/romanova_v_min_by_matrix_rows_processes/mpi/src/ops_mpi.cpp
@vassyusha vassyusha requested a review from allnes December 2, 2025 19:51
@allnes allnes merged commit 211f806 into learning-process:master Dec 10, 2025
41 checks passed
AzotEye pushed a commit to AzotEye/ppc-2025-processes-informatics that referenced this pull request Dec 14, 2025
…й по строкам матрицы. Вариант 17 (learning-process#58)

<!--
Требования к названию pull request:

"<Фамилия> <Имя>. Технология <TECHNOLOGY_NAME:SEQ|OMP|TBB|STL|MPI>.
<Полное название задачи>. Вариант <Номер>"
-->

## Описание
<!--
Пожалуйста, предоставьте подробное описание вашей реализации, включая:
 - основные детали решения (описание выбранного алгоритма)
 - применение технологии параллелизма (если применимо)
-->

- **Задача**: Нахождение минимальных значений по строкам матрицы
- **Вариант**: 17
- **Технология**: SEQ, MPI
- **Описание**.  
  - **SEQ:**
Программа последовательно идет по строкам матрицы. В начале каждой
итерации временная переменная `min_val` инициализируется первым
значением из строки. Каждый раз, когда в строке встречается элемент со
значением, меньшим, чем текущее значение переменной `min_val`, ей
присваивается значение соответствующего элемента.
  - **MPI:**
Параллельная реализация алгоритма основана на распределении строк
матрицы между несколькими процессами. Распределение строк осуществляется
процессом с рангом 0, который вычисляет количество строк для обработки
каждым процессом. Если общее количество строк не кратно числу процессов,
оставшиеся строки назначаются процессу с наибольшим рангом. Полученные
данные рассылаются всем процессам с помощью функции `MPI_Bcast`.
На основе этой информации каждый процесс независимо определяет начальный
и конечный индексы обрабатываемых строк, после чего приступает к поиску
минимумов.
После завершения вычислений всеми процессами происходит сбор результатов
на процессе с рангом 0 с применением функции `MPI_Gatherv` и
синхронизация итоговых данных между всеми потоками при помощи
`MPI_Bcast`.

---

## Чек-лист
<!--
Пожалуйста, убедитесь, что следующие пункты выполнены **до** отправки
pull request'а и запроса его ревью:
-->

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

<!--
ПРИМЕЧАНИЕ: Ложные сведения в этом чек-листе могут привести к отклонению
PR и получению нулевого балла за соответствующую задачу.
-->
AleksndrSakharov pushed a commit to AleksndrSakharov/ppc-2025-processes-informatics that referenced this pull request Dec 16, 2025
…й по строкам матрицы. Вариант 17 (learning-process#58)

<!--
Требования к названию pull request:

"<Фамилия> <Имя>. Технология <TECHNOLOGY_NAME:SEQ|OMP|TBB|STL|MPI>.
<Полное название задачи>. Вариант <Номер>"
-->

## Описание
<!--
Пожалуйста, предоставьте подробное описание вашей реализации, включая:
 - основные детали решения (описание выбранного алгоритма)
 - применение технологии параллелизма (если применимо)
-->

- **Задача**: Нахождение минимальных значений по строкам матрицы
- **Вариант**: 17
- **Технология**: SEQ, MPI
- **Описание**.  
  - **SEQ:**
Программа последовательно идет по строкам матрицы. В начале каждой
итерации временная переменная `min_val` инициализируется первым
значением из строки. Каждый раз, когда в строке встречается элемент со
значением, меньшим, чем текущее значение переменной `min_val`, ей
присваивается значение соответствующего элемента.
  - **MPI:**
Параллельная реализация алгоритма основана на распределении строк
матрицы между несколькими процессами. Распределение строк осуществляется
процессом с рангом 0, который вычисляет количество строк для обработки
каждым процессом. Если общее количество строк не кратно числу процессов,
оставшиеся строки назначаются процессу с наибольшим рангом. Полученные
данные рассылаются всем процессам с помощью функции `MPI_Bcast`.
На основе этой информации каждый процесс независимо определяет начальный
и конечный индексы обрабатываемых строк, после чего приступает к поиску
минимумов.
После завершения вычислений всеми процессами происходит сбор результатов
на процессе с рангом 0 с применением функции `MPI_Gatherv` и
синхронизация итоговых данных между всеми потоками при помощи
`MPI_Bcast`.

---

## Чек-лист
<!--
Пожалуйста, убедитесь, что следующие пункты выполнены **до** отправки
pull request'а и запроса его ревью:
-->

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

<!--
ПРИМЕЧАНИЕ: Ложные сведения в этом чек-листе могут привести к отклонению
PR и получению нулевого балла за соответствующую задачу.
-->
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.

4 participants