While many modern computers are now heterogeneous systems of multi-core CPUs and many-core GPUs, efforts to exploit these systems have tended to focus on the many-core components, neglecting the available performance of the multi-core CPUs. With modern CPUs capable of delivering hundreds of GFLOPS of performance themselves, techniques that can harness both the multi- and many-core components of a heterogeneous system at the same time can deliver greater performance. In this paper we will present some recent work at the University of Bristol using OpenCL to simultaneously exploit CPUs and GPUs for a molecular docking application. Results are presented across a wide range of platforms, and scaling to hundreds of CPUs and GPUs.