In this paper I examine how modern software tools can take advantage of the enormous computational power provided by highly parallel and heterogeneous, multi-processor hardware environments when used for general purpose computations.
First I do a brief overview on the milestones in graphics processing hardware’s history, and how the general purpose usage of this hardware was gaining importance over the past few years. I sum up the advantages and disadvantages of currently available high level parallel programming tools.
I mainly focus on the OpenCL framework and its capabilities by showing the necessary building blocks of a regular OpenCL program and the basic steps it goes through in a typical run. I show how to break down a general problem into parts running in parallel, through the examination and implementation of a simple image processing algorithm, namely a convolution filter, which is used commonly in every computer vision application. The results of the example program are concluded at the end.