Короткий ответ: пример битовой сортировки, предоставленный CUDA SDK, в первую очередь предназначен для педагогической работы. Он просто не так оптимизирован, как реализация сортировки Thrust, которая основана на очень эффективной сортировке по основанию, предоставляемой Merrill .
Асимптотическая производительность двух алгоритмов также различна. Сеть битовой сортировки имеет сложность O(n lg^2 n)
, в то время как радикальная сортировка, используемая Thrust, имеет нечто большее, чем O(#bits n)
сложность, где #bits
обозначает количество битов, необходимых для представления входных данных. Другими словами, радикальная сортировка требует асимптотически меньшего количества операций чтения и записи в глобальную память, чем для битовой сортировки.
Вы можете обнаружить, что для небольших рабочих нагрузок битоническая сортировка работает лучше.