Пылаева Светлана. Технология SEQ-MPI. Максимальное значение элементов матрицы. Вариант 13.#62
Conversation
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 8.1.3 to 8.2.3. - [Release notes](https://github.com/sphinx-doc/sphinx/releases) - [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst) - [Commits](sphinx-doc/sphinx@v8.1.3...v8.2.3) --- updated-dependencies: - dependency-name: sphinx dependency-version: 8.2.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Updated project links and badges in README.md to reflect the new repository name.
Bump sphinx from 8.1.3 to 8.2.3
cherry picked from commit 1680569ece6ce393f62851066a2d9b20580183f4 <!-- Solution for PR template choice: https://stackoverflow.com/a/75030350/24543008 --> Please go to the `Preview` tab and select the appropriate template: * [Submit Student task (English)](?expand=1&template=task_submission_en.md) * [Submit Student task (Russian)](?expand=1&template=task_submission_ru.md)
…ess#19) Ported from upstream commit c83f0efd0e219c76ac4e8b94ec8c8284531df959. - Force STBI to load RGB (3 channels) - Update sample pic.jpg files - Re-enable previously disabled threads test
… isolation (#669) (learning-process#20) - MPI runs: propagate PPC_NUM_THREADS and OMP_NUM_THREADS via mpirun -x …; fix gtest filters for _all_/_mpi_ across functional/perf runs. - Per-test isolation: add ScopedPerTestEnv that sets PPC_TEST_UID and PPC_TEST_TMPDIR; integrated into functional and performance test runners. Co-authored-by: Arseniy Obolenskiy <gooddoog@student.su>
- Sync gtest random_seed + filter across ranks - Abort on worker failure; wrap RunAllTests with MPI_Abort on exceptions - Make PPC_TEST_TMPDIR per MPI rank - Pass env to mpiexec on Windows (-env), keep -x on *nix
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #62 +/- ##
==========================================
+ Coverage 94.03% 94.53% +0.50%
==========================================
Files 15 17 +2
Lines 486 549 +63
Branches 181 205 +24
==========================================
+ Hits 457 519 +62
- Partials 29 30 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
Данное описание проблемы относится к промежуточной версии кода, в финальной реализации все переменные для хранения максимумов инициализировались с помощью std::numeric_limits::min(). |
|
Я внесла изменения с учетом правок, которые можно отнести к актуальной версии кода, и добавила тесты на прямоугольные и полностью отрицательные матрицы. Проверьте, пожалуйста. |
… матрицы. Вариант 13. (learning-process#62) ## Описание <!-- Пожалуйста, предоставьте подробное описание вашей реализации, включая: - основные детали решения (описание выбранного алгоритма) - применение технологии параллелизма (если применимо) --> - **Задача**: Максимальное значение элементов матрицы - **Вариант**: 13 - **Технология**: SEQ, MPI - **Описание** - **SEQ,:** Алгоритм поиска максимального значения в матрице основан на последовательном просмотре всех элементов с сохранением текущего максимального значения. - **MPI:** Параллельная версия использует блочное распределение элементов матрицы между MPI-процессами с помощью функции `MPI_Scatterv`. - Корневой процесс (ранг 0) передает общий размер матрицы `matrix_size` всем процессам через `MPI_Bcast` - Для каждого MPI-процесса рассчитывается количество элементов `sendcounts[i]` и смещение `displs[i]` в исходном массиве - Распределение учитывает возможный остаток при неравномерном делении: первые `remainder` процессов получают на один элемент больше - Используется `MPI_Scatterv` для распределения блоков матрицы по процессам - Каждый процесс получает свой блок данных `local_data` размером `local_elements` - Нулевой процесс передает данные, остальные процессы получают свои блоки - Каждый процесс независимо находит максимальный элемент в своем блоке. В результате каждый процесс формирует локальное значение максимума `local_max`. - Все процессы участвуют в операции `MPI_Allreduce`, которая одновременно выполняет редукцию по всем процессам с использованием операции `MPI_MAX` и распространяет результат глобального максимума на все процессы. --- ## Чек-лист - [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, являются точными и достоверными --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Nesterov Alexander <nesterov.alexander@outlook.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Arseniy Obolenskiy <gooddoog@student.su>
… матрицы. Вариант 13. (learning-process#62) ## Описание <!-- Пожалуйста, предоставьте подробное описание вашей реализации, включая: - основные детали решения (описание выбранного алгоритма) - применение технологии параллелизма (если применимо) --> - **Задача**: Максимальное значение элементов матрицы - **Вариант**: 13 - **Технология**: SEQ, MPI - **Описание** - **SEQ,:** Алгоритм поиска максимального значения в матрице основан на последовательном просмотре всех элементов с сохранением текущего максимального значения. - **MPI:** Параллельная версия использует блочное распределение элементов матрицы между MPI-процессами с помощью функции `MPI_Scatterv`. - Корневой процесс (ранг 0) передает общий размер матрицы `matrix_size` всем процессам через `MPI_Bcast` - Для каждого MPI-процесса рассчитывается количество элементов `sendcounts[i]` и смещение `displs[i]` в исходном массиве - Распределение учитывает возможный остаток при неравномерном делении: первые `remainder` процессов получают на один элемент больше - Используется `MPI_Scatterv` для распределения блоков матрицы по процессам - Каждый процесс получает свой блок данных `local_data` размером `local_elements` - Нулевой процесс передает данные, остальные процессы получают свои блоки - Каждый процесс независимо находит максимальный элемент в своем блоке. В результате каждый процесс формирует локальное значение максимума `local_max`. - Все процессы участвуют в операции `MPI_Allreduce`, которая одновременно выполняет редукцию по всем процессам с использованием операции `MPI_MAX` и распространяет результат глобального максимума на все процессы. --- ## Чек-лист - [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, являются точными и достоверными --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Nesterov Alexander <nesterov.alexander@outlook.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Arseniy Obolenskiy <gooddoog@student.su>
Описание
MPI_Scatterv.matrix_sizeвсем процессам черезMPI_Bcastsendcounts[i]и смещениеdispls[i]в исходном массивеremainderпроцессов получают на один элемент большеMPI_Scattervдля распределения блоков матрицы по процессамlocal_dataразмеромlocal_elementslocal_max.MPI_Allreduce, которая одновременно выполняет редукцию по всем процессам с использованием операцииMPI_MAXи распространяет результат глобального максимума на все процессы.Чек-лист
<фамилия>_<первая_буква_имени>_<короткое_название_задачи>clang-formatлокально в моем форке (нет ошибок форматирования)clang-tidyлокально в моем форке (нет предупреждений/ошибок)nesterov_a_vector_sum), а не вmaster