Version of CUDA used? Depends on API, or driver version?


Is anyone from nVidia able to elaborate on when a specific version of CUDA will be used…

I’m developing a CUDA related application at the moment using CUDA 2.1 & the Driver API… however if I deploy this application on a machine with older graphics drivers (say, 17X.X drivers) - would it fall back to CUDA 2.0, or would it fail to run completely?

We’re close to demoing our tech to other people (including nVidia), and the last thing I want is for people to try and run this application - only for it to blow up in their face because they have ‘slightly’ out of date drivers.

Thanks in advance,

P.S. I’ll post back my own confirmations when I get the time to test this myself (though it won’t be for a few days).

I use CUDA 2.0 machine for development and CUDA 2.1 for testing. I did not find any problems! This was in 32-bit XP. I just copy out my EXE and execute it. Thats all.

My 3 cents for deployment (although you may pretty well be aware):

  1. Make sure you ship your VC++ libraries along with your application so that it can run in variety of machines (even ones that dont have VC++, ones that have different version of VC++)
    Check out re-dist rules from microsoft. MSDN would be of help.

  2. Ship other dependent libraries as well for safety.

  3. If you are on 32-bit XP and wanna run on 64-bit – Just Ship your 32-bit “cudart.dll” along with your app. It will just work fine on XP 64-bit except for the fact that there was a bug in cudaMalloc() that was preventing more than 15 launches of any app. Hope that one is fixed in CUDA 2.1

If you’re not using 2.1 features (such as quering if watchdog timer is active or PTX JIT) then yor code will run on CUDA 2.0 driver without a problem.

I am fairly sure that what AndreiB said is correct regarding the driver API, but I’m not sure how the runtime behaves with old drivers. Let me double check tomorrow (just for the sake of completeness).

In my experience, running a runtime API app compiled with CUDA 2.1 on a machine with CUDA 2.0 (or older) drivers results in lots of “invalid texture reference format” and/or “feature not yet supported” errors. I’ve never used the driver API, so I cannot comment on that.

Any update on this?


Driver API: if you use new version of CUDA (2.1) and run on old driver (one of the 178 drivers, for example), it should work unless you use one of the new features.

Runtime API: as of 2.1 (maybe 2.0 as well, I haven’t checked), there’s a check to make sure you don’t use a new version of CUDA and CUDART with an old driver.