Hmm, would be cool to know if double precision is supported anyways or only with a decent card.
I thought OpenCL (1.1) would use the CPU, maybe SSE2, if the GPU doesnt supports it... somebody who knows the answer?
Geeks3D GPU Caps Viewer allows you to view OpenCL information (OpenCL / More OpenCL Information...).
In order to support double precision the CL_DEVICE_EXTENSION 'cl_khr_fp64' must be present. Otherwise code will refuse to run.
For my Geforce 8800 GTX (with drivers dating from 1-7-2011) there is no double precision support :-(
My Intel OpenCL implementation does support it though (no big surprise here).
I don't think there will automatically fallback to CPU, if the GPU does not support doubles - however an application could check the available OpenCL implementation on a system, and choose one with double support.
Notice that GPU Caps Viewer also comes with a 4D Quaternion Julia demo in OpenCL which is useful for speed comparisons!
Update: I tried changing some OpenCL code to double precision, and my Nvidia driver does not seems to check the extension - it just fails compilation. The Nvidia the compiler complained with: 'warning: Double is not supported. Demoting to float' suggestion that doubles would be converted to floats. However, the compiler failed anyway with a message: 'Instruction 'cvt' requires SM 1.3 or higher, or map_f64_tof32 directive'
Double precision on NVIDIA require ">1.3 Compute capabilitiy".
The G8* serie (eg : 8800) support only up to 1.1
1.3 begin with GT20051.3) & GF100(2.0).
I high recommand buying a GTX460 or "better".
Beware of the meaning of "better" :
- the 460 (i have a 460M on my laptop) is much much better than the 465.
- the 470 (which i have on my desktop) is more powerfull than the 460 in "raw power" but it's a GF100 chipset (same as the GTX 480) with "2.0 Compute capability". while the GTX460 (less raw power) support "2.1 Compute capability".
The 8800GTX (i had this one before it die) is the oldest card supporting CUDA/OpenCL.
You may want to take a look at
http://en.wikipedia.org/wiki/CUDA to learn more about Compute Capability, Card name, Chipset Version