In my DELL E6540 laptop I have a Intel HD4600 and an AMD HD8790M GPU.
Before installing the AMD graphics driver I could use OpenCL with the Intel GPU (but obviously not the AMD GPU) as well as the Intel CPU device.
After installing the AMD graphics driver I can use OpenCL on the Intel CPU device; the AMD GPU device, and the AMD CPU device.
How can I have access to both the Intel GPU and the AMD GPU OpenCL devices?
OS is WIndows 7.1 64 bit.
Intel graphics driver is 10.18.10.3496
AMD graphics driver is 13.350.1005.0 (using Catalyst 14.2 Beta1.3
You have to make sure that the Intel GPU is the primary display and that a display is connected to it.
Never tried on a laptop with dual graphics here so you might actually need to disable the AMD GPU.
Another possibility is to force your code to load the Intel Opencl DLL first explicitely (LoadLibrary in C ) before doing any OpenCL calls.
That fixed some issues for me.
I had tons of problems with the HD4000 and my NVidia cards when trying to use both though so good luck with that ;)
Dis-ableing the HD8790m in the device manager, and then re-installing the intel driver WITHOUT a reset indeed provided Intel GPU OpenCL. However, after a reboot the AMD GPU is automagically re-enabled and Intel OpenCL lost again...
With a laptop I cannot physically connect my screen to the Intel HD graphics -- switching seems software based.
Any suggestion to get such a setup working through reboots?
I would have expected it to work without having to re-install the Intel Driver.
If the switch is software based, is there no UI to force the mode for a given application?
I am not familiar with the AMD driver so I won't be able to help a lot I am afraid.
And from what I saw on the web there doesn't seem to be an option in the BIOS to deactivate the AMD board either.
Have a look at that:
You might be able to set your app to run in Power Saving mode and that might actually give you the Intel GPU :)
You can switch in the UI (as well as through the power profile) the graphics driver. This does switch for OpenGL and CG programs, but seems not to switch OpenCL behavior. I guess the problem is that this switch is not known at boot time, so the system thinks that AMD graphics is available and at that time Intel GPU OpenCL is disabled.
Which intel opencl DLL shall I load? The system is seems capable to intelopencl64.dll, however, that seems to link only to the Intel CPU OpenCL device. Any specific dll to load to get Intel GPU OpenCL to work?
Does it really matter if the switch is for OpenGL?
I guess you could always create a Windows doing some kind of OpenGL drawing and hide it :) It is nasty but it might work.
I can't exactly remember which one I loaded in my code. Do you have one named Intel_OpenCL_ICD64?
I will check tomorrow once I am back in the office.
Also, highly recommend using Windows 8.1 for this to work well. When on Win 8.1, disable AMD card, so that Intel graphics is picked up, then reenable AMD card, so that it shows up second in the list.
I don't know if it will work on your system, but I've found that if you press the "Windows+P" combo and select "Extend" then a headless HD4600 IGP will be recognized in the Kernel Builder for OpenCL application (and presumably other OpenCL applications). You'll probably see an extra cursor in the upper left of your screen in this mode.
If you leave the Kernel Builder app running and select "Windows+P - `Computer Only`" you can still test your OpenCL kernels.
This all works well for me.
My workstation config is Win7/x64 + Core i7-4790 + headless HD4600 + latest .4080 HD Graphics driver + various discrete GPUs.