  The self-join finds all objects in a dataset within a threshold of each other
defined by a similarity metric. As such, the self-join is a building block for
the field of databases and data mining, and is employed in Big Data
applications. In this paper, we advance a GPU-efficient algorithm for the
similarity self-join that uses the Euclidean distance metric. The
search-and-refine strategy is an efficient approach for low dimensionality
datasets, as index searches degrade with increasing dimension (i.e., the curse
of dimensionality). Thus, we target the low dimensionality problem, and compare
our GPU self-join to a search-and-refine implementation, and a state-of-the-art
parallel algorithm. In low dimensionality, there are several unique challenges
associated with efficiently solving the self-join problem on the GPU. Low
dimensional data often results in higher data densities, causing a significant
number of distance calculations and a large result set. As dimensionality
increases, index searches become increasingly exhaustive, forming a performance
bottleneck. We advance several techniques to overcome these challenges using
the GPU. The techniques we propose include a GPU-efficient index that employs a
bounded search, a batching scheme to accommodate large result set sizes, and a
reduction in distance calculations through duplicate search removal. Our GPU
self-join outperforms both search-and-refine and state-of-the-art algorithms.
