Cross-vendor GPU development strategy

AMD has an OpenCL runtime for both their CPUs and GPUs. It also works for Intel CPUs because they use the same instruction set (x86 + SSE). It doesn’t work for Intel GPUs. Intel GPUs aren’t suitable for GPGPU anyway, I’m pretty sure even Intel wouldn’t try to expose them as OpenCL devices if they made their own runtime.

Nexus is NVIDIA’s plugin to Visual Studio that attempts to simplify GPU programming with CUDA, OpenCL and, I think, DirectCompute.

People are working on making multiple implementations available at the same time. Ie. in the future it should be possible to have multiple platforms (the spec predicts a platform query will return an array of platforms). On Windows it would work by having paths to various OpenCL.dll from different vendors stored somewhere in the registry available for querying.

Actually, someone on the forum told me that it should already be possible but there’s a bug that makes NVIDIA’s and AMD’s runtimes are incompatible. I’m unable to elaborate on this yet.

AFAIK OpenCL is a bit different than CUDA’s Driver API in a few places that would make a 1:1 translation not trivial.