DialSort: Non-Comparative Integer Sorting via the Self-Indexing Principle: Architecture, Implementation, and Substrate-Aware Analysis

📅 2026-05-15
📈 Citations: 0
Influential: 0
📄 PDF
🤖 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.
Problem

Research questions and friction points this paper is trying to address.

integer sorting
bounded-universe
non-comparative sorting
prefix-sum
parallel sorting
Innovation

Methods, ideas, or system contributions that make the work stand out.

self-indexing
non-comparative sorting
Conflict Resolution Network
prefix-sum elimination
bounded-universe sorting
🔎 Similar Papers
No similar papers found.
A
Alexander Narvaez
Independent Researcher / Universidad EAFIT