In real applications, when dealing with high volume of data, it is necessary the use of parallel platforms in order to obtain results in a reasonable time. Nowadays, GPU/MultiGPU devices are widely used to get this reasonable time at a low price. The GPU/MultiGPU are managed by a CPU/core/multicore host. That is why these kinds of systems are called heterogeneous systems. However, in most cases the CPU/core/multicore is idle when the GPU/MultiGPU devices are processing. As a consequence, the theoretical peak performance of the underlying architecture decreases and, of course, the term heterogeneous platform becomes more a conventional term than a real term.
In this paper, we have carried out a real heterogeneous implementation focusing on similarity search. Similarity search is becoming a field of increasing interest because these kinds of methods can be applied to different areas in science and engineering, such as pattern recognition, information retrieval, etc. This search is carried out over metric indexes that allow to decrease the number of distance evaluations during the search process, improving the efficiency of the overall process. Our heterogeneous platform consists of a 8 core processor and 4 GPUs. Then, our algorithms exploit the computational resources executing at the same time on cores and on the GPUs. The scheduling is carried out by OpenMP considering dynamic scheduling. In order to fix the best chunk or block size of the queries to be processed by each processing element, different approaches have been considered.