Skip to content

Виняйкина Екатерина. Технология SEQ | MPI. Быстрая сортировка с простым слиянием. Вариант 14#117

Open
EkaterinaVin wants to merge 1 commit into
learning-process:masterfrom
EkaterinaVin:vinyaikina_e_quicksort_simple
Open

Виняйкина Екатерина. Технология SEQ | MPI. Быстрая сортировка с простым слиянием. Вариант 14#117
EkaterinaVin wants to merge 1 commit into
learning-process:masterfrom
EkaterinaVin:vinyaikina_e_quicksort_simple

Conversation

@EkaterinaVin
Copy link
Copy Markdown

@EkaterinaVin EkaterinaVin commented Feb 28, 2026

Описание

  • Задача: Быстрая сортировка с простым слиянием
  • Вариант: 14
  • Технология: SEQ, MPI.
  • Описание
    Реализованы последовательный и параллельный алгоритмы быстрой сортировки (quicksort) с простым слиянием для вектора целых чисел.
    Последовательный алгоритм (VinyaikinaEQuicksortSimpleSEQ) использует итеративную версию быстрой сортировки с разбиением Хоара и выбором опорного элемента по середине, что исключает риск переполнения стека вызовов.
    Параллельная реализация (VinyaikinaEQuicksortSimpleMPI) применяет MPI для распределения данных: исходный массив с помощью MPI_Scatterv равномерно распределяется между процессами, каждый из которых сортирует свой фрагмент итеративным quicksort. Затем отсортированные фрагменты собираются на процессе 0 через MPI_Gatherv, где выполняется их последовательное слияние (merge). Итоговый отсортированный массив рассылается всем процессам через MPI_Bcast для обеспечения согласованности выходных данных.
    Функциональные тесты, охватывающие граничные случаи (пустой массив, один элемент, дубликаты, обратный порядок), подтвердили полную корректность реализации. Performance-тесты, проведенные на массиве из 10⁷ элементов, показали ускорение в 1.23 раза на 2 процессах (эффективность 61.5%). Однако, из-за того, что финальное слияние выполняется последовательно на одном процессе и роста накладных расходов на коммуникации, при увеличении числа процессов до 6 и 8 параллельная версия начинает уступать последовательной (ускорение 0.87 и 0.67 соответственно). Это указывает на то, что последовательное слияние является узким местом данной схемы распараллеливания.

Чек-лист

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

@EkaterinaVin EkaterinaVin requested a review from allnes as a code owner February 28, 2026 21:48
@EkaterinaVin EkaterinaVin changed the title Виняйкина Екатерина. Технология SEQ | MPI. Умножение матрицы на вектор(Вертикальная ленточная схема). Вариант 12 Виняйкина Екатерина. Технология SEQ | MPI. Быстрая сортировка с простым слиянием. Вариант 14 Feb 28, 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