I have a few general questions regarding the OpenCL ICD.
Who installs the OpenCL.DLL on the system? I assume the goal is to be able to run applications using OpenCL on a machine that does not have any additional software installed (Stream / GPU compute SDK). The best solution would be that the DLL gets installed with the OS. That is fairly unrealistic though. The second best solution is that the DLL gets installed with the display driver. Nvidia is already doing that, ATI is not (at least in some cases). The least convenient solution is to install it with the application.
Who installs the IHV OpenCL driver DLL (nvcuda.dll, atiocl.dll/atiocl64.dll) on the system? Again, I assume the goal is to be able to run applications using OpenCL on a machine that does not have any of the Stream / GPU compute SDKs installed. The best solution is that they get installed with the display driver. Nvidia is already doing that, ATI is not (at least in some cases).
Who installs the IHV OpenCL driver DLL for the CPU case? Could this be installed as part of a “CPU driver”?
What is the calling convention for the ICD DLL? I found that Nvidia is using CDECL on W7/64 and stdcall on XP32. Looking at Khronos’ cl_platform.h versus the one that Nvidia ships in their GPU compute SDK makes me think matters are somewhat in flux, hence my question. I assume the goal is to be consistent across vendors and 32-bit / 64-bit windows OSes. OpenGL32.dll is using CDECL. Is the plan to use CDECL for OpenCL as well? Would it be possible for Khronos to provide windows 32- and 64-bit binaries of the OpenCL.DLL ICD along with the stub libs to get this standardized quickly?
If there’s a better forum to asks these questions or a place where I can find the answers, please let me know. I’ve searched here for a while and all I found is that there are others running into the same or similar issues.