🤖 AI Summary
This work proposes DialSort, a novel integer sorting architecture that fundamentally rethinks the role of histograms by treating them directly as the final sorted output rather than an intermediate structure. Leveraging a self-indexing principle, DialSort maps keys to their ordered positions in memory, thereby entirely eliminating the prefix-sum phase common in traditional approaches. It introduces a Conflict Resolution Network (CRN) that requires only equality checks, enabling comparison-free parallel writes. Combined with a pipelined addition-reduction tree and a bounded integer-domain memory access model, DialSort achieves a 39.77× speedup over std::sort on an 8-thread x86-64 platform, attaining a peak throughput of 115.9 million keys per second. It consistently outperforms counting sort, IPS4o, and ska_sort while passing all 208 correctness tests.
📝 Abstract
Sorting over bounded-universe integer keys has traditionally relied on counting sort and radix sort, both of which incur mandatory prefix-sum passes, auxiliary scatter buffers, or multiple permutation passes. This paper introduces DialSort, a non-comparative sorting architecture based on the self-indexing principle: each integer key simultaneously encodes its value and its canonical position in the ordered address space [0,U-1]. DialSort eliminates the prefix-sum pass entirely by treating the histogram H as the canonical ordered representation, not as an intermediate structure.
To support parallel ingestion without serialization, we introduce the Conflict Resolution Network (CRN), a pipelined additive reduction tree that resolves concurrent writes using equality checks exclusively, with no magnitude comparisons. Formal proofs establish O(n+U) sequential and O(n/k + log k + U) parallel time bounds.
A software prototype on an 8-thread Intel x86-64 achieves 39.77x speedup over std::sort and peak throughput of 115.9 M keys/s. Against Classic Counting Sort, DialSort wins 46 of 48 configurations. Against IPS4o, DialSort outperforms it in 24 of 48 sequential and 29 of 48 parallel configurations. Against ska_sort, it wins 46 of 48 configurations. All 208 benchmark configurations passed correctness verification.
DialSort is not a universal replacement for comparison-based sorting, but a domain-specialized architecture for bounded-universe workloads where sorting reduces to a geometric read over memory. Benchmark source and five open interactive simulators are released alongside this paper.