It all comes to backward compatibility and dependencies. If all versions of NVidia software (CUDA and ForceWare) were backward compatible, it wouldn’t be an issue. If we state that they can’t be (for whatever valid reasons), there must be a way to clearly communicate it to the developers through the documentation. This is the reason why I suggested some sort of a matrix to do it.
Unfortunately there is wealth of information at the various sites of NVidia enthusiasts (with all sorts of disclaimers) and Nvidia users’ forums. Authenticity of such information is always in question unless it comes directly from NVidia.
Let me give you a few concrete examples.
Example 1. Software compatibility.
We could use CUDA 1.0 and CUDA 1.1 to develop our application to run on GeForce 8800 GTX, but we couldn’t use Visual Studio 2008 at the time.
Is it true that if we were to move to the newly arrived CUDA 2.1 now, then we won’t be able to build the same application with CUDA 2.1 in order to still run it on 8800 GTX?
I understand that 8800 GTX cards lack the advanced compute capabilities (above 1.0), but it would be nice to be able to install CUDA 2.1 for the development and use this CUDA for whatever capabilities 8800 GTX do have. Is it possible? My understanding is that it is NOT possible. If it is so, than it is not very helpful to say that “all GPUs since the GeForce 8800 (G80) have CUDA support”. Stating all other constraints and limitations on either GPGPU (board) selection or the supported development environment is critical.
Example 2. Hardware compatibility.
We could use FX5200 and 8800 GT while using CUDA 1.1 with ForceWare 175.19.
If we were to move to CUDA 2.0, then we have to move to a newer version of ForceWare (compatible with CUDA 2.0).
Let’s say it is 178.24.
The problem is that this newer ForceWare driver doesn’t support FX5200 any longer.
In fact, I believe that support of ForceWare for all 5-series boards was completely abandoned.
Unfortunately the developers usually don’t know about it until they run into a compatibility problem.
I am sorry for the long message. I am trying to help everybody (me included )