cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

sschuberth
Adept I

Crash when removing AMD GPU from system

Hi,

I'm currently doing a lot of OpenCL benachmarking. I have a PC with an AMD CPU and an AMD GPU running under Vista x64. Both the APP / Stream SDK 2.3 and the regular Catalyst 11.1 driver are installed. That configuration works fine, I'm seeing both CPU and GPU devices.

However, if I remove the AMD GPU (without uninstalling the Catalyst driver, as I'm going to plug-in the AMD GPU again soon) in order to replace it with an NVIDIA GPU, the call to clGetPlatformIDs() crashes. Uninstalling the Catayst driver or manually renaming the AMD OpenCL ICD entries in the registry works around the crash (although the latter also removes the CPU device, obviously).

It seems that a check for the presence of an AMD GPU is missing, and the OpenCL ICD assumes that just because the Catalyst driver files are there, it can use an AMD GPU. Having to uninstall / reinstall the Catalyst drivers really is very inconvenient if you do a lot of GPU swapping for benchmarking. Any chance to get this fixed?

Thanks!

0 Likes
13 Replies

Thanks for reporting this issue, we will look into it.
0 Likes
erwincoumans
Journeyman III

 

I've reported the same issue in the Khronos OpenCL working group half a year ago, with NVIDIA and AMD engineers looking into it, but it never got fixed.

You can workaround the problem by editing the registry, remove the ATI components (ati*.dll) when running NVIDIA GPUs.

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Khronos\OpenCL\Vendors 
HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors

Save the registry key to revert back when using AMD GPUs.

 

0 Likes

Originally posted by: erwincoumans

You can workaround the problem by editing the registry, remove the ATI components (ati*.dll) when running NVIDIA GPUs.



Thanks, that's what I mean when I was saying "renaming the AMD OpenCL ICD entries in the registry" 😉

0 Likes

does this mean that it's impossible to use 1 AMD CPU + 1 NV GPU (noting else)?. As of now, I'm able to run 1 AMD CPU + 1 AMD GPU (1 platform) or 1 AMD CPU + 1 AMD GPU + 1 NV GPU (2 platforms), but removing the AMD GPU I have that only one platform is detected (the NV one) instead of 2.

0 Likes

No, it's no impossible, I've successfully done it. You just have to make sure that you uninstall / clean the ATI graphics drivers from system, but keep the ATI Stream SDK / AMD APP SDK.

0 Likes

with the AMD CPU and the NV GPU i had the NV SDK and NV display drivers (i had removed all AMD software). Only one platform was detected (NV's). Then I installed the AMD SDK but it was still detecting only one platform (NV's). I then uninstalled both SDK and reinstalled AMD's one. Again, only one platform, but to my surprise it was the NV's (GPU)! Maybe i need to uninstall the NV display driver before installing the SDKs (?) Maybe i need reboot the system? (i can't test the rebooting now)

0 Likes

Well, all I can say is that it worked for me without uninstalling the NV drivers. I can't recall for sure whether a reboot was necessary.

Have you double-checked you're not limiting your device enumeration to GPUs?

0 Likes

maybe I need a reboot then. As for the limit on devices, i don't even come to check devices, as there only the NV platform.

there's a funny thing, though. When connecting to my pc from outside using Windows Remote Desktop, i see only one platform, the AMD one with CPU device! I was expecting to see none since i had no AMD platform and NV platform has GPU only device (and RDP does not support opencl on gpu)!

0 Likes

I encountered this same issue, but it's fixed with a newer driver.  Should be resolved in an upcoming Catalyst release.

Sorry you encountered the same headache.

Jeff

0 Likes

Originally posted by: sschuberth Well, all I can say is that it worked for me without uninstalling the NV drivers. I can't recall for sure whether a reboot was necessary.

 

Have you double-checked you're not limiting your device enumeration to GPUs?

 

i give up! rebooting or not, it does not work! I've uninstalled everything (SKDs and display drivers) and installed piece by piece in any possible order. When installing the AMD SDK only, the AMD platform is recognized with CPU device. After this, installing the NV display driver (with or without NV SDK), makes the clGetPlatformIDs call crash. Renaming the ati*.dll in the register will allow me using the NV platform (GPU only) but not the AMD's (as u said above). The GPU is not in the 1st PCI-E slot, but i'm not sure it would change anything if I install it in the first slot... If you have any other idea, please share... (win7 x64)

0 Likes

Did you have the ATI Catalyst driver installed?  If so, then it sounds like you are hitting the issue referenced above.  You can either uninstall the ATI driver (a pain if you change cards a lot) or rename the module that is crashing, then restore the name before you swap cards again.  For me, it was sufficient to rename atigktxx.dll to atigktxx_.dll, I believe.

Jeff

0 Likes

hi jeff, well, no, i don't have the Catalyst installed, the AMD card is not pluged-in. It is a pain, yes, for the install/reboot/uninstall/reboot, plug-in, take out, etc.... as the OP i do also do benches, its really helpfull to run the kernels on both architectures, you improve lot of things that are not viseable in one or in the other card. real pain, yes it is! hope in the future things will get more homogenous, without needing all these extra manipulations (well, the end user will not care about it, but the dev guy will, oh yes, he will...)

0 Likes

@jeff: what does the atigktxx.dll ? Why have you renamed it? And where? In the C:\Windows\SysWOW64 folder?

0 Likes