Engineers at Vector Fabrics (Eindhoven, The Netherlands) have built a tool to analyze and optimize source code for multi-core processors. As a test case, they have optimized an OpenCV image processing algorithm written in C++ and made the results available as an Android App.
OpenCV is a widely known open source library for real-time computer vision. As an example, OpenCV comes with an algorithm for Inpainting -- a mechanism to remove scratches or other artifacts from a photograph.
The engineers at Vector Fabrics parallelized the algorithm using the company's own Pareon tool. The tool analyzes source code both statically and dynamically and highlights optimization and parallelization opportunities.
Because no simple optimizations were found, the engineers opted to 'tile' the algorithm -- breaking the image into several parts and enabling the different cores of a multiprocessor system to process each piece. Once the code iterated over the tiles, the Vector Fabrics' tool correctly identified the parallelization opportunity and generated the code changes needed to run the algorithm on a multi-core processor.
In a whitepaper available here, Klaas van Gend, senior field applications engineer at Vector Fabrics, describes the optimization process that resulted in a speed-up of up to 4x on quad-core ARM architectures, and 2x on dual-core architectures.
Related items from Vision Systems Design you might also find of interest.
1. Vision could benefit from parallel computing standard
In an effort to make it easier for programmers to take advantage of such parallel processing hardware, Nvidia, Cray, the Portland Group (PGI), and CAPS enterprise have developed a new parallel-programming standard known as OpenACC.
2. EU researchers aim to simplify multicore program development
Partners from research and industry have joined forces to simplify the development of software for embedded multicore processors.
3. MIT researchers develop new programming language for image processing
Researchers at MIT's Computer Science and Artificial Intelligence Laboratory (CSAIL; Cambridge, MA, USA) aim to make writing image-processing algorithms easier with a new programming language called Halide.
4. Programming computer vision with Python
An associate professor from Lund University (Lund, Sweden) who is currently working and living in San Francisco has written a new book that highlights how to program computer vision systems using the Python programming language from the Python Software Foundation.
5. Free quick start kit for vision software programmers
A free quick-start kit is now available for engineers who want to start developing computer vision applications using OpenCV.
-- Dave Wilson, Senior Editor, Vision Systems Design