Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Имелось в виду массивное распаралливание на GPU, насколько знаю такого нет.
не требут дополнительной памяти.
ок, я неправильно понял фразу в первом параграфе.
если вы не используете какую-то экзотическую версию QuickSort, то вы не правы. Дополнительная память требуется, как минимум на стек, и в лучшем случае можно добиться, чтобы глубина не превышала log N, но так чтобы свести дополнительную память до константы в QuickSort, я бы с радостью почитал статью про это.
Quick Sort, который на данный момент не поддается распараллеливанию
В «классической» реализации Radix Sort хранить значения предлагается в самом radix массиве, т.е. каждый элемент это тоже массив, в который записываются исходные числа, как раз здесь скрыта причина высокого расхода памяти.
Если позиция копирования числа уже занята, то ищем первый не занятый элемент в итоговом массиве.
В результате был найден третий способ, более оптимально использующий память, но требующий дополнительного прохода radix массива после его заполнения
Возможность параллельного вычисления
Локальность данных при обработке — Достаточная
А можно здесь подробнее? Quick Sort ведь классический пример подхода «разделяй и властвуй», который в целом неплохо распараллеливается: разделил массив на 2 части (бОльшую и меньшую, чем якорь) и обрабатывай их параллельно, каждая часть в итоге может ветвиться точно также.
В «классической» реализации Radix Sort хранить значения предлагается в самом radix массиве
Это где вы такую реализацию видели? O_o
И далеко вы собираетесь идти искать?
Не очевидно это. Как вы собираетесь распараллеливать?
Финальная фаза, где заполняется результирующий массив, пишет элементы в разные участки памяти на каждой итерации. Трудно придумать сценарий хуже. Вы как-бы и сами пишете, что доступ к памяти «Умеренно случайный», что намекает.
Алгоритм сортировки Radix Compact. Часть 1: реализация на CPU