HotSort: 32:32/64-bit KeyVals
HotSort has been updated to support 32:32 key-val and 64-bit keys.
The results are very good. 1 When sorting 64-bit keys, Kepler achieves ~49% of the throughput of the 32-bit key benchmarks. The wider comparison sort performs twice the number of SASS comparisons and triple the number of calls to __syncthreads() on types that are twice as wide so getting half the throughput is excellent.
Additional optimizations were made in the past few weeks and there is now a general performance improvement across all architectures: approximately 12% on GT200 and almost 5% on Kepler. Fermi’s improvement was the smallest at ~1%.
HotSort dominates Thrust Radix Sort until ~8m keys but, as before, the most important performance numbers to observe are HotSort’s “binned” sorting rates. On a GTX 680, HotSort posts some pretty incredible numbers:
- 1.1 to 10.3 billion keys/sec. for subarrays containing 1K to 1M 32-bit keys.
- 500 million to 5.3 billion keys/sec. for subarrays containing 512 to 512K 64-bit keys.
Some pretty plots of the 64-bit results are below starting on page 8. The 64-bit binned sorting results for Kepler are on page 9.
A datasheet containing detailed information on HotSort is here.