Skip to content

Ремизов Кирилл. Технология ALL. Умножение плотных матриц алгоритмом Кэннона. Вариант 1#934

Merged
allnes merged 11 commits into
learning-process:masterfrom
BlackCorbeau:remizov_k_dense_matrix_multiplication_cannon_algorithm_all
May 12, 2026
Merged

Ремизов Кирилл. Технология ALL. Умножение плотных матриц алгоритмом Кэннона. Вариант 1#934
allnes merged 11 commits into
learning-process:masterfrom
BlackCorbeau:remizov_k_dense_matrix_multiplication_cannon_algorithm_all

Conversation

@BlackCorbeau
Copy link
Copy Markdown
Contributor

Описание

  • Задача: Умножение плотных матриц. Элементы типа double. Блочная схема, алгоритм Кэннона
  • Вариант: 1
  • Технология: ALL (комбинированная реализация: TBB + OpenMP + STL)

Реализация

В рамках данной работы разработана комбинированная (all) версия алгоритма Кэннона для умножения квадратных плотных матриц. Реализация объединяет три технологии параллелизма:

  • TBB – для внешних циклов: инициализация блоков, основной цикл умножения, сборка результата.
    Используется tbb::parallel_for с tbb::blocked_range2d<int>.
  • OpenMP – для внутреннего умножения каждого блока размера block_dim × block_dim.
    Директива #pragma omp parallel for collapse(2) распараллеливает тройной цикл внутри блока.
  • STL (std::thread) – для циклических сдвигов блоков влево (строки A) и вверх (столбцы B).
    Реализован ручной пул потоков с разбиением работы между ними.

Все этапы алгоритма (начальный сдвиг, основной цикл из blocks = N / block_dim итераций, сборка результата) выполнены корректно. Четырёхмерная структура блоков (vector<vector<vector<vector<double>>>>) сохранена для единообразия с другими версиями.

Отчёты

К данному pull request прилагаются отчёты по ALL и общий отчет по проделанной работе на протяжении семестра, оформленные в соответствии с требованиями:

  • Каждый отчёт содержит введение, постановку задачи, описание последовательного/параллельного алгоритма, детали реализации, результаты функционального и нагрузочного тестирования, анализ производительности и заключение.

В отчёте для ALL подробно разобраны причины низкой эффективности (вложенный параллелизм, избыточные накладные расходы), что подтверждается экспериментальными данными на процессоре Intel Core i5-1155G7.


Чек-лист

  • Статус CI: Все CI-задачи (сборка, тесты, генерация отчёта) успешно проходят на моей ветке в моем форке
  • Директория и именование задачи: Создана директория remizov_k_dense_matrix_multiplication_cannon_algorithm/all
  • Полное описание задачи: Предоставлено в теле pull request
  • clang-format: Мои изменения успешно проходят clang-format локально (нет ошибок форматирования)
  • clang-tidy: Мои изменения успешно проходят clang-tidy локально (нет предупреждений/ошибок)
  • Функциональные тесты: Все функциональные тесты (включая CannonTestsAll) проходят при запуске под mpirun -np 1
  • Тесты производительности: Тесты производительности для ALL версии успешно проходят, результаты соответствуют приведённым в отчёте
  • Ветка: Работаю в ветке remizov_k_dense_matrix_multiplication_cannon_algorithm_all
  • Правдивое содержание: Подтверждаю, что все сведения, указанные в этом pull request, являются точными и достоверными

Это новый пул реквест сделанный для получения правильных тегов, старый пул реквест #850

markdownlint-cli2 --fix "**/*.md"
sed -i 's/\[i\]\[j\]/`[i][j]`/g' tasks/remizov_k_dense_matrix_multiplication_cannon_algorithm/seq/report.md
sed -i 's/^```$/```cpp/' tasks/remizov_k_dense_matrix_multiplication_cannon_algorithm/**/*.md
@BlackCorbeau BlackCorbeau force-pushed the remizov_k_dense_matrix_multiplication_cannon_algorithm_all branch from 5e43663 to b8b999a Compare May 11, 2026 15:30
@codecov-commenter
Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 90.72165% with 9 lines in your changes missing coverage. Please review.
✅ Project coverage is 83.71%. Comparing base (e665015) to head (97fcf18).
⚠️ Report is 1016 commits behind head on master.

Files with missing lines Patch % Lines
...ultiplication_cannon_algorithm/all/src/ops_all.cpp 90.72% 1 Missing and 8 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #934      +/-   ##
==========================================
+ Coverage   82.44%   83.71%   +1.27%     
==========================================
  Files         545      670     +125     
  Lines       24415    34348    +9933     
  Branches     9976    14346    +4370     
==========================================
+ Hits        20128    28755    +8627     
- Misses       3006     3807     +801     
- Partials     1281     1786     +505     

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

@allnes allnes merged commit 78513ad into learning-process:master May 12, 2026
34 checks passed
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.

3 participants