HotSort v2 — Intel Iris Pro GPU

- 2 mins read

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:

  • 1m 32-bit keys using HotSort on an Intel HD 6200
  • 1m 32-bit keys using qsort() on a Core i7-5775C CPU
  • 1m 64-bit keys using HotSort on an Intel HD 6200
  • 1m 64-bit keys using qsort() on a Core i7-5775C CPU
  • 1m 64-bit keys using HotSort on an NVIDIA Quadro K620

Note that Intel Iris Pro Graphics 6200 and NVIDIA Quadro K620 have nearly identical specifications—both have 384 cores clocked at ~1.1 GHz and ~29 GB/s of bandwidth delivered by a 128-bit DDR3 interface.

I’m still investigating why I don’t see dramatic throughput on very small arrays like I do on monolithic 128-core NVIDIA multiprocessors but I suspect it’s related to both shared memory latency and the GEN OpenCL environment only being able to map kernels to relatively small work groups of 32 cores (4 EUs / 224 SIMD8 work items).

That being said, the initial 32-bit Intel HD 6200 results are very good and hold up well against discrete GPUs.

But the 64-bit block sorting kernels are probably underperforming and are going to need further analysis.

My guess is that either the GEN8 64-bit comparisons, 64-bit SIMD8 lane shuffles or 64-bit load/stores to SLM are more than the expected 2x cost over their 32-bit equivalents.

Even with these uninvestigated issues, the 64-bit key sorting throughput is already within 85% of a Quadro K620.

It’s amazing to see how much power can be squeezed out of a low-power integrated GPU!