I am a newbie to GPGPU concepts and for the last couple of months I have been slowly educating myself on the differences between CUDA and OPENCL. I realized that OpenCL specification allows the programmer to target a compute device (so whatever GPU/CPU architecture) but the CUDA C approach has no such abstraction since it always targets a compatible Nvidia GPU architecture. So I was wondering if I write an OPENCL kernel using Nvidia's implementation in the CUDA environment can I still target a CPU? As far as I understand AMD Stream environment allows you to do this with their OpenCL implementation.
Thanks in advance.