Skip to content

Маров Александр. Технология ПОС. Передача от всех одному и рассылка (allreduce). Вариант 3.#131

Open
Marofal wants to merge 18 commits into
learning-process:masterfrom
Marofal:marov-task2-allreduce
Open

Маров Александр. Технология ПОС. Передача от всех одному и рассылка (allreduce). Вариант 3.#131
Marofal wants to merge 18 commits into
learning-process:masterfrom
Marofal:marov-task2-allreduce

Conversation

@Marofal
Copy link
Copy Markdown

@Marofal Marofal commented Mar 1, 2026

Передача от всех одному и рассылка (allreduce)
Студент: Маров Александр Евгеньевич
Группа: 3823Б1ПР4
Технология: MPI
Вариант: 3

Описание
В рамках работы реализована параллельная версия коллективной операции MPI_Allreduce с использованием только функций MPI_Send и MPI_Recv (без использования стандартных коллективных операций MPI).

Алгоритм использует древовидную структуру для выполнения редукции и последующей рассылки результата:

Фаза 1 (редукция): Данные собираются к корневому процессу по дереву. Каждый узел получает данные от своих дочерних процессов, применяет заданную операцию (сумма, максимум, минимум) и отправляет результат родителю.

Фаза 2 (рассылка): Корневой процесс рассылает итоговый результат всем процессам по тому же дереву.

Ключевые особенности
Реализация MPI_Allreduce только через MPI_Send и MPI_Recv

Построение бинарного дерева процессов для эффективной коммуникации

Поддержка различных типов данных: MPI_INT, MPI_FLOAT, MPI_DOUBLE

Поддержка различных операций: MPI_SUM, MPI_MAX, MPI_MIN

Возможность выбора корневого процесса (параметр root)

Корректная работа с массивами данных (count > 1)

Тестирование и производительность
Добавлены функциональные тесты для проверки корректности:

Для разных типов данных (int, float, double)

Для разных операций (сумма, максимум, минимум)

Для разных корневых процессов

Для одиночных значений и массивов

Тесты производительности измеряют время выполнения при различных размерах данных и количестве процессов, сравнивая с эталонной реализацией MPI_Allreduce.

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.

1 participant