Черных Севастьян. Технология SEQ. Вычисление многомерных интегралов с использованием многошаговой схемы (метод трапеций). Вариант 10#218
Merged
allnes merged 11 commits intolearning-process:masterfrom Mar 7, 2026
Conversation
Ramzan8-88
pushed a commit
to Ramzan8-88/ppc-2026-threads
that referenced
this pull request
Mar 4, 2026
…ножение матрицы на вектор. Вариант 12. Задание 2 (learning-process#218) ## Description Реализованы последовательная (SEQ) и параллельная (MPI) версии алгоритма умножения матрицы на вектор с использованием ленточной вертикальной схемы распределения данных. Параллельная версия использует распределение матрицы по столбцам между процессами с использованием неблокирующих операций `MPI_Isend` для параллельной отправки данных и перекрытия вычислений и коммуникаций. Все функциональные тесты успешно пройдены, включая граничные случаи. **Особенности реализации:** - Ленточная вертикальная схема: матрица делится по столбцам между процессами - Неблокирующие операции `MPI_Isend` для параллельной отправки данных от процесса 0 к остальным процессам - Перекрытие вычислений и коммуникаций на процессе 0 - Корректная агрегация частичных результатов через `MPI_Reduce` - Все вспомогательные методы сделаны статическими для соответствия требованиям clang-tidy - Task: Умножение матрицы на вектор (ленточная вертикальная схема) - Variant: 2 - Technology: MPI + SEQ - Summary: Реализованы последовательная и параллельная (MPI) версии алгоритма умножения матрицы на вектор с использованием ленточной вертикальной схемы распределения данных. Параллельная версия использует неблокирующие операции для эффективной передачи данных. Проведены тесты производительности, показавшие влияние коммуникационных издержек на эффективность распараллеливания. Все функциональные тесты пройдены. --- ## Checklist - [x] CI is green in my fork (build, tests, docs) - [x] Task folder is named `<last>_<initial>_<short>` and matches branch name - [x] clang-format passed locally - [x] clang-tidy passed locally (no warnings/errors introduced) - [x] Functional tests pass locally - [x] Performance tests pass locally - [x] Report (`report.md`) is added and follows the template - [x] I confirm that provided information is truthful
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Описание
Реализация представляет собой последовательный алгоритм для приближенного вычисления многомерных интегралов произвольной размерности по составной формуле трапеций. Был использован обход n-мерного пространства с помощью вектора счетчиков, для работаты с любым количеством измерений. Входные данные содержат векторы границ интегрирования, количество шагов для каждой оси и саму подынтегральную функцию в формате std::function.
В процессе работы алгоритм вычисляет координаты каждого узла сетки и определяет его геометрический вес: точки внутри области имеют максимальный коэффициент, а точки на гранях, ребрах и вершинах гиперкуба получают пониженные веса (умножение на 0.5 за каждую пограничную координату).
Итоговый результат формируется как сумма произведений значений функции на веса, которая в конце масштабируется на произведение шагов по всем измерениям. Корректность работы подтверждается набором функциональных тестов для 1D, 2D и 3D пространств, а эффективность проверена на сетке из 64 миллионов элементов.
Чек-лист
<фамилия>_<первая_буква_имени>_<короткое_название_задачи>clang-formatлокально в моем форке (нет ошибок форматирования)clang-tidyлокально в моем форке (нет предупреждений/ошибок)(например,
nesterov_a_vector_sum), а не вmasterдостоверными