Skip to content

Conversation

@Tripxp1
Copy link

@Tripxp1 Tripxp1 commented Dec 25, 2025

Парамонов Леонид. Технология SEQ-MPI. Передача от одного всем (broadcast). Вариант 1.

  • Задача: Передача от одного всем (broadcast).
  • Вариант: 1
  • Технология: SEQ,, MPI

Описание

Проект включает две версии реализации операции широковещательной рассылки данных (broadcast): последовательную (SEQ) и параллельную на основе MPI с использованием биномиального дерева. Алгоритм обеспечивает передачу данных от выбранного процесса-источника всем процессам в коммуникаторе MPI_COMM_WORLD, поддерживая типы данных int, float и double.

Ключевые характеристики реализации

Последовательный вариант (SEQ):

  • Прямое копирование данных внутри одного процесса без организации коммуникаций
  • Поддержка трех типов данных: целочисленные (int), вещественные одинарной (float) и двойной (double) точности
  • Инициализация выходного буфера на этапе создания объекта задачи
  • Использование memcpy для эффективного копирования данных
  • Временная сложность: O(n), где n — количество элементов
  • Дополнительная память: O(n) для хранения результирующего массива

Параллельный вариант с использованием MPI:

  • Реализация биномиального дерева передачи с использованием только базовых операций MPI_Send и MPI_Recv
  • Поддержка произвольного процесса-источника (root) через преобразование виртуальных рангов
  • Двухэтапная схема передачи: сначала метаданные (размер массива), затем сами данные
  • Автоматическое определение типа данных на основе входного варианта (variant)
  • Корректная обработка пустых массивов и граничных случаев

Архитектура параллельного выполнения:

  1. Проверка инициализации MPI и корректности входных параметров
  2. Рассылка ранга источника от процесса 0 всем процессам
  3. Широковещательная передача размера массива от процесса-источника
  4. Выделение буферов нужного размера на всех процессах
  5. Параллельная передача данных по биномиальному дереву
  6. Формирование выходных данных в том же формате, что и входные

Обе реализации демонстрируют корректную работу на различных конфигурациях данных. Последовательная версия обеспечивает максимальную производительность для работы в рамках одного процесса, в то время как параллельная версия реализует масштабируемый алгоритм, готовый к распределенной обработке больших объемов данных.

Чек-лист

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

@github-actions github-actions bot added the task label Dec 25, 2025
@codecov-commenter
Copy link

Codecov Report

❌ Patch coverage is 69.36937% with 34 lines in your changes missing coverage. Please review.
✅ Project coverage is 8.83%. Comparing base (0f1a297) to head (4732fa8).

Files with missing lines Patch % Lines
...asks/paramonov_from_one_to_all/mpi/src/ops_mpi.cpp 65.82% 6 Missing and 21 partials ⚠️
...asks/paramonov_from_one_to_all/seq/src/ops_seq.cpp 77.41% 3 Missing and 4 partials ⚠️

❌ Your patch status has failed because the patch coverage (69.36%) is below the target coverage (95.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@            Coverage Diff            @@
##           master    #406      +/-   ##
=========================================
+ Coverage    7.85%   8.83%   +0.97%     
=========================================
  Files         184     187       +3     
  Lines        6862    6973     +111     
  Branches     2585    2652      +67     
=========================================
+ Hits          539     616      +77     
- Misses       6281    6290       +9     
- Partials       42      67      +25     

☔ 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.

@github-actions
Copy link

github-actions bot commented Jan 9, 2026

This pull request is stale for 2 weeks and is going to be closed in a week

@github-actions github-actions bot added the stale label Jan 9, 2026
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