Compatibility between cuda toolkit versions and driver versions?


I have an application that uses the driver API with an internal version of the cuda header, taken from the 4.0 toolkit. When compiling the device code using nvcc from toolkit 4.2 everything works as it should, but if I use toolkit 5.0 the first kernel launch fails if I use driver 301.42 or older. With a newer driver it works regardless of which toolkit I compile with.

Notably, my kernel uses surf3Dread to fetch data from a surface reference bound to an array. When I comment out the surf3Dread call in my kernel it works again.

Am I doing nasty, forbidden stuff here, or is this a bug in the toolkit? More specifically, should it be possible (and is it supported) to compile driver API applications targeting an old driver version with a newer CUDA toolkit?

I think they only guarantee that that code compiled with older CUDA toolkits will work with future drivers, but not newer toolkits and older drivers.

Thanks. I guess there’s no way to support older driver versions while still maintaining compatibility with the latest cards then. Is there a better way than reading the release notes to know which driver versions support a particular cuda version?