Skip to content

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

Merged
allnes merged 1 commit into
learning-process:masterfrom
Andrew-8705:baldin_a_radix_sort_omp
Mar 16, 2026

Conversation

@Andrew-8705
Copy link
Copy Markdown
Contributor

@Andrew-8705 Andrew-8705 commented Mar 11, 2026

Описание

  • Задача: Поразрядная сортировка для целых чисел с простым слиянием.
  • Вариант: 17
  • Технология: OMP
  • Описание:
    Была реализована OMP версия поразрядной сортировки для целых чисел с простым слиянием (Radix Sort). В функции RunImpl исходный массив разбивается на части, количество которых соответствует числу доступных потоков. Границы частей вычисляются заранее для равномерного распределения нагрузки.
    Процесс параллельной сортировки разделен на два основных этапа:
  • В параллельной секции #pragma omp parallel каждый поток независимо сортирует свою часть массива с помощью функции RadixSortLocal. Внутри неё применена оптимизация, которая позволяет выполнять проходы по байтам, используя один временный массив temp - это исключает лишнее копирование данных в конце прохода.
  • После завершения локальной сортировки выполняется итеративное древовидное слияние полученных отсортированных блоков. Слияние пар соседних участков происходит параллельно в цикле с использованием #pragma omp parallel for и стандартной функции std::inplace_merge, реализующей алгоритм простого слияния.
    Логика обработки байтов (выделение разряда маской, подсчет частот, префиксные суммы) и инверсия знакового бита (XOR 128) для поддержки отрицательных чисел сохранены из последовательной версии.

Чек-лист

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

@Andrew-8705 Andrew-8705 requested a review from allnes as a code owner March 11, 2026 18:26
@allnes allnes merged commit 912d2cd into learning-process:master Mar 16, 2026
34 checks passed
SinevArtem pushed a commit to SinevArtem/ppc-2026-threads that referenced this pull request Mar 16, 2026
hargussss pushed a commit to hargussss/ppc-2026-threads that referenced this pull request Mar 16, 2026
LarisaEgorova pushed a commit to LarisaEgorova/ppc-2026-threads that referenced this pull request Mar 17, 2026
GoriachevaKsenia pushed a commit to GoriachevaKsenia/ppc-2026-threads that referenced this pull request Mar 21, 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