cuInit returns CUDA_ERROR_UNKNOWN

This is with the latest CUDA 9.2 toolkit and bundled driver (397.44) on a Quadro K2100M and Windows 8.1 OS. I’m using Visual Studio 2013 and the CUDA samples (as well as my own code) all fail on cuInit returning CUDA_ERROR_UNKNOWN.

Any suggestions? Googling for answers on this just leads to many linux and tensorflow results…

Sounds like an install problem.

If you have an optimus laptop (you do, most likely) you may need to check your BIOS settings to make sure the dGPU is actually enabled/selectable. Can you see it in device manager? Try running one of the sample codes with an optimus application profile that forces the app to run on the dGPU. Rather than say “how do I do that?” you might try googling for some of this stuff first.

It’s also possible that you have CUDA_VISIBLE_DEVICES="" variable set, and/or that you have disabled compute activity on this GPU in the windows control panel

Most of the CUDA sample codes are written using the CUDA runtime API, so they don’t call cuInit directly. Are you trying a sample code like deviceQuery or bandwidthTest ?

OK, those are good things to check.

I don’t have an optimus laptop; I have a Dell M4800 which has the Intel GPU permanently switched off (something about the controller for the high-res screen…) I had already looked through the Nvidia control panel and everything looks OK (CUDA GPU is set to all; tried changing it to the K2100m - no change in behavior; tried making an application profile - no change in behavior.)

Doesn’t appear to be set.

Which control panel are you referring to?

You’re something of a mind reader…! But unfortunately, deviceQuery and deviceQueryDrv both fail.

I’m about to try the 397.93 Quadro Notebook driver (I have 397.44 currently) and see if that changes anything.

397.93 didn’t work either. I tried doing a clean install of 9.2 after removing all Nvidia components, but that didn’t help either - cuInit still fails…

So I did another round of cleaning out Nvidia components and installed CUDA 8.0 - it appears to work! (At least cuInit succeeds!)

So go figure…