<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>HotSort on Dispatch3 Inc.</title><link>https://dispatch3.com/tags/hotsort/</link><description>Recent content in HotSort on Dispatch3 Inc.</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 20 Oct 2024 09:00:00 -0400</lastBuildDate><atom:link href="https://dispatch3.com/tags/hotsort/index.xml" rel="self" type="application/rss+xml"/><item><title>HotSort: Vulkan Sorting Library</title><link>https://dispatch3.com/projects/hotsort/</link><pubDate>Sun, 20 Oct 2024 09:00:00 -0400</pubDate><guid>https://dispatch3.com/projects/hotsort/</guid><description>HotSort is a high-performance GPU-accelerated integer sorting library that has been implemented in CUDA, OpenCL, and now Vulkan.
This sorting library was used in the Spinel graphics engine until 2022 when it was replaced with the even higher performance RadixSort library.
HotSort&amp;rsquo;s advantages include:
Ultra-fast sorting of 32‑bit or 64‑bit keys Reaches peak throughput on small arrays In-place sorting for low-memory environments Strong scaling with number of multiprocessors Low memory transactions relative to array size A concurrency-friendly dense kernel grid Support for GPU post-processing of sorted results Although HotSort is a comparison sort, it&amp;rsquo;s typically significantly faster than other GPU-accelerated algorithms when sorting arrays smaller than ~500K keyvals.</description></item><item><title>HotSort v2 — 32-bit Keys</title><link>https://dispatch3.com/posts/hotsort_32_keys/</link><pubDate>Mon, 01 Aug 2016 09:00:00 -0400</pubDate><guid>https://dispatch3.com/posts/hotsort_32_keys/</guid><description>I had some requests for a HotSort plot showing 32-bit key throughput for both NVIDIA CUDA and Intel GEN GPUs.
The 32-bit key sorting kernels aren&amp;rsquo;t used anywhere so I had to dust off some older benchmarks and rerun them.
Below is an updated plot of Quadro K620, Intel HD 6200 (Gen8) and CPU sorting throughputs for 32-bit and 64-bit keys.
The summary of the Quadro K620 vs. Intel HD 6200 throughput matchup is:</description></item><item><title>HotSort v2 — Intel Iris Pro GPU</title><link>https://dispatch3.com/posts/hotsort_iris_pro/</link><pubDate>Thu, 14 Jul 2016 09:00:00 -0400</pubDate><guid>https://dispatch3.com/posts/hotsort_iris_pro/</guid><description>I had some time over the July 4th holiday and was able to finish porting the HotSort v2 merging kernels to the Intel Processor Graphics architecture.
When sorting up to 1m keys, the HotSort v2 algorithm demonstrates an average speedup of 35x for 32-bit and 19x for 64-bit keys over the Visual Studio 2013 qsort() routine.
These early results are awesome even before any serious analysis and optimization.
The following plot compares the sorting rates of:</description></item><item><title>HotSort 2.0 on CUDA</title><link>https://dispatch3.com/posts/hotsort_2_cuda/</link><pubDate>Tue, 23 Feb 2016 00:00:00 -0500</pubDate><guid>https://dispatch3.com/posts/hotsort_2_cuda/</guid><description>I had some major spilling issues with CUDA 7.0 and my HotSort sorting library due to some NVCC bugs.
CUDA 7.5 didn&amp;rsquo;t resolve the spills and I couldn&amp;rsquo;t wait any longer&amp;hellip; it was unfortunately time for a heavy rewrite.
Some of the work was done months ago but it took the last few weeks to get the higher-level kernels completed.
I also managed to generalize the implementation so it can run on architectures that aren&amp;rsquo;t as programmer-friendly as CUDA multiprocessors.</description></item><item><title>HotSort 2.0</title><link>https://dispatch3.com/posts/hotsort_2/</link><pubDate>Thu, 07 May 2015 00:00:00 -0400</pubDate><guid>https://dispatch3.com/posts/hotsort_2/</guid><description>I hadn&amp;rsquo;t touched my HotSort codebase in a long time but recently was able to spend a couple weeks developing a generalized version of the sorting algorithm that can be &amp;ldquo;tuned&amp;rdquo; for a specific GPU architecture.
After more than a couple years of thinking about the algorithm, I had accumulated a number of performance and portability ideas. The most important idea generalized the HotSort sorting algorithm so that it could run well on some of the newer resource-rich but architecturally different &amp;ldquo;shaped&amp;rdquo; OpenCL GPUs.</description></item><item><title>HotSort on the Jetson TK1 Dev Kit</title><link>https://dispatch3.com/posts/hotsort_tk1/</link><pubDate>Fri, 30 May 2014 00:00:00 -0400</pubDate><guid>https://dispatch3.com/posts/hotsort_tk1/</guid><description>The ~5 Watt Jetson TK1 can sort 16K 32-bit keys in 0.07 msecs or ~220 Mkeys/sec!
You can see the TK1 results for sorting 32-bit, 32+32 and 64-bit keys here.
I&amp;rsquo;ve also added these results to the end of the HotSort benchmark PDF.
My expectation was that the K1 would be able to sort 16K keys in ~0.05 msecs. instead of ~0.07 so I&amp;rsquo;m curious if there are architectural differences other than the reduced size register file.</description></item><item><title>HotSort on a Maxwell GTX 750 Ti</title><link>https://dispatch3.com/posts/hotsort_gtx750ti/</link><pubDate>Fri, 21 Feb 2014 00:00:00 -0500</pubDate><guid>https://dispatch3.com/posts/hotsort_gtx750ti/</guid><description>I&amp;rsquo;ve added GTX 750 Ti results to the HotSort benchmark PDF.
I am pleased to see that the entry-level 60W 750 Ti performs well against the once flagship GTX 480 up until ~512K 32-bit keys.
You can see a direct comparison of the two cards here when sorting 32-bit and 64-bit keys.
Note that the GTX 480 still has more than twice the aggregate shared memory as well as 40% more 32-bit registers than the GTX 750 Ti.</description></item><item><title>HotSort on a GK208</title><link>https://dispatch3.com/posts/hotsort_gk208/</link><pubDate>Thu, 08 Aug 2013 00:00:00 -0400</pubDate><guid>https://dispatch3.com/posts/hotsort_gk208/</guid><description>NVIDIA&amp;rsquo;s new GK208 GPU is a low power device with very high end sm_35 compute capabilities.
At this point, only the flagship GTX 780, GTX TITAN, TESLA K20 and Quadro K6000 GPUs support sm_35.
It&amp;rsquo;s also rumored that Tegra 5 (&amp;ldquo;Logan&amp;rdquo;) will be an sm_35 compute capability device. My guess is that it will run at ~300 MHZ, have 192 cores (1 SMX) and 12.8 GB/s of bandwidth (64-bit LPDDR3@800MHz).</description></item><item><title>HotSort on an Overclocked Tesla K20C</title><link>https://dispatch3.com/posts/hotsort_oc_k20c/</link><pubDate>Mon, 20 May 2013 00:00:00 -0400</pubDate><guid>https://dispatch3.com/posts/hotsort_oc_k20c/</guid><description>A mysterious stranger just ran the HotSort benchmarking utility on an overclocked Tesla K20c and sent me the results.
The K20c was overclocked to 1058 MHz x 6.0 Gbps (GPU x MEM).
A stock K20c normally runs at 758 MHz x 5.2 Gbps.
The results are stunning!
You can see all the benchmarks here.</description></item><item><title>High Register-Count HotSort Kernels</title><link>https://dispatch3.com/posts/hotsort_gk110/</link><pubDate>Sun, 19 May 2013 00:00:00 -0400</pubDate><guid>https://dispatch3.com/posts/hotsort_gk110/</guid><description>Last week I returned to working on HotSort in order to add a few new features. One of the &amp;ldquo;free&amp;rdquo; features on my list was to implement high register-count merge kernels on GK110 and GT200 architectures.
The merge kernels in HotSort minimize global loads and stores by maximizing the number of element comparisons performed per thread.
Up until now, the same merging algorithm and register configurations were being used across all CUDA architectures and the resulting merge kernels were approaching the Fermi and GK104 63 register-per-thread limit.</description></item><item><title>HotSort: 32:32/64-bit KeyVals</title><link>https://dispatch3.com/posts/hotsort_3232_64/</link><pubDate>Fri, 19 Oct 2012 00:00:00 -0400</pubDate><guid>https://dispatch3.com/posts/hotsort_3232_64/</guid><description>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.</description></item><item><title>HotSort: A New GPU Sorting Algorithm</title><link>https://dispatch3.com/posts/hotsort/</link><pubDate>Tue, 04 Sep 2012 00:00:00 -0400</pubDate><guid>https://dispatch3.com/posts/hotsort/</guid><description>Earlier this year I determined I was going to need a specialized sorting algorithm in order to complete another GPU project.
I needed a sorter that was portable, in-place, supported key-vals wider than 32-bits and could sort binned (tiled) independent data sets output by other GPU kernels.
But most of all, the sorting algorithm had to be uber-fast on small GPUs.
A number of months later HotSort was completed. I&amp;rsquo;ve achieved most of my design goals and exceeded a few of them.</description></item></channel></rss>