in comparison to CUDA, OpenCL is often praised to be indepented of the platform and hardware. But the AMD FAQs say that a program compiled with their Stream technology does not run on the hardware of another GPU vendor. This means that ppl with NVidia hardware need to recompile with their drivers (and SDK, I guess). This is, of course, not possible if I wanted to ship a professional software to customers with different hardware.
Searching the web for this issue I found the possibility to dynamically link the OpenCL.dll, which comes with the specific video driver. What frightened me is, that apparently there have been (still are?) different calling conventions (stdcall/cdecl) arbitrarily mixed with Nvidia/AMD and 32bit/64bit. Do these issues still exist in the latest drivers and SDKs?
My question: is it possible -at this time- to ship a software with different DLLs (32/64 bit, AMD/NVIDIA) and to dynamically link them to support heterogeneous systems?