Skip to content

Conversation

@GoriachevaKsenia
Copy link
Contributor

@GoriachevaKsenia GoriachevaKsenia commented Jan 3, 2026

Описание

  • Задача: Умножение плотных матриц. Элементы типа double. Алгоритм Штрассена.
  • Вариант: 3
  • Технология: SEQ, MPI
  • Описание

Разработаны последовательная и параллельная (MPI) реализации алгоритма Штрассена для умножения плотных квадратных матриц с элементами типа double.

Последовательная версия основана на рекурсивной реализации алгоритма Штрассена. Для матриц большого размера выполняется разбиение на подматрицы и вычисление семи вспомогательных произведений вместо восьми, что позволяет снизить асимптотическую вычислительную сложность по сравнению с классическим алгоритмом. При достижении порогового размера используется наивное умножение, так как оно имеет меньшие накладные расходы. Для обработки матриц произвольного размера применяется дополнение до ближайшей степени двойки с последующим обрезанием результата.

Параллельная реализация выполнена с использованием технологии MPI и использует параллелизм верхнего уровня алгоритма Штрассена. Семь независимых вспомогательных произведений распределяются между MPI-процессами, при этом каждый процесс вычисляет одну подзадачу локально. Сбор частичных результатов осуществляется на процессе с рангом 0 с использованием операций MPI_Send и MPI_Recv, после чего итоговая матрица рассылается всем процессам с помощью 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

codecov-commenter commented Jan 3, 2026

Codecov Report

❌ Patch coverage is 72.27273% with 61 lines in your changes missing coverage. Please review.
✅ Project coverage is 35.93%. Comparing base (87e82c8) to head (ef81a6c).
⚠️ Report is 112 commits behind head on master.

Files with missing lines Patch % Lines
...eva_k_strassen_algorithm/common/include/common.hpp 56.62% 33 Missing and 3 partials ⚠️
...oriacheva_k_strassen_algorithm/mpi/src/ops_mpi.cpp 79.33% 21 Missing and 4 partials ⚠️

❌ Your patch status has failed because the patch coverage (72.27%) is below the target coverage (95.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@             Coverage Diff             @@
##           master     #299       +/-   ##
===========================================
+ Coverage   15.18%   35.93%   +20.74%     
===========================================
  Files         187      261       +74     
  Lines        7196    10104     +2908     
  Branches     2784     3906     +1122     
===========================================
+ Hits         1093     3631     +2538     
- Misses       6028     6230      +202     
- Partials       75      243      +168     

☔ 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants