A GPU/FPGA-Based K-Means Clustering Using a Parameterized Code Generator - Penha, Jeronimo Costa; Bragança, Lucas; Coelho, Kristtopher; Canesche, Michael; Silva, Jansen; Comarela, Giovanni; Nacif, José Augusto M.; Ferreira, Ricardo (Anais do Simpósio em Sistemas Computacionais de Alto Desempenho (SSCAD), 2018)
The K-means algorithm is a method used for the unsupervised learning task of data clustering. This work presents a K-means specific domain code generator capable of generating code for GPUs and FPGAs. To increase efficiency, the code is parameterized and specialized for Nvidia GPUs and Intel/Altera CPU-FPGA HARP v.2 platform. Furthermore, the generator is modular and can be extended to other FPGA and GPU platforms. Another contribution of this work is to simplify the use of high performance FPGAs for programmers, once our generator does not require hardware knowledge in order to provide a high performance accelerator at the software level. The generator also simplifies GPU programming. In comparison to an Intel XEON CPU, our experiments show a 55x speed-up for the GPU execution time and a 13.8x speed up for the FPGA. With regard to energy, the FPGA was up to 10 times more efficient than the evaluated GPUs (Nvidia K40 and 1080ti).