Skip to content

Соколов Кирилл. Технология ALL. Умножение плотных матриц. Элементы типа double. Блочная схема, алгоритм Фокса. Вариант 2.#693

Open
Sokolov235 wants to merge 1 commit intolearning-process:masterfrom
Sokolov235:sokolov_k_matrix_double_fox_all

Conversation

@Sokolov235
Copy link
Copy Markdown
Contributor

Описание

  • Задача: Умножение плотных матриц. Элементы типа double. Блочная схема, алгоритм Фокса.
  • Вариант: 2
  • Технология: ALL
  • Описание:
    Реализован алгоритм с использованием гибридной технологии (MPI + OpenMP) умножения двух квадратных матриц размера N×N (элементы типа double) по блочной схеме алгоритма Фокса.
    Вход задается размером матрицы n. Выход - n при корректном результате умножения, -1 при ошибке. Класс SokolovKMatrixDoubleFoxALL выполняет валидацию входа (n > 0). В PreProcessing на главном процессе (ранг 0) матрицы A (заполнена 1.5) и B (заполнена 2.0) переводятся в блочный формат через DecomposeToBlocks, результат C обнуляется. В RunImpl выполняется распараллеленный алгоритм Фокса: работа распределяется между MPI-процессами. Параметры сетки и матрицы A, B рассылаются всем процессам с помощью boost::mpi::broadcast. Для выделенного диапазона блочных строк каждый процесс выполняет q = n/block_size шагов: на шаге step локально перемножаются соответствующие блоки (с помощью MultiplyBlocks), при этом вычисления внутри процесса распараллеливаются с помощью директив OpenMP (#pragma omp parallel for). Результаты работы на каждом шаге накапливаются в локальном массиве C. По завершении всех шагов вычислений процессы отправляют свои готовые блоки на нулевой ранг, где происходит сборка итогового результата, после чего собранная матрица C бродкастится всем узлам. В PostProcessing результат собирается из блоков в плоский вектор через AssembleFromBlocks, проверяется корректность (каждый элемент C должен равняться 3.0 * n), рабочая память освобождается. Сложность вычислений O(N^3). Так же был написан и добавлен отчет с подробным описанием всех технологий, а так же с замерами их производительности.

Чек-лист

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

@codecov-commenter
Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.73913% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.34%. Comparing base (f7f3d46) to head (6a473b5).

Files with missing lines Patch % Lines
...ks/sokolov_k_matrix_double_fox/all/src/ops_all.cpp 96.73% 0 Missing and 3 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #693      +/-   ##
==========================================
+ Coverage   82.27%   82.34%   +0.07%     
==========================================
  Files         497      498       +1     
  Lines       21191    21283      +92     
  Branches     8691     8723      +32     
==========================================
+ Hits        17434    17525      +91     
+ Misses       2614     2612       -2     
- Partials     1143     1146       +3     

☔ 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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants