The thesis explores the formulation and implementation of an application that divides, computes and merges a parallel computing problem on a heterogeneous system. The application uses all available compute devices. The goal is to determine how to divide a computing problem between devices to maximise the system's utilisation. The thesis presents possible solutions to the problem, their strengths, and weaknesses. Some of the solutions are benchmarked and compared. For benchmarking the Mandelbrot set was generated. Processing units are accessed and managed using the OpenCL framework. We found out how best to divide and allocate work, and how to set the size of work groups to imporve device utilisation.