OpenCL provides many benefits in the field of high-performance
computing, and one of the most important is portability. OpenCL-
coded routines, called kernels, can execute on GPUs and CPUs
from such popular manufacturers as Intel, AMD, Nvidia, and IBM.
New OpenCL-capable devices appear regularly, and efforts are
underway to port OpenCL to embedded devices, digital signal
processors, and field-programmable gate arrays. Not only can
OpenCL kernels run on different types of devices, but a single
application can dispatch kernels to multiple devices at once.
For example, if your computer contains an AMD Fusion processor
and an AMD graphics card, you can synchronize kernels running on
both devices and share data between them. OpenCL kernels can
even be used to accelerate OpenGL or Direct3D processing.
Despite these advantages, OpenCL has one significant drawback:
it's not easy to learn. OpenCL isn't derived from MPI or PVM or
any other distributed computing framework. Its overall operation
resembles that of NVIDIA's