• there is a CUDA toolkit (aka SDK), a CUDA driver, and a CUDA Architecture
  • all have a “version”
  • a CUDA driver is the low level binary module that drives the GPU. A CUDA driver is capeable of telling the GPU to execute CUDA kernels.
  • a cuda driver is backwards compatible (a newer driver will be able to run all the applications an older driver is able to run, plus more)
  • you obviously use the CUDA toolkit (SDK) to develop your application
  • when you “build” your application, you specify a version of the CUDA architecture you wanna target
  • different graphic cards support a different version of the CUDA architecture. Newer graphic cards tend to support newer architecture versions.
  • a newer architecture can run applications that were built for an older architecture (i.e. architectures are backward compatible)
  • but if you target a certain architecture when you are building, only GPUs that support that architecture version (or later) will be able to run your application. So in other words, when you build for a certain architecture version, you are specifying a minimum version.

This whole article is just a summary lol