Multi-vendor OpenCL support in a single EXE?

(This is probably a stupid question…)

In theory, an OpenCL app should run on any OpenCL-enabled platform (just like OpenGL, or any other Khronos standard API). Practically speaking, is that actually the case right now?

If I’m developing an OpenCL application, I need to link my application against an OpenCL runtime library. This library is part of the OpenCL SDK. Currently, every hardware vendor (AMD, NVIDIA, Intel, etc.) is providing their own OpenCL SDKs. So, let’s say my development system has an AMD GPU. if I link my application against the AMD OpenCL library at build time, will it only run on if the end user has AMD hardware as well (assuming they have appropriate driver support for OpenCL)? Or do I need to build and distribute different EXEs for each target hardware platform?

I know, I should be able to test this myself very easily, but all the systems I have immediate access to has more or less the same hardware configuration :slight_smile:

Both Nvidia and ATI distribute the OpenCL ICD in their SDKs AFAIK. This page from AMD explains it nicely. It was also discussed earlier in this forum.