If you're using C++, check out Boost.Compute [1]. It provides a high-level STL-like API for OpenCL (without preventing you from directly using the low-level OpenCL APIs). It simplifies common tasks such as copying data to/from the device and also provides a number of built-in algorithms (e.g. sorting/reducing/transforming, etc).
It's cool because it offers C++ developers an easy path to running code on GPUs and multi-core CPUs via an STL-like API. It's similar to NVIDIA's Thrust library but supports all OpenCL compatible devices (including AMD GPUs and Intel CPUs/accelerators).
P.S. It's still under active development and we're looking for more contributors with an interest in parallel computing and C++. Send me an e-mail if you're interested!