Дергунов Сергей. Технология SEQ-MPI. Гиперкуб. Вариант 10. #405
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.
Задание
Задача: Гиперкуб
Вариант: 10
Технология: MPI (с поддержкой SEQ для последовательной версии)
Описание
В рамках работы реализованы последовательная и параллельная версии алгоритма передачи данных между процессами по топологии гиперкуба.
Последовательная версия (SEQ) моделирует передачу данных в одном процессе и используется в качестве эталона для проверки корректности параллельной реализации.
Параллельная версия (MPI) реализует передачу сообщения между произвольными процессами source и dest в соответствии с топологией гиперкуба. Маршрут передачи вычисляется на основе XOR-разности рангов процессов, что позволяет на каждом шаге переходить к соседнему узлу, отличающемуся ровно одним битом. Передача выполняется только с использованием базовых операций MPI_Send и MPI_Recv без применения встроенных средств создания топологий MPI.
Процесс-отправитель формирует вектор данных, который последовательно пересылается по рассчитанному пути. Процесс-получатель выполняет суммирование элементов и рассылает результат всем процессам.
Ключевые особенности
Тестирование и производительность
Добавлены функциональные тесты для проверки корректности передачи данных между различными парами процессов, а также тесты производительности для оценки времени работы MPI-версии при увеличении числа процессов.