Image matching is an important application in many domains. The ability to match images in near real time and accurately has uses and with modern systems and is a useful tool in many areas. When a set of images is compared to a large database, features are examined for similarity. How various types of parallelism can be exploited as well as the use of many cores is a area shows great promise.
Applications in diverse industries such as the hospitality and retail industry, social networks and surveillance can benefit from real time image recognition. Parallelism at the system level can be divided into two main areas. First, at the database level and second at the image recognition level. The compute load per thread on the host system can just be calculated as the total number of images in the database divided by the number of threads. The image matching algorithms can then be parallelized on the coprocessor.
When investigating the speedups that can be obtained, it is useful to look at different database sizes of image. The larger the database, the different optimal performance increases are observed, due to a limited number of threads that can be created at once. Experiments have shown that the speedup for image recognition can be up to 6X in creating the database and almost 3X in performing the computations.
Various parameters have an effect on the overall performance of this type of application, and it is important to understand and experiment with the different parameter values.
Source: Penn State University, USA , Intel USA.