Apple has touted using the "Power of the GPU" with the OpenCL API, but how does it run in practice? Very few current applications are coded to use Apple's new OpenCL API that is included with Snow Leopard; however, recently there have been several benchmarks that tests some of the OpenCL capabilities, showing the potential for impressive speed gains. While these programs are only demonstration uses of OpenCL, they offer a view into what can be done with the technology.
There are two ways to benchmark hardware with OpenCL: The first is to compare the benefit of including the graphics processor versus the CPU alone in computing various tasks, and the second is to compare the speeds achieved by various graphics processors that support OpenCL.
For comparing different GPUs, Mac testing site "BareFeats" has thrown together a series of benchmarks they ran on Quadro and GeForce GPUs available in Mac Pro computers. In these tests, they measured the frames per second recorded in various graphics demo programs that claim to support OpenCL. Unfortunately they do not show the CPU-only, GPU-only, or Hybrid results on the tests that support these options; however, the direct comparisons between GPUs are interesting to see.
For direct comparisons between the CPU and GPU, a benchmarking program called "OpenCL Benchmark 1.0" that runs in the terminal has been released. This program has been covered by Ars Technica and is relatively straightforward--running the same calculations both on the CPU alone and on the CPU and GPU. The speedup seen with using OpenCL is impressive!
If you are interested in running some of these demos on your system to test out OpenCL, they can be obtained here and here. Do keep in mind that these programs are tests which are not guaranteed to run properly, and may potentially be unstable. I ran the Galaxies program that Barefeats used, but it did cause a kernel panic at one point.
Overall, certain GPUs are naturally faster than others for the demos, though the speed will depend on a variety of factors. These include driver maturity, the specific algorithms being run, and how those algorithms are implemented in the specific application being run. The GPU uses simpler and more specific math than CPUs; however, unlike CPUs that may have between 2 and 4 cores these days, a GPU may have hundreds of cores, so the benefit in using them is massive amounts of parallel processing for simple calculations (ie, performing calculations on hundreds of pixels, vertices, and points all at once).
With the benefits from OpenCL depending on the calculations being performed, drivers, and the programming being used, if people use it inefficiently it may actually slow down a program rather than speed it up. Ars Technica's extensive review of Snow Leopard mentions some applications running faster on CPUs than when running under OpenCL. So the overall verdict is while this technology is exceptionally promising and Apple has done well in implementing it, it's overall success is in the hands of developers. Given these demos and benchmarks so far, I'm highly optimistic they will do a good job.
(OpenCL Icon Credit: Apple)