Simplifying Image Processors While Increasing SpeedCategory: Science & Technology
Posted: August 8, 2012 08:51AM
The steps required to take a digital photo are much more complex than the simple press of a button would lead you to believe. The camera has to determine if pixels are malfunctioning or are over-sensitive to certain colors, so it can correct them, determine the color of areas in the image, and then correct contrast levels and colors to be better represented to the eye. These steps are some of the steps required to just take and display an image, with an added effects also adding more processing.
To speed up image processors, engineers will come up with interesting tricks to exploit the hardware involved, like multicore processors. Instead of allowing each step to be returned to memory, the engineers will write the programs to keep the data in the processor's local memory as long as possible. This leads to the code becoming very difficult to read and too heavily optimized for specific hardware, which is why researchers at MIT have developed Halide.
Halide is a new programming language for writing image processors and it separates processing algorithms from scheduling while also optimizing scheduling automatically. The separation of the code allows an engineer to break the processing commands into different steps that the scheduler calls as it is programmed to. This allows for much faster tweaking of the program, which should enable more innovation in the field and require less time to write code for multiple pieces of hardware. Also, as Halide optimizes the scheduling for you, the speed of the programs can increase by a factor of 2 to 6, though in one case it was 70 times faster.