Skip to content

Соснина Александра. Технология OMP. Поразрядная сортировка для целых чисел с простым слиянием. Вариант 17#243

Open
sashoshaa wants to merge 2 commits intolearning-process:masterfrom
sashoshaa:sosnina_a_radix_simple_merge_omp
Open

Conversation

@sashoshaa
Copy link
Contributor

  • Задача: Поразрядная сортировка для целых чисел с простым слиянием
  • Вариант: 17
  • Технология: OMP
  • Реализация: поразрядная сортировка целых чисел с простым слиянием - OMP версия.

Описание

Реализована параллельная версия поразрядной сортировки (radix sort) для целых чисел с простым двухпутевым слиянием на OpenMP. Массив делится пополам, каждая половина сортируется LSD radix sort в отдельном потоке, затем две отсортированные половины объединяются последовательным простым слиянием.

Ключевые особенности реализации

  1. Левая и правая половины сортируются двумя потоками одновременно.
  2. Независимые данные: каждая половина имеет свой буфер.
  3. Последовательное слияние: SimpleMerge выполняется в одном потоке после завершения сортировки обеих половин.

Архитектурные решения

  • Разделение массива на левую и правую половины
  • Параллельная LSD radix sort каждой половины в своей секции.
  • Последовательное двухпутевое слияние в исходный массив.

Основные результаты

  • Ускорение: ~1.6–1.8× относительно SEQ на 2 потоках.
  • Эффективность: ~80–90% при 2 потоках.
  • Тесты: 48 функциональных тестов (те же кейсы, что и в SEQ) и тесты производительности на массивах из 100 000 элементов (случайные целые от -100 000 до 100 000).

Чек-лист

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

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