The Khronos Group - a non-profit industry consortium to develop, publish and promote open standard, royalty-free media authoring and acceleration standards for desktop and handheld devices, combined with conformance qualification programs for platform and device interoperability.

If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

Threaded View

One host, two devices, different vendors

Hi,

From what I understand it should be possible to have an NVIDIA GPU alongside an AMD GPU, hosted on an Intel CPU, and the three will be able to share the load of compute intensive tasks, in a multi-device OpenCL execution. I mean, that's the definition of heterogeneous after all.

The day this is possible, at least for Linux and Windows (don't know about a Mac) is not here yet, from my experience. If I install AMD's StreamSDK and the driver that comes along with it, it doesn't recognize my NVIDIA GPU. It does manage to recognize the Intel CPU as a compute device (which is cool). If I use NVIDIA's implementation, it only sees the NVIDIA GPU, not AMD GPU device and no CPU device.

Now, either I'm doing something wrong, or, we're missing a link in the chain. To my understanding, a common, implementation independent dll/so should be responsible for device enumeration according to installed ICDs, and once a context is opened to a device, any OpenCL commands enqueued for that device in that context, should be redirected to the specific vendor's dll/so which communicates with that device's OpenCL driver.

Am I wrong? If not, does the fact that I don't get the expected behavior means that this host dll/so is missing on my platform? Is there even such a dll/so? If not, can anyone estimate as to when such a functionality be available?