Are there any known or frequent reasons for getting an Unknown Error (30) from cudaMalloc?

Here is why I ask: I have a GUI/OpenGL/CUDA application that has been running for ~2 years on WinXP 64 using CUDA 2.1 I have just upgraded it to CUDA 3.2 and it still runs fine on my XP64 workstation. It is built as a 32 bit application. There are two GPUs and two corresponding threads.

However when I install it on a Win7 Pro x64 workstation, the first cudaMalloc dies with an Unknown Error (30). I’ve dumped lots of information leading up to the cudaMalloc and everything seems to be correct as compared to my XP64 workstation. Both threads get the same error at the same spot. The only other CUDA calls before the cudaMalloc are to set the device andget available memory. a cudaGetLastError immediately before the cudaMalloc returns ‘success’.

I have also run a simple command line app I have that dumps available GPU memory and then does a cudaMalloc and cudaFree of 100 bytes and that works fine on the Win7 machine.

So the obvious differences are:

  1. OS (XP 64 vs Win7 64)
  2. GPU (Quadro FX3800/4800 vs Quadro 4000(2))

I realize that by its definition Unknown Error generally can’t be more specific, but if anyone knows any general or recurring reasons that it occurs that would be helpful.

I once had a problem where the first call to the CUDA Runtime would always fail with an unknown error, regardless of what I called.

Reinstalling the driver and the toolkit fixed it.

Thanks for the suggestion. That was not my case (my installer on the Win7 machine reinstalled the dlls each time and I had tried several version of driver).

I just discovered the problem was that my installer was including the OpenGL32.dll from the XP workstation. It works when I let it use the OpenGL32.dll that is already on the Win7 machine.