NVIDIA + ATI hardware in the same Computer


I have an NVIDIA 8600GT and two ATI 4870x2’s in the same computer, and I have had some huge issues trying to get OpenCL to work correctly. I am running Windows 7 x64 HP with all of the updated drivers, but had to completely uninstall all of the NVIDIA software, as well as disable to hardware in the Device manager just to be able to run some sample applications.

Now, I know that the ATI hardware is much more powerful than the NVIDIA hardware that I own, but I am very interested in running all cards simultaneously. Has anyone else tried this? Does anyone have a working solution, or even a guess?

From what I was told, the NVIDIA software is not playing well with the ATI stuff. I am wondering maybe I can install the drivers/SDK’s all in the same folder on the Windows partition, or something similar to make sure that everything is at the same access level, but I have no real understanding on why I am having this problem.

I look forward to the wisdom of the members that may know more!

Thank you!


Has anyone else at least run into the same issue? I put the 8600GT into this box so the PhysX games could use it, and Dragon Age had no problems using both manufacturers simultaeously. I guess that I am simply baffled at there being a new “standard” that has cross manufacturer conflicts of this magnitude.

PS: It worked in XP, didnt work in Vista, and worked again in Win7.

I would even appreciate being directed to another place to ask this question!

Thank you!

I do use a mixed configuration :
GeForce 9600 GT GX2
GeForce 9600 GT
ATI Radeon 4530
CPU i7 (Quad)
Windows 7 x64 Ultimate with 6GB Ram.

My Problem is, that I do only see 2 Devices. Ever.
At begin with ATI compile (ATI libs) the ATI card and CPU.
later only the both chips of the GeForce GX2 card
with activate the GT card (with another monitor) the GT and one chip of the GX2.

The cl code runs smooth on NVidia cards (when only useing up to 4 cores, with more I get a -5 out of resources)
Couldn’t test on ATI card.

How do I get all OpenCL devices listend ?

Currently, I have the 1x ATI Radeon 5870, 1x GTX 260, 1x NVIDIA C1060. My OpenCL code can see all 3 GPU devices as well as the 8 Nehalem CPU cores.

This is what I had to do to get it working with ATI Stream and NVIDIA:

  1. Install NVIDIA Drivers. This will make an OpenCL.DLL in Windows\System32 and Windows\SysWOW64.
  2. Install Latest ATI Drivers (the 9.12 hotfix)
    ** RENAME OpenCL.DLL in Windows\System32 and Windows\SysWOW64 to something else – OpenCL_nv.DLL for example (requires administrator priviledges) **
  3. Install the ATI Stream SDK 2.0.1 (the one from the 2.0.0 “ICD” didn’t work with NVIDIA for me, and it didn’t install into the System folder)

Look at your OpenCL.DLL files in Windows\System32 and Windows\SysWOW64. They should be version, and they should be relatively recent. At this point you should be able to enumerate the platforms and devices. Make sure that you have downloaded the latest OpenCL header files (especially cl_platform.h – CL_API_CALL should be _stdcall).

Also note (as someone else said): XP and Windows 7 support multiple video cards from different vendors, and Vista does not. Linux drivers support running OpenCL apps remotely (with caveats). The windows desktop forwarding/graphics driver model requires that you use VNC instead of RDP to run apps remotely with OpenCL support.

OpenCL is still in its infancy, and getting the ICD installed and working will likely get better over time as all the GPU and CPU vendors making OpenCL implementations converge. It’s a slow process. For a while, before the ICD was available and working, I loaded both ATI and NVIDIA OpenCL.DLLs manually via LoadLibrary and called them individually. You can certainly run multiple GPUs side by side. Be careful though - the multiple implementations of OpenCL have different bugs, and can break in different ways. The OpenCL APIs aren’t set up to automagically distribute your code across different vendors GPUs - that’s an exercise left to the reader. :^) I had some issues with x64 on ATI and some crashing issues with compiling some broken kernels. Also, these APIs and implementations are moving targets. It seems like whenever I pull down new drivers or new SDK versions, changes break my existing code that worked around some flaw in the previous version.

Good luck!

Thank you very much. This seem to solve most of my problem. Seem to be the OpenCL Dll of nv, which doesn’t let the ATI stuff working. Still one device is missing. But this is an NVidia device.
I do see two platforms, the NVidia shows me two devices, where it should be 3 (only 1x GX2, should be 2 times and the GT card).
The AMD Platform does show me the ATI card and the CPU’s (all in one device).

Do you know, how I could exclude an card (The NVidia 9600GT) ? I need one card for the display, and this card should not be shown on the device list. I could sort it out by Hand later, but then I have no access to both GX2 devices.

kind regards,



I will try as you say, and I will report my progress. I am guessing that it is best to uninstall all of the drivers first when following your instructions? I do have the slight issue with the fact that I had to revert to the ATI SDK 2.0 because 2.0.1 was not working with my RV770 chip(s).

I will try it with the 2.0.1 first, since maybe installing the way that you explained will fix my issues. Also, I have 9.12 hotfix ATI drivers, but I have been running the 10.2 since it came out…

I will report back with how it turns out.

Once again, THANK YOU!

I think the latest NVIDIA driver (196.75) is compatible with ATI Stream SDK 2.0.1 now. I’m using ATI’s 10.2 driver with ATI Stream SDK for my Radeon 5850, and NVIDIA’s 196.75 driver for my GeForce GTX 285, and a normally compiled OpenCL program (using either ATI Stream SDK 2.0.1 or NVIDIA’s GPU Computing SDK 3.0 beta) can see both devices (plus the CPU device provided in ATI’s SDK). My OS is Windows 7 x64.


So, I did as MBF advised, and here are my results.

After installing the nVidia 196.75 drivers, I changed the OpenCL.dll in sys32 and sys64 directories to OpenCL_nv.dll. I then installed ATI Catalyst 10.2 drivers and both monitors began working flawlessly. I then installed ATI Stream SDK 2.0.1, and checked the sys32/64 folders, and this SDK installed new OpenCL.dll files.

Now, when I run the raytracing app SLG 1.4 (http://www.luxrender.net/forum/viewtopi … =34&t=3546), it would ONLY recognize the CPU and the nVidia 8600GT (but it worked). I then disabled the 8600GT in the Device Manager, and ran the app again, and it then gave me an error, so it would NOT run the ATI cards (I have read elsewhere that 2.0.1 has issues with the RV770 chip).

I then uninstalled the ATI Stream SDK 2.0.1 and installed 2.0.0, and when I ran the app, it worked fine, and found all 4 RV770 cores. I proceeded to re-enable the 8600GT, and the app will still run fine, but will not recognize the 8600GT as a usable OpenCL device, although it will if I run 2.0.1.

Am I just stuck until 2.0.2 is releases? Is there anything else that I can try?

Thanks again for all of your help!

PS: I noticed in the sys32/64 folders that when ATI SDK 2.0.1 is installed, it includes new OpenCL.dll files, but when I uninstalled that version and installed 2.0.0, they are no longer there. I am thinking of reinstalling 2.0.1 just to get copies of them, and then put them back in after reverting to 2.0.0.

PSS: I dont understand what MBF is saying by including the OpenCL header files. How can I check if I have them, and if not, where do I put them!



I have used cat 10.2 with AMD Stream SDK 2.0.1 with my Radeon HD 4850 and it works, so I think it should also work in your case.

I suggest that you install cat 10.2 first, then AMD Stream SDK 2.0.1, and NVIDIA’s latest driver (197.13) last. The OpenCL.dll file in the latest NVIDIA driver (both 197.13 and 196.75, but 196.75 has fan related bugs) is compatible with AMD Stream SDK 2.0.1, but I’m not sure whether AMD Stream SDK’s OpenCL.dll is compatible with NVIDIA’s latest driver, so I recommend using NVIDIA’s files.

Make sure you have atiocl.dll and atiocl64.dll (provided in the AMD Stream SDK) in the search path. The installer should take care of that though.