Skip to content

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

Merged
allnes merged 54 commits intolearning-process:masterfrom
fartekool:levonychev_i_min_val_rows_matrix
Dec 10, 2025
Merged

Левонычев Иван. Технология SEQ-MPI. Нахождение минимальных значений по строкам матрицы. Вариант 17.#36
allnes merged 54 commits intolearning-process:masterfrom
fartekool:levonychev_i_min_val_rows_matrix

Conversation

@fartekool
Copy link
Copy Markdown
Contributor

@fartekool fartekool commented Nov 16, 2025

Описание

Решена задача параллелизма на примере нахождения минимальных значений по строкам матрицы.

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

Чек-лист

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

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Nov 16, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.87%. Comparing base (6f2df5f) to head (237114d).
⚠️ Report is 2 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master      #36      +/-   ##
==========================================
+ Coverage   94.03%   94.87%   +0.84%     
==========================================
  Files          15       17       +2     
  Lines         486      566      +80     
  Branches      181      212      +31     
==========================================
+ Hits          457      537      +80     
  Partials       29       29              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please, remove unused files

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's done.

return true;
}

bool LevonychevIMinValRowsMatrixMPI::RunImpl() {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The data is not being scattered from rank 0 to other ranks

Copy link
Copy Markdown
Contributor Author

@fartekool fartekool Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Что Вы имеете в виду? Я в конце делаю broadcast с нулевого процесса

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's done.

Comment thread tasks/levonychev_i_min_val_rows_matrix/common/include/common.hpp
Comment thread tasks/levonychev_i_min_val_rows_matrix/mpi/src/ops_mpi.cpp
Comment thread tasks/levonychev_i_min_val_rows_matrix/seq/src/ops_seq.cpp
@fartekool fartekool requested a review from allnes November 24, 2025 17:42
@fartekool fartekool closed this Nov 29, 2025
@fartekool fartekool reopened this Nov 30, 2025
@fartekool fartekool requested a review from aobolensk November 30, 2025 22:49
@allnes allnes merged commit a9cf785 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#36)

## Описание
Решена задача параллелизма на примере нахождения минимальных значений по
строкам матрицы.

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

---

## Чек-лист
- [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, являются точными и достоверными
AleksndrSakharov pushed a commit to AleksndrSakharov/ppc-2025-processes-informatics that referenced this pull request Dec 16, 2025
…о строкам матрицы. Вариант 17. (learning-process#36)

## Описание
Решена задача параллелизма на примере нахождения минимальных значений по
строкам матрицы.

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

---

## Чек-лист
- [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, являются точными и достоверными
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