  Spectral clustering is one of the most popular graph clustering algorithms,
which achieves the best performance for many scientific and engineering
applications. However, existing implementations in commonly used software
platforms such as Matlab and Python do not scale well for many of the emerging
Big Data applications. In this paper, we present a fast implementation of the
spectral clustering algorithm on a CPU-GPU heterogeneous platform. Our
implementation takes advantage of the computational power of the multi-core CPU
and the massive multithreading and SIMD capabilities of GPUs. Given the input
as data points in high dimensional space, we propose a parallel scheme to build
a sparse similarity graph represented in a standard sparse representation
format. Then we compute the smallest $k$ eigenvectors of the Laplacian matrix
by utilizing the reverse communication interfaces of ARPACK software and
cuSPARSE library, where $k$ is typically very large. Moreover, we implement a
very fast parallelized $k$-means algorithm on GPUs. Our implementation is shown
to be significantly faster compared to the best known Matlab and Python
implementations for each step. In addition, our algorithm scales to problems
with a very large number of clusters.
