A linear-memory GPU disjoint-set union
I found that the GPU island-discovery kernel carried the same quadratic memory shape onto the device. I replaced it with a linear-memory disjoint-set union.
156.738 us to 101.097 us. Scratch 7,929,856 bytes to 180,224.
How it was checked, 3 ways
- 99% interval 1.406x to 1.584x
- faster in 91 of 93 valid pairs, median dense/DSU ratio 2.40
- exact match against the dense kernels in every block