In recent years, a significant number of articles have been published about GPGPU programs, which are able to accelerate computationally intensive applications by several times over conventional CPU programs.
These articles raise two important questions:
Despite of these significant accelerations, how effective these softwares are compared to the parallel power of the GPU?
With the current development tools, is that possible to integrate these GPU programs into a major industry application, without serious performance degradation, even if the data input size increases by several orders of magnitude?
My thesis is trying to get detailed and accurate answers for these questions. I chose the k nearest neighbors algorithm, which has several GPGPU implementations, and one of the most popular data mining tool, RapidMiner, to analyze the potential of a GPU plugin development.
During my work I aimed to develop solutions to eliminate the weaknesses and the constraints, of previous implementations, because, with these limitations the software is restricted or totally unsuitable for industrial use.
The result is a RapidMiner extension, which is about as fast as the current best solutions, however it goes far beyond, because it was designed to handle gigabytes of data, without significant performance drop compared to the CPU implementations.
This plugin gives new opportunities to data miners, who are able to exploit the parallel power of the GPU, without any specific knowledge of it. They can easily use this the same way as the CPU version.
For the development i used the Nvidia Cuda C GPGPU language, and its Java binding, called JCuda.