-
Notifications
You must be signed in to change notification settings - Fork 78
Киселев Игорь. Технология SEQ-MPI. Вычисление максимального значения элемента в каждой строке матрицы. Вариант 15. #124
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
…orobokkk/ppc-2025-processes-informatics into kiselev_i_max_value_in_strings
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #124 +/- ##
==========================================
+ Coverage 94.03% 95.03% +1.00%
==========================================
Files 15 17 +2
Lines 486 584 +98
Branches 181 225 +44
==========================================
+ Hits 457 555 +98
Partials 29 29 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| "seq": "enabled" | ||
| } | ||
| } | ||
| //disabled No newline at end of file |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please, remove this line
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed it
| Использование `Gatherv` оправдано тем, что разные процессы могут обрабатывать разное количество строк. | ||
|
|
||
| **Единообразие буферов** | ||
| Для унификации логики передачи данных длины строк передаются отдельно, что снимает необходимость создавать выровненные массивы и удаляет потенциальную проблему с PAD-значениями. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What are PAD values?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PAD-(padding values)-то есть дополнительные заполняющие элементы.
При передаче через Gather, если длина передаваемой строки меньше указанной в методе Gather, PAD значения передаются в индексы вектора, которые не затрагиваются передаваемой строкой( условно Gather ожидает строки длинной 3 элемента, но получает строку с 1 элементом, значит оставшиеся 2 элемента будут заполняющими). PAD values подаются вынужденно и могут привести к неожиданным результатам, т.к. могут быть мусором, nullptr, 0, \n и вообще чем угодно. Как раз поэтому я ранее упоминаю использование метода Gatherv, корректно обрабатывающего случаи с передачей векторов разной длины.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed it
| 4. https://habr.com/ru/articles/121235/ | ||
| 5. https://disk.yandex.ru/d/NvHFyhOJCQU65w | ||
|
|
||
| ## Приложения (код параллельной реализации) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please, optimize the appendix. There is no need to copy-paste the whole file. Please, copy only the relevant parts
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed it
Описание
SEQ:
Алгоритм проходит по каждой строке матрицы и находит максимальный элемент в каждой строке. Найденные значения добавляются в результирующий вектор. В реализации предусмотрена обработка рваной матрицы, пустой матрицы и матрицы с пустыми строками. SEQ-решение представляет собой последовательное выполнение строк кода и не поддерживает параллельные вызовы.
MPI:
Алгоритм вычисляет максимальное значение для каждой строки матрицы с использованием параллельных вычислений. Главный процесс преобразует матрицу в плоский массив, затем определяет, сколько строк выделяется каждому процессу, вычисляет размеры передаваемых данных и их смещения в плоском массиве. После получения данных процессы выполняют параллельную обработку строк и находят максимальные значения. Главный процесс собирает результаты, формируя итоговый вектор. Аналогично SEQ-версии реализована корректная обработка рваных матриц, пустых матриц и матриц с пустыми строками.
Отчет оформлен в соответствии с примером из учебных материалов, включает в себя более подробное описание реализованных алгоритмов и сравнение MPI | SEQ решений на больших данных.
Чек-лист
<фамилия>_<первая_буква_имени>_<короткое_название_задачи>clang-formatлокально в моем форке (нет ошибок форматирования)clang-tidyлокально в моем форке (нет предупреждений/ошибок)nesterov_a_vector_sum), а не вmaster