Error with cudaDeviceBlockingSync

I’ve added the following line to the start of my program to keep CUDA from spin looping:

status = cudaSetDeviceFlags(cudaDeviceBlockingSync);

The addition of this line causes the first call to cudaMalloc() to fail with the error message, “no CUDA-capable device is available”. If I replace cudaDeviceBlockingSync with any other value (cudaDeviceScheduleSpin, cudaDeviceScheduleYield, etc.) it works fine. It’s only cudaDeviceBlockingSync that produces the error. Any idea what the problem could be?

I’m using CUDA 2.2 on Fedora 9 with a GTX280.


Anyone? Is this feature just not supported on Linux?


I tried to repro this and couldn’t. What driver are you using? Also, does this repro with 2.3 and 190.whatever?

The driver is 185.18.08-beta. I’ll try updating to the most recent 2.2 driver and see if that fixes it. I don’t want to move to 2.3 yet, since some of my users will be on 2.2 for a while.


Upgrading to 185.18.14 made the problem go away. Thanks!


185.18.08 is extremely buggy in my experience.

I have used cudaDeviceBlockingSync successfully with 185.18.14 on linux.